• 注册 / 登录
  • 切换到窄版
  • 查看: 2464|回复: 0

    你真的会画时序图吗?

    [复制链接]

    676

    主题

    690

    帖子

    6808

    积分

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    6808
    发表于 2022-7-5 14:52:25 | 显示全部楼层 |阅读模式

    路线栈欢迎您!

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    摘要:

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

    一、WaveDrom功能

    绘制数字时序图、绘制寄存器图、绘制逻辑电路图

    1.jpg
    绘制时序图

    2.jpg
    绘制寄存器图

    3.jpg
    绘制逻辑电路图

    二、WaveDrom的使用

    在线编辑器 https://wavedrom.com/editor.html
    官网 https://wavedrom.com/
    WaveDrom可以在线编辑也可以下载安装,可以在官网首页找到这两个入口。在线编辑方式,版本较新,但需要联网。下载安装方式,版本较官网旧一些,无需联网即可使用。

    4.jpg

    在编辑器中输入WaveJSON 格式的数字时序图描述,即可实时渲染出相应的数字时序图。aveJSON 格式是十分简单的,主要需要记忆的是各个符号所对应的波形。

    5.jpg

    三、绘制时序图

    6.jpg

    下面的代码将创建名为“Alfa”的1位信号,该信号随时间改变其状态。
    1. { "signal" : [{ "name": "Alfa", "wave": "01.zx=ud.23.456789" }] }
    复制代码

    “wave”字符串中的每个字符都代表一个时间段。符号“将以前的状态再延长一段时间。下面是它的外观:

    7.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. ]}
    复制代码

    以及呈现的图表:

    8.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. ]}
    复制代码

    9.jpg

    四、时序图教程

    网址:https://wavedrom.com/tutorial.html

    10.jpg

    里面包含多个示例,可以很好地对WaveDrom进行学习。

    11.jpg

    五、逻辑电路图教程

    网址:https://wavedrom.com/tutorial2.html

    12.jpg

    里面讲解了逻辑电路图的绘制示例。

    13.jpg

    六、Github主页

    WaveDrom Github https://github.com/wavedrom/wavedrom

    14.jpg

    七、VScode中使用Waveform

    在VScode应用商店中搜索Waveform Render,这个就相当于WaveDrom

    15.jpg

    左边键入代码,右边会自动生成时序图,非常好用:

    16.jpg

    End

    作者:
    果果小师弟
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    小黑屋|路丝栈 ( 粤ICP备2021053448号 )

    GMT+8, 2024-12-22 15:30 , Processed in 0.049020 second(s), 21 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表