通信算法之307:fpga之时序图绘制

时序图绘制软件

一. 序言

在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 功能互补,可满足不同场景下的波形图绘制需求。

原文链接:https://blog.csdn.net/qq_42224089/article/details/138061567

相关推荐
神龙天舞20019 小时前
CMake构建学习笔记-通用的CMake构建脚本
笔记·学习
AOwhisky10 小时前
Linux(CentOS)系统管理入门笔记(第二十一期)——防火墙管理(Firewalld)——zone、服务端口、富规则与端口转发
linux·运维·笔记·安全·centos·防火墙
腾飞开源10 小时前
01_K8s干货笔记之认识K8s
运维·笔记·云原生·容器·kubernetes·k8s·容器化部署
疯狂打码的少年11 小时前
【面向对象】UML结构图:类图(类的关系:依赖/关联/聚合/组合/泛化/实现)
笔记
aaaameliaaa16 小时前
字符函数和字符串函数
c语言·笔记·算法
tq108617 小时前
开放与封闭:类型系统的安全哲学
笔记
龙仔72518 小时前
人大金仓 KingbaseES V8 只读账号创建完整运维笔记
运维·笔记·sql·人大金仓
韭菜炒鸡肝天18 小时前
VTK开发笔记(一):VTK介绍,Qt..+VSx+VTK.编译
开发语言·笔记·qt
峥无21 小时前
C++11 深度详解:现代 C++ 基石全梳理
开发语言·c++·笔记
阿米亚波21 小时前
【C++ STL】std::unordered_multimap
开发语言·数据结构·c++·笔记·stl