0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用PlantUml绘制逻辑时序图/波形图

sanyue7758 来源:验证芯发现 2023-05-14 09:28 次阅读

AgileWave已支持PlantUml在线画图,Git源码参见:

https://github.com/cc-hook/agileWave

AgileWave介绍:

1. AgileWave!一款时序图绘制神器

2.好消息 | 源码和验证工具已开源至Github,欢迎围观

使用PlantUml绘制时序图,波形图的简单说明如下。

时钟

时钟信号使用clock关键词声明,使用offset设置相位,使用pulse设置脉宽。默认相位为0,占空比为50%。

8c152764-f19c-11ed-90ce-dac502259ad0.png

@startumlx
clock"clk0"asclk0withperiod100
clock"clk1"asclk1withperiod100offset20
clock"clk2"asclk2withperiod100offset100
clock"clk3"asclk3withperiod100pulse30
clock"clk4"asclk4withperiod100pulse30offset20

@0
@1000
@enduml

Tips:

plantuml时钟信号上升沿和下降沿都是垂直的,无法设置上升和下降时间,可以使用offset,使时钟和信号边沿错开,来表达采样逻辑时序,如图中clk1和clk4。

plantuml的时钟信号默认都是高电平开始,如果需要低电平开始,可以把offset设置为period,即延后一个周期开始,如图中的clk2。

逻辑信号

plantuml中使用binary,concise和robust声明逻辑变量,
concise:简明的图形化数据表示,可表示数据的移动(非常适合表示信息)。
robust:用信号线表示的状态,便于呈现状态间的转化(可设置多种状态)。
binary:二进制信号,只有两个状态。(binary)。

逻辑信号值使用“is”表达。

8c2f44be-f19c-11ed-90ce-dac502259ad0.png

@startumlx

clockclkwithperiod20offset1
binary"en"asen
robust"fsm_state"asfsm
concise"addr"asaddr

fsmisidle
enishigh

@0
enislow
fsmis"busy"
addris{-}

@20
enishigh
fsmis"start"
addris"0xFF"
@30
addris"0xA5A5"
fsmis{idle,start}
@40
enis0
fsmis"busy"
@60
enis{0,1}
@70
enis1
fsmis"idle"
addris"0xDEAD"

@100
@enduml

Tips:

初始值设置
在声明变量后,@标注时间前,使用"A is B"的格式,将A的初始值设置为B。不能对时钟信号设置初始值。

不定态设置
使用"A is {X,Y}"的方式,将信号A的值设置在X和Y之间,表示一种不定范围。特殊的"A is {-}"表示A是不定态或高阻。

添加消息

有时某两个变化点代表了一种状态或者场景时序,即一种消息。类似wavedrom中的edge。在两个信号变量之间使用->即可添加消息。
如果需要在不同时刻节点之间添加消息,使用@+时间表示延后的时刻点。
en->fsm@+50:stop now.
表示消息的起点是当前时刻的en信号,终点是50单位以后的fsm信号。

8c4b6270-f19c-11ed-90ce-dac502259ad0.png

@startumlx

clockclkwithperiod20offset1
binary"en"asen
robust"fsm_state"asfsm
concise"addr"asaddr

fsmisidle
enishigh

@0
enislow
fsmis"busy"
addris{-}
en->addr:startnow!

@20
enishigh
fsmis"start"
addris"0xFF"
en->fsm@+50:stopnow!
@30
addris"0xA5A5"
fsmis{idle,start}
@40
enis0
fsmis"busy"
@60
enis{0,1}
@70
enis1
fsmis"idle"
addris"0xDEAD"

@100
@enduml

基于时间click描述信号时序

plantuml中可以使用时间click方式描述信号的时序关系,即在每个时刻点,描述各个信号的取值。click方式包括绝对时间和相对时间两种。
绝对时间方式在每个需要描述信号变化的时刻使用"@时刻"声明。
相对时间方式表示在相对前一节点延后一段时间后的时刻节点,使用"@+时间"表示。

8c65bd28-f19c-11ed-90ce-dac502259ad0.png

@startumlx

clockclkwithperiod20offset1
binary"en"asen
concise"addr"asaddr

enishigh

@0
enislow
addris{-}

@20
enishigh
addris"0xFF"

@+10/'绝对时刻=20+10=30'/
addris"0xA5A5"
en->addr:@30
@+30/'绝对时刻=30+30=60'/
enis1
addris"0xDEAD"
en->addr:@60

@+20/'绝对时刻=60+20=80'/
en->addr:@80
@enduml

基于信号的时序描述

plantuml中可以使用基于信号的描述,即描述单个信号在所有时刻点的变化。
此种方式下,绝对时间的信号取值使用"时刻 is X"的格式描述,相对时间的信号取值使用"@+时间 is X"的格式描述。
在任何一个信号时序描述集合里,可以在任意时间节点添加消息。

8c86ae16-f19c-11ed-90ce-dac502259ad0.png

@startumlx

clockclkwithperiod20offset1
binary"en"asen
concise"addr"asaddr

enishigh

@en
0islow
20ishigh
+30is0
addr->en:Alabel
+20is0

