开始的时候画时序图都是拿 visio 硬连,但是那个线宽太难统一了,丑不拉几的,遂学习 waveform 语法使用代码来画时序图。
开始
Vscode 中安装 waveform render 或者在 GitHub 搜索 wavedrom 安装即可。由于 vscode 是我常用的编辑器,所以选择在 vscode 安装插件的方式来学习使用 waveform。
在 vscode 中创建一个 json 文件,内容
{
"signal":[
{"name":"clk","wave":"p....."},
{"name":"data","wave":"010101"}
]
}
在命令面板中选择如下命令后即可查看渲染结果:
语法
时钟信号
p
表示上升沿开始的方波n
表示下降沿开始的方波l
表示低电平h
表示高电平- 大写会在方波边沿绘制箭头
代码渲染出的时序图为:
数据信号
-
0
和1
-
x
表示未知状态 -
=表示有效数据,也可写成
2~9
,会用不同的颜色显示,并且可用data
变量加上文本标签
-
可以用
|
表示省略一段信号
period
和phase
变量用于调整时序 -
period
的值应该是一个数字 n ,表示横向等比例放大或缩小 -
phase
的值应该是一个数字 n ,表示横向的位置调整,单位是一个时钟周期:- 如果是正数,表示向左移动 n 个时钟周期
- 如果是负数,表示向右移动 n 个时钟周期
多个信号可以用['group name', {...}, {...}, ...]
语法编成一组,而且支持嵌套
时序绘制完毕后,还可以对图片进行修饰。"config": { "hscale": n }
表示将图片横向等比例放大 n 倍。"head":{ }
和"foot":{ }
分别表示在时序图的上方和下方添加一些内容:
-
text
变量应该设置一个字符串,表示添加一行文本 -
tick
变量应该设置一个整数,表示在时钟周期的起点显示序号,从 n 开始 -
tock
变量应该设置一个整数,表示在时钟周期的中点显示序号,从 n 开始