行为级建模
目录
(1)repeat 循环执行语句或语句块确定的次数,目前不可综合,多用于验证代码。
2.1、数据流描述
(在数字电路中,信号经过组合逻辑时类似信号的流动,信号从输入流向输出,不会再其中存储,且出入变化时,会在一定的时间后引起输出的变化)
连续赋值语句(使用assign关键字)
使用语法:
< assign > [strength][#delay] <net_name> = <expression>;
其中[strength][#delay]是可选项,<net_name>为定义的网线名,<expression>是赋值表达式。
注意:
- 只有线网型变量才能在assign语句中被赋值;
- 并行性
- 连续赋值语句可以是显性或隐性
- 表达式<expression>中可使用条件操作符或函数返回值
- 定义延时(wire out; assign #5 out = in1 && in2;)
- 定义线网变量强度
2.2、结构化过程语句
(1)initial语句
initial语句在仿真一开始(0时刻)就立即开始执行,每个initial语句只执行一次。(initial语句常用于验证模块,是不可综合的)
- “begin…end”中的语句是“串行”执行的;
- “fork… jion”中的语句是“并行”执行的。
(2)always语句
Always语句从仿真0时刻开始顺序执行语句块中行为语句,执行完最后一条语句后,又开始执行该语句中的第一条语句,如此循环往复,直到整个仿真结束。(always语句往往只有和一定的时序(或事件)控制结合在一起才有用,即在整个仿真过程中,只要满足触发条件就可重复执行。)
注意:
- 在always中被赋值的变量只能是寄存器型变量;
- 没有加时序控制的always语句是没有意义的。
延时触发描述的always语句不可综合,即always #delay <描述语句>是不可综合描述,一般用在测试平台;而基于事件的时序(边沿触发、或电平触发)则是可综合描述。
(3)时序控制
Verilog提供了三种过程时序控制方法:简单延迟(“#”)、基于事件(“@”)的时序控制和等待语句(wait)
①简单延迟赋值用于initial或always语句块中,不可综合
基于延迟的时序控制一般用 # delay_time,非0延迟放于赋值语句的左边,即:
< # delay_time > LHS = RHS ;
或将其嵌入赋值语句之中,即:
LHS = < # delay_time > RHS ;
②基于事件的时序控制,其中的时间是指某个寄存器或线网型变量的值发生了变化,用来触发后面申明的语句或语句块的执行。基于事件的

最低0.47元/天 解锁文章
959

被折叠的 条评论
为什么被折叠?



