本帖最后由 KA_IX 于 2022-2-15 11:47 编辑

WaveDrom是一个免费开源的在线数字时序图渲染引擎。它可以使用JavaScript, HTML5和SVG来将时序图的WaveJSON描述转成SVG矢量图形,从而进行显示。WaveDrom可以嵌入到任何网页中。WaveDrom编辑器可在浏览器中运行,也可以安装在系统上,渲染引擎可以嵌入到任何网页中。

一、WaveDrom功能

绘制数字时序图、绘制寄存器图、绘制逻辑电路图
7bf4ff3709fd4015ac9c734b3014f8b2?from=pc.jpg
绘制时序图
f6a9b1459b6a4a03bd77d692fec5d37e?from=pc.jpg
绘制寄存器图
24e2139720034267b7484e3483d2bd74?from=pc.jpg
绘制逻辑电路图

二、WaveDrom的使用

  • 在线编辑器 https://wavedrom.com/editor.html
  • 官网 https://wavedrom.com/
WaveDrom可以在线编辑也可以下载安装,可以在官网首页找到这两个入口。在线编辑方式,版本较新,但需要联网。下载安装方式,版本较官网旧一些,无需联网即可使用。
e3f4efade4884d3a95087a2e65bbdd8f?from=pc.jpg
在编辑器中输入WaveJSON 格式的数字时序图描述,即可实时渲染出相应的数字时序图。aveJSON 格式是十分简单的,主要需要记忆的是各个符号所对应的波形。
b63abdcdfb2647acaeaf966e21b8fd51?from=pc.jpg

三、绘制时序图
d4ba4adf234c4afe84c18d26a641ae73?from=pc.jpg
下面的代码将创建名为“Alfa”的1位信号,该信号随时间改变其状态。
  1. { "signal" : [{ "name": "Alfa", "wave": "01.zx=ud.23.456789" }] }
“wave”字符串中的每个字符都代表一个时间段。符号“将以前的状态再延长一段时间。下面是它的外观:
1e7a7ab4146443b1ae1816b0f6949ac3?from=pc.jpg
7d047c731151462f8c8b7a1062cd5f5a?from=pc.jpg
加时钟:数字时钟是一种特殊类型的信号。它在每个时间段内变化两次,可以有正负极性。它还可以在工作边缘上有一个可选标记。时钟块可以与其他信号状态混合,以产生时钟选通效应。代码如下:
  1. { signal: [
  2.   { name: "pclk", wave: 'p.......' },
  3.   { name: "Pclk", wave: 'P.......' },
  4.   { name: "nclk", wave: 'n.......' },
  5.   { name: "Nclk", wave: 'N.......' },
  6.   {},
  7.   { name: 'clk0', wave: 'phnlPHNL' },
  8.   { name: 'clk1', wave: 'xhlhLHl.' },
  9.   { name: 'clk2', wave: 'hpHplnLn' },
  10.   { name: 'clk3', wave: 'nhNhplPl' },
  11.   { name: 'clk4', wave: 'xlh.L.Hx' },
  12. ]}
以及呈现的图表:
e817caffd961407db7e4be3897ae49a9?from=pc.jpg
WaveLanes 可以统一在以数组形式表示的命名组中。['组名', {...}, {...}, ...]数组的第一个条目是组的名称,这些组可以嵌套。
  1. {signal: [
  2.   {    name: 'clk',   wave: 'p..Pp..P'},
  3.   ['Master',
  4.     ['ctrl',
  5.       {name: 'write', wave: '01.0....'},
  6.       {name: 'read',  wave: '0...1..0'}
  7.     ],
  8.     {  name: 'addr',  wave: 'x3.x4..x', data: 'A1 A2'},
  9.     {  name: 'wdata', wave: 'x3.x....', data: 'D1'   },
  10.   ],
  11.   {},
  12.   ['Slave',
  13.     ['ctrl',
  14.       {name: 'ack',   wave: 'x01x0.1x'},
  15.     ],
  16.     {  name: 'rdata', wave: 'x.....4x', data: 'Q2'},
  17.   ]
  18. ]}
14ad77b4e91a419199164598113e7901?from=pc.jpg

四、时序图教程
网址:
https://wavedrom.com/tutorial.html
4746ef4f5d0b4260aaf2b348cf1f76a2?from=pc.jpg
里面包含多个示例,可以很好地对WaveDrom进行学习。
57370916e5874a3fb0b04d6ff059ff3f?from=pc.jpg

五、逻辑电路图教程
网址:
https://wavedrom.com/tutorial2.html
69fb67efbb044dbe88c4b768148a6ec7?from=pc.jpg
里面讲解了逻辑电路图的绘制示例。
f9cd85b3c0654787a87959cb6e4c159b?from=pc.jpg

六、Github主页
WaveDrom Github https://github.com/wavedrom/wavedrom 58290aa2404c46f89dc80d7a4634dc90?from=pc.jpg

七、VScode中使用Waveform
在VScode应用商店中搜索Waveform Render,这个就相当于WaveDrom
010e005d53bb4f93b69d00afa41a13d2?from=pc.jpg
左边键入代码,右边会自动生成时序图,非常好用:
f093d8c8118f4d25889f256b6f2b39ed?from=pc.jpg
—— The End ——


公众号名称:果果小师弟