分享一款绘制时序图的实用小工具

article/2025/9/1 14:10:58

c03531403ec52dada5c0b1d649734130.gif

转自 | 果果小师弟

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

一、WaveDrom功能

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

abc69102918ee1f29b374937bc160dc7.png
绘制时序图
a55a8820754f369faefe217ff857c33e.png
绘制寄存器图
c857b7cd5e943d2e236fe1d2b65eb48f.png
绘制逻辑电路图

二、WaveDrom的使用

  • 在线编辑器 https://wavedrom.com/editor.html

  • 官网 https://wavedrom.com/

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

751e00aa8cf349a4c2e101a9f3a4dde1.png

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

3fc0c82b61ee3197345ef69d802296bc.png

三、绘制时序图

9edc2235dd4766c9d729a0206f6c5d98.png

下面的代码将创建名为“Alfa”的1位信号,该信号随时间改变其状态。

{ "signal" : [{ "name": "Alfa", "wave": "01.zx=ud.23.456789" }] }

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

0215e1dcf66ad623d73daf8af67f08ed.png 775ca103cb32f054269d6b420f3aa839.png

加时钟:数字时钟是一种特殊类型的信号。它在每个时间段内变化两次,可以有正负极性。它还可以在工作边缘上有一个可选标记。时钟块可以与其他信号状态混合,以产生时钟选通效应。代码如下:

{ signal: [{ name: "pclk", wave: 'p.......' },{ name: "Pclk", wave: 'P.......' },{ name: "nclk", wave: 'n.......' },{ name: "Nclk", wave: 'N.......' },{},{ name: 'clk0', wave: 'phnlPHNL' },{ name: 'clk1', wave: 'xhlhLHl.' },{ name: 'clk2', wave: 'hpHplnLn' },{ name: 'clk3', wave: 'nhNhplPl' },{ name: 'clk4', wave: 'xlh.L.Hx' },
]}

以及呈现的图表:

e8a4f0b09a8e63d5f35dd0cca354a2b6.png

WaveLanes 可以统一在以数组形式表示的命名组中。['组名', {...}, {...}, ...]数组的第一个条目是组的名称,这些组可以嵌套。

{signal: [{    name: 'clk',   wave: 'p..Pp..P'},['Master',['ctrl',{name: 'write', wave: '01.0....'},{name: 'read',  wave: '0...1..0'}],{  name: 'addr',  wave: 'x3.x4..x', data: 'A1 A2'},{  name: 'wdata', wave: 'x3.x....', data: 'D1'   },],{},['Slave',['ctrl',{name: 'ack',   wave: 'x01x0.1x'},],{  name: 'rdata', wave: 'x.....4x', data: 'Q2'},]
]}
321b011c50ef31d67e5f5f1dca859d95.png

四、时序图教程

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

ddbb23697a87e9756436c3d811b6f347.png

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

9452174491088984d3f3238174a2d962.png

五、逻辑电路图教程

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

7c092cd4cad7e24e02b77fe67eb7536a.png

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

2ad0932a99c1d34776e9f2e861ca21f9.png

六、Github主页

WaveDrom Github https://github.com/wavedrom/wavedrom
7107cf4d24b935f36b69ef8c090f05b0.png

七、VScode中使用Waveform

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

23dd9ee66a7a9ca5b2d12b22c810e8fc.png

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

99f163f5f3c547a138d5ec29eba41598.png

声明:本文素材来源网络,版权归原作者所有。如涉及作品版权问题,请与我联系删除。

------------ END ------------

f51b81455abbbb67c58bff7968740c29.png

c02e3ce63b8f051082e180371a7d18d2.png

点击“阅读原文”查看更多分享


http://chatgpt.dhexx.cn/article/VsBci1jY.shtml

相关文章

快速学习时序图:时序图简介、画法及实例

一、 什么是时序图? 时序图(Sequence Diagram),亦称为序列图、循序图或顺序图,是一种UML交互图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。 时序图是一个二维图,横轴表示对象&a…

PlantUML:一款让你爽到起飞的高效代码绘制时序图工具

背景 对于工作中遇到一些复杂的业务逻辑场景,需要借助图形工具去准确的表达,会更高效的理解和梳理复杂的逻辑,同时在跟领导和同事汇报时也更能清晰、准确、快速的表达想法以及方案。比如梳理源码常用的时序图以及流程图等,之前在…

java时序图工具_开发必备的小工具,你用过几个?

今天就简单介绍一下平时用到的一些小工具.首先我平时是用IDEA开发的,所以下面的介绍都是和IDEA相关的.本文主要介绍我平时在哪些场景使用,使用了哪些功能,至于IDEA怎么安装插件和插件有哪些额外的功能,这些你把插件名字对着搜索引擎一搜就很多了. 1.SequenceDiagram 这个工具是…

信号波形时序图常用工具推荐

