FPGA设计篇——波形绘制软件

FPGA设计篇——波形绘制软件

  • 写在前面
  • 一、Visio
  • 二、TimeGen
  • 三、WaveDrom
  • 写在最后

写在前面

  在FPGA设计过程中,经常需要编写设计文档,其中,不可缺少的就是仿真波形的绘制,可以直接截取Vivado或者Modelsim平台实际仿真波形,但是往往由于信号杂乱无法凸显重点。因此,通过相应软件绘制波形,并予以标注,会更加直观。目前,常用的波形绘制软件有:Visio、TimeGen、WaveDrom等,本文主要介绍这三款软件波形图的绘制。

一、Visio

  Visio软件用于波形绘制相较于后两者绘图可以达到一样的效果,但是在波形绘制过程中要做到信号名、信号波形边沿对齐等是比较繁琐的,而且需要搭配相应的图形包绘制起来才会更便捷(Visio常用波形图形包)。Visio绘制的时序波形如下图所示。

在这里插入图片描述

二、TimeGen

  TimeGen软件的界面如下图所示。
在这里插入图片描述
  该界面下的按键功能说明如下:

  • 添加时钟信号:用于添加理想时钟该信号。选中该信号右键选择Edit Attributes可以设置信号名、信号名字体、信号名字号颜色、上升沿触发(Rising Edge )还是下降沿触发(Falling Edge)、时钟信号占空比(Clock Duty)以及该时钟信号的时钟宽度是默认时钟宽度的几倍(Clock)等;
  • 添加电平信号: 用于添加位宽为1的电平信号。与时钟信号一致,选中该信号右键选择Edit Attributes可以设置各个参数;
  • 添加多比特信号:用于添加位宽为多比特的信号;
  • 添加空信号:在选中信号的上一行添加一个空信号(即占一个信号的高度);
  • ASCII波形输出:用于输出整个时序波形的ASCII表示,可以直接复制粘贴到word文档中;
  • 删除一个时钟周期:删除选中波形图中所有信号的最后一个时钟周期;
  • 增加一个时钟周期:在最后一个时钟周期后面添加一个时钟周期;
  • 增加时钟周期宽度:增加每个时钟周期的宽度;
  • 减小时钟周期宽度:减小每个时钟周期的宽度;
  • 增加信号高度:增加每个信号的高度;
  • 减小信号高度:减小每个信号的高度;
  • 减小信号之间间距:减小信号与信号之间的间距;
  • 增加信号之间间距:增加信号与信号之间的间距;
  • 选中信号:选中某个信号或者选中某个信号的某个时钟周期内的值;
  • 转为高/低电平:将信号当前时钟周期的值转为高/低电平(选中后向上/向下拉)
  • 转为高阻态Z:将信号当前时钟周期的值转为高阻态Z;
  • 多位宽信号变化:用于设置多比特信号在上升沿或者下降沿处发生改变;
  • 在某个时钟周期内添加数值:对信号某个时钟周期内的数值进行标注;
  • 标注建立/保持时间:标注建立时间/保持时间(两种不同的标注形式,一种是双向箭头,一种是两个单向箭头);
  • 添加信号箭头标注:在不同信号的不同时钟之间添加箭头标注;
  • 省略符:添加省略符,用于表示信号一段时间内保持该值;
  • 填充颜色:填充颜色,右击可切换填充色;
  • 清除填充颜色:清除填充颜色;

  TimeGen绘制的时序波形如下图所示。

在这里插入图片描述

三、WaveDrom

  WaveDrom是一种基于js的时序图工具,与前两者相比,没有便捷的工具栏直接绘制波形图,通过js语言进行绘制,绘制的波形图也较为美观。其基本语法如下:

{signal: [
  // 信号1
  {name: '信号名1', wave: '波形'},
  // 信号2
  {name: '信号名2', wave: '波形'},
  // 信号...
],
  "config" : { "hscale" : 信号宽度 }
}

  这里波形绘制主要有两个主要参数:信号名与波形。这里波形的控制常用语法如下表所示:

