笔记来源于Hitchhiker's Guide to the WaveDrom
1.从一个简单示例开始
{signal:[
{name:"Alfa",wave:"01.zx=23.456789"}
]}
Alfa的每个字符都代表一个时间段,‘.’可以表示状态保持不变。
2.添加时钟
数字时钟是一种特殊类型的信号,每个时间周期可以变化两次并且有正负极性。同时可以选择性的编辑在有效边沿。时钟块还可以和其他信号状态相混合来产生时钟门控的效果。
{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'},
]}
3.整合内容
典型的时序图包含了时钟和信号,多比特信号会从数据数组中得到标签。
{signal:[
{name:"clk",wave:"P......"},
{name:"bus",wave:"x.==.=x",data:["head","body","tail","data"]},
{name:"wire",wave:"0.1..0."}
]}
4.间隔
{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."}
]}
5.分组
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'},
]
]}
6.Period和Phase
period:时钟周期
phase:信号从第n个时钟周期开始
{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" }
]}
7. config:{...}
config:{hscale:?}
# ?代表水平刻度,和观看效果有关
{signal:[
{name:"clk", wave:"p...." },
{name:"Data", wave:"x345x", data: ["head", "body", "tail"] },
{name:"Request", wave:"01..0" }
],
config: {hscale:1}
}
其他设置参照:wavedrom
8.Arrows
# ~ 见名知意
# -~ ~- 微平滑?
# <~>
# <-~>
# ~>
# -~>
# ~->
# - 直线
{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'
]
}