MCU学习笔记_WaveDrom Editor工具使用总结

WaveDrom指南

WaveDrom是一个JavaScript应用程序。WaveJSON是一种描述数字时序图的格式。WaveDrom直接在浏览器中呈现图表。元素“信号”是一组微波。每个wavane都有两个必填段:“name”和“wave”。

步骤一、信号

创建一个名为“Alfa”的1位信号,随着时间的推移改变其状态。

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

“wave”字符串中的每个字符代表一个单独的时间段。符号“。”将先前的状态延长一个周期。它看起来是这样的:

步骤二、增加时钟

数字时钟是一种特殊类型的信号。它在每个时间段变化两次,可以有积极的或消极的极性。它也可以在工作边缘有一个可选的标记。时钟的块可以与其他信号状态混合,以创建时钟门控效果。

代码如下:

{ 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' },]}

图:

步骤三、合在一起

典型的时序图会有时钟和信号(线路)。多位信号将尝试从“数据”数组中抓取标签。

{ signal: [{ name: "clk",  wave: "P......" },{ name: "bus",  wave: "x.==.=x", data: ["head", "body", "tail", "data"] },{ name: "wire", wave: "0.1..0." }]}

步骤四、逆电流器和缝隙

{ signal: [{ name: "clk",         wave: "p.....|..." },{ name: "Data",        wave: "x.345x|=.x", data: ["head", "body", "tail", "data"] },{ name: "Request",     wave: "0.1..0|1.0" },{},{ name: "Acknowledge", wave: "1.....|01." }]}

步骤五、组合

波形可以以阵列的形式以命名的组来表示。(“组名称”,{…},{…},……数组的第一个条目是组的名称。组可以嵌套。

{ 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'},]]}

步骤六、时期和阶段

“周期”和“相位”参数可以用来调整每个wavane。

DDR读事务

{ signal: [{ name: "CK",   wave: "P.......",                                              period: 2  },{ name: "CMD",  wave: "x.3x=x4x=x=x=x=x", data: "RAS NOP CAS NOP NOP NOP NOP", phase: 0.5 },{ name: "ADDR", wave: "x.=x..=x........", data: "ROW COL",                     phase: 0.5 },{ name: "DQS",  wave: "z.......0.1010z." },{ name: "DQ",   wave: "z.........5555z.", data: "D0 D1 D2 D3" }]}

步骤七、配置{}属性

配置:{…}属性控制呈现的不同方面。

hscale

属性控制图表的水平比例。用户可以输入任何大于0的整数。

{ signal: [{ name: "clk",     wave: "p...." },{ name: "Data",    wave: "x345x",  data: ["head", "body", "tail"] },{ name: "Request", wave: "01..0" }],config: { hscale: 1 }}

skin

配置:{皮肤:“……'}属性可以用来选择WaveDrom皮肤。该属性只在页面上的第一个计时图中工作。WaveDrom编辑器包括两个标准皮肤:“默认”和“窄”

head/foot

head:{...} 和 foot:{...}属性定义时间关系图上方和下方区域的内容。

tick

-添加对齐到垂直标记的时间轴标签。

tock

-在垂直标记之间添加时间轴标签。

text

-添加标题/标题文本。

{signal: [{name:'clk',         wave: 'p....' },{name:'Data',        wave: 'x345x', data: 'a b c' },{name:'Request',     wave: '01..0' }],head:{text:'WaveDrom example',tick:0,},foot:{text:'Figure 100',tock:9},}

head/ foot 

文本具有SVG文本的所有属性。标准SVG tspan属性可以用来修改文本的默认属性。用于表示SVG文本内容的JsonML标记语言。可以使用和混合几种预定义的样式:

H1 h2 h3 h4 h5 h6——预定义的字体大小。

静音警告错误信息成功——字体颜色样式。

其他SVG tspan属性也可以自由式使用,如下所示。

{signal: [{name:'clk', wave: 'p.....PPPPp....' },{name:'dat', wave: 'x....2345x.....', data: 'a b c d' },{name:'req', wave: '0....1...0.....' }],head: {text:['tspan',['tspan', {class:'error h1'}, 'error '],['tspan', {class:'warning h2'}, 'warning '],['tspan', {class:'info h3'}, 'info '],['tspan', {class:'success h4'}, 'success '],['tspan', {class:'muted h5'}, 'muted '],['tspan', {class:'h6'}, 'h6 '],'default ',['tspan', {fill:'pink', 'font-weight':'bold', 'font-style':'italic'}, 'pink-bold-italic']]},foot: {text:['tspan', 'E=mc',['tspan', {dy:'-5'}, '2'],['tspan', {dy: '5'}, '. '],['tspan', {'font-size':'25'}, 'B '],['tspan', {'text-decoration':'overline'},'over '],['tspan', {'text-decoration':'underline'},'under '],['tspan', {'baseline-shift':'sub'}, 'sub '],['tspan', {'baseline-shift':'super'}, 'super ']],tock:-5}}

步骤八、Arrows

Splines

 ~    -~
<~>  <-~>~>   -~>  ~->
{ signal: [{ name: 'A', wave: '01........0....',  node: '.a........j' },{ name: 'B', wave: '0.1.......0.1..',  node: '..b.......i' },{ name: 'C', wave: '0..1....0...1..',  node: '...c....h..' },{ name: 'D', wave: '0...1..0.....1.',  node: '....d..g...' },{ name: 'E', wave: '0....10.......1',  node: '.....ef....' }],edge: ['a~b t1', 'c-~a t2', 'c-~>d time 3', 'd~-e','e~>f', 'f->g', 'g-~>h', 'h~>i some text', 'h~->j']}

Sharp lines

 -   -|   -|-
<-> <-|> <-|->->  -|>  -|->  |->
{ signal: [{ name: 'A', wave: '01..0..',  node: '.a..e..' },{ name: 'B', wave: '0.1..0.',  node: '..b..d.', phase:0.5 },{ name: 'C', wave: '0..1..0',  node: '...c..f' },{                              node: '...g..h' }],edge: ['b-|a t1', 'a-|c t2', 'b-|-c t3', 'c-|->e t4', 'e-|>f more text','e|->d t6', 'c-g', 'f-h', 'g<->h 3 ms']}

步骤九、 Some code

(function (bits, ticks) {var i, t, gray, state, data = [], arr = [];for (i = 0; i < bits; i++) {arr.push({name: i + '', wave: ''});state = 1;for (t = 0; t < ticks; t++) {data.push(t + '');gray = (((t >> 1) ^ t) >> i) & 1;arr[i].wave += (gray === state) ? '.' : gray + '';state = gray;}}arr.unshift('gray');return {signal: [{name: 'bin', wave: '='.repeat(ticks), data: data}, arr]};})(5, 16)


来源WaveDrom Editor工具Guide



本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部