符号功能
.将先前的状态再延迟一个时钟周期
p以上升沿开始的一个时钟周期
P以上升沿开始的一个时钟周期(上升沿带箭头)
n以下降沿开始的一个时钟周期
N以下降沿开始的一个时钟周期(下降沿带箭头)
x不定态波形
z高阻态波形
u虚线高阻态波形
d虚线低电平
l理想波形的低电平
h理想波形的高电平
L理想波形的低电平(在变为低电平处带箭头)
H理想波形的高电平(在变为高电平处带箭头)
0理想波形的低电平
1理想波形的高电平
2多比特数据(背景白色)
3多比特数据(背景黄色)
4多比特数据(背景橙色)
5多比特数据(背景蓝色)
6多比特数据(背景天青色)
7多比特数据(背景绿色)
8多比特数据(背景紫色)
9多比特数据(背景粉色)
=多比特数据(背景白色),与“2”功能一致
∣ | 省略符

  WaveDrom软件绘制的时序波形如下图所示。

{signal: [
  {name: 'clk', wave: 'P.......'},
  {name: 'a' , wave:'010...10'},
  {name: 'b' , wave:'0.1...0.'},
  {name: 'c' , wave:'01.0....'},

],
  "config" : { "hscale" : 1 }
}

在这里插入图片描述

写在最后

  在本文中,我们学习了Visio、TimeGen、WaveDrom三种可以用于绘制时序波形图的软件的基本用法,三种软件各有长处,可根据自己喜欢的绘图风格学习其一,个人比较推荐WaveDrom。
  本文到此结束,欢迎评论区交流探讨。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/573124.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JVM学习笔记(四)类加载与字节码技术

目录 一、类文件结构 二、字节码指令 2.3 图解方法执行流程 1)原始 java 代码 2)编译后的字节码文件 3)常量池载入运行时常量池 4)方法字节码载入方法区 5)main 线程开始运行,分配栈帧内存 6&…

分布式-知识体系

分布式系统 本质就是一堆机器的协同,要做的就是用各种手段来让机器的运行达到预期 分布式业务场景 分布式四纵四横说 基于 MSA(微服务架构)的分布式知识体系 相关概念 – 【摘自网络原文】 节点与网络 节点 传统的节点也就是一台单体的物…

搞嵌入式到底属于程序员吗?

搞嵌入式到底属不属于程序员呢?毫无疑问,当然算啊!而且我十分赞同另一位朋友所说的:嵌入式程序员是难得的全栈型程序员。尽管嵌入式领域方向众多且繁杂,但他们同样也是会写代码的程序员。 嵌入式行业主要分为硬件和软…

《从零开始的Java世界》11网络编程

《从零开始的Java世界》系列主要讲解Javase部分,从最简单的程序设计到面向对象编程,再到异常处理、常用API的使用,最后到注解、反射,涵盖Java基础所需的所有知识点。学习者应该从学会如何使用,到知道其实现原理全方位式…

打开IIS网站网页错误提示Argument ‘Key must not be null‘ cannot be null.解决方案 Oracle数据库监听

打开网页异常如下: /“应用程序中的服务器错误。 Argument Key must not be null cannot be null.参数名:Key must not be null 客户端 连接oracle 提示:ORA-12541:TNS:无监听程序 按组合键WindowsR,打开运行 输入命令:lsnrctl s…

周报不止是汇报进度,如何用周报轻松提升团队协作效率?

周报是工作中常见的沟通工具,对于项目经理来说尤其重要。写周报不仅仅是为了完成一项任务,它更是项目管理中不可或缺的环节,它不仅有助于项目经理跟踪项目进度,还加强了团队成员间的沟通与协作。以下是几个关键的原因:…

Geoserver的RESTful接口使用

概述 GeoServer提供了一个RESTful接口,客户端可以通过该接口获取有关实例的信息并进行配置更改。REST接口使用简单的HTTP调用,通过客户端就可以配置GeoServer,而无需使用Web管理接口。 Geoserver中的关系 工作区、数据源、图层、图层组以及…

用 LMDeploy 高效部署 Llama-3-8B,1.8倍vLLM推理效率

