wavedrom脚本画波形进阶中文版教程2

35 篇文章 9 订阅
21 篇文章 1 订阅

第四步,填充符和间隔符

(1)|竖线表示间隔符,显示为两条曲线。
(2)=为填充符,在下图中填充在data的位置。
wave: ‘x.345x|6.x’,和wave: ‘x.345x|=.x’,的显示结果一样。
1{ signal: [
2 { name: “clk”, wave: “p…|…” },
3 { name: “Data”, wave: “x.345x|=.x”, data: [“head”, “body”, “tail”, “data”] },
4 { name: “Request”, wave: “0.1…0|1.0” },
5 {},
6 { name: “Acknowledge”, wave: “1…|01.” }
7]}
在这里插入图片描述

第五步,分组

波道可以联合在以数组形式表示的命名组中。[‘组名’,{.},{.},.]数组的第一个条目是组的名称。可以嵌套组。
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]}
在这里插入图片描述

第六步 周期与相位

“周期period” 和 “相位phase” 参数可用于调整每个波道。
软件有一个默认的绘制宽度单位和起始相位。
时钟period参数改变了默认时钟的宽度。

DDR 读取事务

1{ signal: [
2 { name: “CK”, wave: “P…”, period: 2 },
3 { name: “CMD”, wave: “x.3x=x4x=x=x=x=x”, data: “RAS NOP CAS NOP NOP NOP NOP”, phase: 0.5 },
4 { name: “ADDR”, wave: “x.=x…=x…”, data: “ROW COL”, phase: 0.5 },
5 { name: “DQS”, wave: “z…0.1010z.” },
6 { name: “DQ”, wave: “z…5555z.”, data: “D0 D1 D2 D3” }
7]}
在这里插入图片描述

第七步 config {} 属性

Config: {.} 属性控制渲染的不同方面。
Hscale
配置: {hscale: #} 属性控制图表的水平比例。用户可以输入任何大于 0 的整数。
1{ signal: [
2 { name: “clk”, wave: “p…” },
3 { name: “Data”, wave: “x345x”, data: [“head”, “body”, “tail”] },
4 { name: “Request”, wave: “01…0” }
5 ],
6 config: { hscale: 1 }
7 }

hscale = 1 (default)

在这里插入图片描述

hscale = 2

在这里插入图片描述

hscale = 3

在这里插入图片描述

皮肤

配置: {skin: ‘.’} 属性可用于选择 WaveDrom 皮肤。
该属性仅在页面上的第一个时序图中工作。
WaveDrom 编辑器包括两个标准外观: “默认” 和 “窄”

头/脚

head: {.} 和foot: {.} 属性定义了时序图上下区域的内容。

tick

tick 添加与垂直标记对齐的时间线标签。

tock

tock在垂直标记之间添加时间线标签。

文本

text 添加标题/标题文本。

1{signal: [
2 {name:‘clk’, wave: ‘p…’ },
3 {name:‘Data’, wave: ‘x345x’, data: ‘a b c’ },
4 {name:‘Request’, wave: ‘01…0’ }
5],
6 head:{
7 text:‘WaveDrom example’,
8 tick:0,
9 },
10 foot:{
11 text:‘Figure 100’,
12 tock:9
13 },
14 }
在这里插入图片描述
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
}
}
在这里插入图片描述

第八步 箭头

Splines

~ -~
<~> <-~>
~> -~> ~->

1{ signal: [
2 { name: ‘A’, wave: ‘01…0…’, node: ‘.a…j’ },
3 { name: ‘B’, wave: ‘0.1…0.1…’, node: ‘…b…i’ },
4 { name: ‘C’, wave: ‘0…1…0…1…’, node: ‘…c…h…’ },
5 { name: ‘D’, wave: ‘0…1…0…1.’, node: ‘…d…g…’ },
6 { name: ‘E’, wave: ‘0…10…1’, node: ‘…ef…’ }
7 ],
8 edge: [
9 ‘a~b t1’, ‘c-~a t2’, ‘c-~>d time 3’, ‘d~-e’,
10 ‘e~>f’, ‘f->g’, ‘g-~>h’, ‘h~>i some text’, ‘h~->j’
11 ]
12 }
在这里插入图片描述

直角线

  • -| -|-
    <-> <-|> <-|->
    -> -|> -|-> |->

1{ signal: [
2 { name: ‘A’, wave: ‘01…0…’, node: ‘.a…e…’ },
3 { name: ‘B’, wave: ‘0.1…0.’, node: ‘…b…d.’, phase:0.5 },
4 { name: ‘C’, wave: ‘0…1…0’, node: ‘…c…f’ },
5 { node: ‘…g…h’ }
6 ],
7 edge: [
8 ‘b-|a t1’, ‘a-|c t2’, ‘b-|-c t3’, ‘c-|->e t4’, ‘e-|>f more text’,
9 ‘e|->d t6’, ‘c-g’, ‘f-h’, ‘g<->h 3 ms’
10 ]
11 }
在这里插入图片描述

第九步,嵌入代码块

(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)
在这里插入图片描述

  • 3
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity脚本进阶可以指的是在使用Unity引擎编写脚本时,掌握更高级的技术和技巧,以实现更复杂的功能和优化游戏性能。 首先,进阶的一个关键点是深入理解Unity的生命周期和事件。理解Unity脚本的生命周期函数(如Start、Update、LateUpdate等)以及事件处理机制可以帮助我们更好地控制对象的行为和与其他对象的交互。 其次,进阶还包括熟悉Unity引擎的API和功能。掌握Unity提供的丰富API,比如处理输入、碰撞检测、物理引擎、动控制等,能够更灵活地控制游戏对象的行为和状态。此外,了解Unity的功能模块,如UI系统、粒子系统、音频管理等,能够让我们更好地设计和实现游戏中的各种元素。 进阶还包括学习使用Unity的高级特性,如协程、委托、事件等。协程可以帮助我们实现复杂的异步逻辑和动效果,委托和事件的使用则可以实现对象之间的解耦和监听。 另外,优化游戏性能也是进阶的重要内容。学习使用Unity的Profiler工具和内存管理技巧,可以帮助我们及时发现和解决性能瓶颈,提升游戏的帧率和响应速度。此外,合理使用对象池、批处理和资源管理等技术,也可以减少内存占用和加载时间,提升游戏的整体性能。 总之,Unity脚本进阶不仅仅是学习更多的技术和技巧,更重要的是理解并灵活运用这些知识,以实现更高效、更优秀的游戏体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值