@addr
0is{-}
10is"0xFF"
20is{-}
en->addr:Alabel
+30is"0xA5A5"

@enduml

其他

基于时间click和信号的时序描述可以混合使用

双向约束'<->'在plantuml中表示约束关系,只能在基于信号的时序描述中,并且是同一个信号的不同时刻间使用。

隐藏时间轴。使用:hide-axis声明即可。

高亮区域。使用:'highlight T0 to T1 #Gold;line:DimGrey : Label'方式声明。

改变线条颜色。在信号值描述语句后使用'#颜色'方式设置。

8ca1b418-f19c-11ed-90ce-dac502259ad0.png

@startumlx
hidetime-axis

clockclkwithperiod20offset1
binary"en"asen
concise"addr"asaddr

@en
0islow
20ishigh#black
+30is0
@10<->@70:Aconstraint

@addr
0is{-}
10is"0xFF"
20is{-}
+20is"0xA5A5"#pink

@80
enis1
addris"0xDEAD"

@100
enis0
addris{-}
highlight70to90#Gold:HighlightArea
@enduml

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 波形图
    +关注

    关注

    1

    文章

    32

    浏览量

    14667
  • 开源
    +关注

    关注

    3

    文章

    2985

    浏览量

    41718
  • 源码
    +关注

    关注

    8

    文章

    573

    浏览量

    28586
  • 时序图
    +关注

    关注

    1

    文章

    56

    浏览量

    22350
  • GitHub
    +关注

    关注

    3

    文章

    457

    浏览量

    15921

原文标题:使用PlantUml绘制逻辑时序图/波形图

文章出处:【微信号:处芯积律,微信公众号:处芯积律】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    LabVIEW 波形图波形图

    LabVIEW 波形图波形图
    发表于 08-27 09:02

    新手请教:波形图表和波形图的区别

    新手请教:波形图表和波形图有什么区别?一般程序显示时,是用波形图表还是波形图
    发表于 09-26 10:32

    波形图波形图

    波形图波形图表的区别是什么啊?
    发表于 03-26 17:56

    波形图波形图表 的区别

    求助,波形图波形图表的区别。。。。不理解
    发表于 05-29 10:36

    波形图显示不全

    各位大侠,本人读取示波器中的610个数据用波形图显示,可是波形图有时显示的波形不全,前面板的波形图显示控件换个位置,有时就显示全了,求解,谢谢。
    发表于 06-20 09:47

    波形图的显示

    我采用18通道采集温度,我用簇捆绑之后用波形图表显示,横坐标是采集的点数,能不能横坐标显示时间呢????之后我听人说信号合并之后用波形图可以显示时间,我试了一下,确实显示时间,但是没有波形啊。而且这个
    发表于 09-22 16:48

    绘制波形图

    有哪位大神知道如何利用LABVIEW读取EXCEL的数据并绘制波形图吗?还有TDMS格式的数据也需要读出来并绘制波形图。非常感谢。
    发表于 08-24 15:10

    绘制波形图的颜色怎么修改

    通过绘制绘制波形图画出来的柱状,怎么修改个别几个柱形的颜色?求大神指教
    发表于 02-19 18:30

    波形图数据的起始时间设置问题

    我有一列数据,波形图绘制后,x轴为时间轴格式,显示后为从00:00:00开始,如何让这组数据从8:00:00开始,但是显示窗口位置不发生变化。试了波形图属性节点的偏移量和最小值都不行啊。求大神!
    发表于 05-22 12:04

    labview的波形图问题

    labview中的xy横轴的x只能是时间吗?比如我现在有一个电压-时间的波形图,以及电流时间的波形图,怎么才可以得到一个电压-电流的波形图呢?刚开始我想这样。但是连线是错误的,是我前
    发表于 10-24 14:18

    波形图表或者波形图如何实现hold on功能

    LabVIEW的波形图表或者波形图如何实现类似于Matlab plot的hold on功能?我的意思是数据刷新时同一个波形图或者波形图表能够保留下历史曲线,然后便于后续分析。
    发表于 01-03 23:06

    LabVIEW制作波形图XControl(转载请标明出处)

    绘制波形图2、两点法,显示两个标杆3、两点LSA,显示两个标杆,并显示标杆间的拟合曲线4、四点LSA,显示四个标杆,显示前面两个和后面两个标杆之间的拟合曲线,及在第二个标杆处焦点的差值5、注释可见,是否
    发表于 07-06 13:39

    如何绘制DAC原始数据以及ADC采集数据的波形图

    如何绘制DAC原始数据以及ADC采集数据的波形图
    发表于 11-19 06:42

    LabVIEW绘制带有多个不同标尺的波形图

    LabVIEW绘制带有多个不同标尺的波形图 通过在同一波形图上使用多个轴,可以使用不同的标尺绘制数据。请按照以下步骤操作。 将波形图或图表控
    发表于 11-24 19:20

    74163的逻辑符号以及波形图

    74163的逻辑符号以及波形图
    发表于 01-12 13:52 8058次阅读
    74163的<b class='flag-5'>逻辑</b>符号以及<b class='flag-5'>波形图</b>