行为级建模
随着设计复杂程度不断提高门级建模变得极其复杂,行为级建模更加灵活简单。
在Verilog中有两种结构化的过程语句:initial语句和always语句,他们是行为级建模的两种基本语句。其他所有的行为语句只能出现在这两种结构化过程语句里。
Verilog在本质上是并发而非顺序的,Verilog中的各个执行流程并发执行,而不是顺序执行的。每个语句代表一个独立的执行过程,每个执行过程从仿真时间0开始执行。并且两种语句不能嵌套使用。
always语句包括的所有行为语句构成了一个always语句块。该always语句块从仿真0时刻开始顺序执行其中的行为语句;在最后一条执行完成后,再次开始执行其中的第一条语句,如此循环往复,直至整个仿真结束。always语句通过用于对数字电路中一组反复执行的活动进行建模。
过程赋值语句
过程赋值语句的更新对象是寄存器,整数,实数,时间变量。这些类型的变量在被赋值后,其值将保存不变,直到被其他过程赋值语句富裕新值。
过程语句在执行到的时候才会起作用。
阻塞赋值语句按顺序执行,它不会阻塞其后并行块中语句的执行。
阻塞赋值语句使用“=”作为赋值符
count=count+1按顺序在最后执行。由于阻塞赋值语句是按顺序执行的。
利用非阻塞赋值来避免竞争
非阻塞赋值在于实现某件事情发送后将多个数据的并发传输、带来的问题是引起仿真速度下降以及内存使用量增加。
7.3 时序控制
时序控制是指,让设计者指定过程赋值发生的时刻,进而控制仿真时间如何推进。Verilog提供了三种时序控制方法:
- 基于延迟的时序控制
- 基于事件的时序控制
- 电平敏感的时序控制
基于延迟的时序控制
基于事件的时序控制
条件语句
条件语句同c语言
多路分支语句
同c语言
外加语句块配合,输出多个信号
他的一种变形,更加模糊匹配也更加灵活。
循环语句
避免发生死循环,
顺序块和并行块
并行块内4条语句都从仿真为0时刻开始。不需要等待上一条语句执行完成
并行块中对同一资源的竞争
在其他模块中禁用命名块。
生成块
没有理解这个,是什么意思。