节前,我们星球组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、参加社招和校招面试的同学,针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 汇总…

微信小程序Vue+nodejs+uniapp课堂教学辅助在线学习系统

uni-app框架:使用Vue.js开发跨平台应用的前端框架,编写一套代码,可编译到Android、小程序等平台。 后台主要实现功能:一、用户的管理(用户的信息管理) 二、 课程的管理(课程发布,课后成绩的查看&#xff0c…

【C语言__联合和枚举__复习篇10】

目录 前言 一、联合体 1.1 联合体的概念 1.2 联合体与结构体关于声明和内存布局的比较 1.3 联合体的大小如何计算 1.4 使用联合体的2个示例 二、枚举体 2.2 枚举体的概念 2.2 枚举体的优点 前言 本篇主要讨论以下问题: 1. 联合体是什么,它有什么特点 …

每天一题crypto(1)---RSA(小明文攻击)

零.做题: 看到N很大,如果满足 就表示模过程中,没有丢失信息,所以 直接解即可,不要管pq等等 一.题目: N很大 from Crypto.Util.number import * from gmpy2 import *flag bNSSCTF{******}p getPrime(5…

【SpringBoot整合系列】SpringBoot配置多数据源

目录 背景技术选型配置多数据源思路(以两个为例)代码实现1.导入依赖2.各自的配置 3.各自的dataSourcenews数据库的smbms数据库的注意:Primary注解 4.各自的SqlSessionFactory等news数据库的smbms数据库的 5.去掉启动类头上的MapperScan6.各自的mapper接口7.各自的ma…

防火墙分为哪三类以及他们的优缺点

1. 包过滤防火墙(Packet Filtering Firewall)2. 状态检查防火墙(Stateful Inspection Firewall)3. 应用层防火墙(Application Layer Firewall)零基础入门学习路线视频配套资料&国内外网安书籍、文档网络…

Spring Cloud Alibaba Sentinel 使用

初识Sentinel Sentinel是阿里巴巴开源的一款微服务流量控制组件。官网地址: home | Sentinel 需要了解的概念 簇点链路 在学习 Sentinel 的使用之前,我们有必要首先了解一下簇点链路。当请求进入微服务时,首先会访Controller、Service、Ma…

C++11可变模板参数

我最近开了几个专栏,诚信互三! > |||《算法专栏》::刷题教程来自网站《代码随想录》。||| > |||《C专栏》::记录我学习C的经历,看完你一定会有收获。||| > |||《Linux专栏》&#xff1…

百面算法工程师 | 卷积基础知识——Convolution

目录 8.1 图像卷积过程 8.2 卷积层基本参数 8.3 卷积后图像的长和宽大小的计算方式 8.4 卷积神经网络中的权重共享 8.5 上采样中的反卷积 8.6 空洞卷积 8.7 深度可分离卷积 8.8 为什么可分离卷积中Depthwise卷积后还要进行pointwise卷积 8.9 分组卷积 Group Conv 8.1…

前端导入的方便方法

直接上代码: 利用input的导入功能 这是相应的处理方法 是不是很简单呢

《系统架构设计师教程(第2版)》第10章-软件架构的演化和维护-01-软件架构演化概述

文章目录 1. 演化的重要性2. 架构演化示例 教材中,本节名为:“软件架构演化和定义的关系” 1. 演化的重要性 演化目的:维持软件架构自身的有用性 为什么说,软件架构是演化来的,而不是设计来的? 软件架构的…

【Shell】循环结构——for和while循环实例

Shell可以重复地执行特定的指令,直到特定的条件被满足为止。这重复执行的一组指令就叫做循环 特点: 首先,循环条件中使用的变量必须是已初始化的,然后在循环中开始执行每次在循环开始时进行一次测试重复地执行一个代码块 循环实例…

SD-WAN怎样提高企业网络体验

随着数字化转型的加速,传统基于MPLS的专用网络因其高度的结构化和僵化性,已无法满足现代企业对于灵活性和成本效益的日益增长的需求。相比之下,SD-WAN作为一种创新的网络架构,正以其卓越的性能和灵活的管理方式,成为企…