Refer: 下载:画时序图的四大神器_可编程器件-面包板社区 (eet-china.com) 软件工程师,习惯使用StarUML画Timing Diagram, 硬件工程师建议使用一下软件。 1、AndyTiming 免费的,这个有一个知乎的博文可以参考 https://zhuanlan.zhihu.com/p…

Java 静态代码块详解

文章目录 一、普通初始化块:二、静态代码块:三、多种代码块间的执行顺序 首先得知道什么是初始化块:就是类中得一段用大括号 {} 括起来得独立的代码空间。 而初始化块分成了 普通初始化块和 静态的初始化块(也称为 静态代码块&…

java 代码块:静态代码块和非静态代码块

main方法是程序的入口,加入没有main方法程序无法启动,但是main方法不是第一个执行的。 我认为:在这个类加载时,编译器会找到main方法,从这里开始运行,但是当你把这个类加载的时候,静态代码块就…

java中代码块之静态代码块和非静态代码块

一、代码块: 语法:使用{}包裹的,可以在{}中写代码。 修饰符:static 或者不修饰。 static修饰的为静态代码代码块。 格式: //静态代码块,随着类的加载児执行static{System.out.println("这是静态代码块…

Java~~静态代码块

1. 可以使用static关键字来定义“静态代码块”: (1)语法格式: static{ java语句; } (2)静态代码块在类加载时执行,并且只执行一次。 (3)静态代码块在一个类…

java非静态代码块和静态代码块介绍

代码块 SE.10.0…02.28 非静态普通代码块:定义在方法内部的代码块,不用任何关键字修饰,又名构造代码块、实例代码块 静态代码块:用static修饰的代码块 非静态代码块 public class Test {public static void main(String[] args…

static静态代码块

static静态代码块 public class Person {// 静态代码块:在类加载时候执行静态代码块,只会执行一次static {System.out.println("Person.static initializer");}// 实例初始化块,每次调用构造方法之前首先调用实例初始化块{System.out.println…

java静态代码块

今天涉及到一个表需要加字段来关联另一张表的需求,考虑到项目已经上线,这个表又跟很多表联系,就想到了使用静态代码块去new一个Map来存放关联的字段,当然这是少量数据的表,大表的话还得考虑创建字典表了。 public sta…

静态代码块

在Java类中,使用static关键字修饰的代码块称为静态代码块 当类被加载的时候,静态代码块就会被执行 由于类只会加载一次,所以静态代码块只会执行一次 在程序当中,使用静态代码块对类的成员变量进行初始化 package qmfx2; publi…

代码块(静态代码块和非静态代码块)(重难点)

1 基本介绍 代码化块又称为初始化块,属于类中的成员[即是类的一部分],类似于方法,将逻辑语句封装在方法体中,通过{}包围起来。 但和方法不同,没有方法名,没有返回,没有参数,只有方法体&#xff…

分布式与集群的区别是什么?

在IDF05(Intel Developer Forum 2005)上,Intel首席执行官Craig Barrett就取消4GHz芯片计划一事,半开玩笑当众单膝下跪致歉,给广大软件开发者一个明显的信号,单纯依靠垂直提升硬件性能来提高系统性能的时代已…

分布式和集群的架构套路总结

本文成于2020年3月14日 参考:原文 文章目录 分布式和集群名词解释使用分布式的心路历程常见的分布式集群架构1. 纯负载均衡形式(集群方向)2. 领导选举型(分布式方向)3. 区块链型(分布式方向)4. master-slaver型(分布式方向)5. 规则型一致性Hash 分布式和集群名词解释…

分布式和集群的区别是什么?

分布式是指将不同功能,或不同地点,或拥有不同数据的多台计算机通过网络连接起来,由控制系统统一管理,完成大规模信息处理的计算机系统。 集群是指将多台服务器集中在一起提供同一种服务,在逻辑上可以看做是一台服务器…

集群、分布式、微服务的区别和介绍

目录 一、集群的概念 二、为什么要使用集群? 1、集群的特点 2、集群的优势 3、集群分类及不同分类的特点 三、集群分类介绍 1、负载均衡集群 2、高可用性集群 3、高性能计算集群 四、集群与分布式区别 1、分布式图解 2、集群模式图解 五、分布式与微服…

理解分布式和集群的区别

简单理解: 分布式:一个业务分拆多个子业务,部署在不同的服务器上 集群:同一个业务,部署在多个服务器上 一句话,就是:“分头做事”与“一堆人”的区别 图文理解: 详细理解&#x…

什么是分布式和集群?

漫小画 擅长漫话 程小员 擅长编程 某天,下班较早,我正在玩吃鸡,已经到决赛圈了,这时候,女朋友满脸求知欲的朝我走过来。 上次他们都说你给我讲的面向对象太简单了。 那你想怎样?为什么我一玩游戏你就过来问…

分布式和集群区别与分布式的应用场景

分布式是指将一个业务拆分不同的子业务,分布在不同的机器上执行,集群是指多台服务器集中在一起,实现同一业务,可以视为一台计算机,一个云计算平台,就是通过一套软件系统把分布式部署的资源集中调度使用。要…