RTL级:寄存器传输级(Register Transfer Level),用于设计的可综合的一种抽象级;RTL描述方式是行为描述方式的子集;
行为级描述
是对系统的高抽象级描述。在这个抽象级,注重的是整个系统的功能而不是实现。
Verilog有高级编程语言结构用于行为描述,包括:
wait, while, if then, case和forever
过程(procedural)块
过程块是行为描述的基础,有两种:initial块,只能执行一次;always块,循环执行。
过程块中有下列部件:
– 过程赋值语句:在描述过程块中的数据流
– 高级结构(循环,条件语句):描述块的功能
– 时序控制:控制块的执行及块中的语句。
过程赋值(在过程块中赋值)
• 在过程赋值语句中表达式左边的信号必须是寄存器类型(如reg类型)
• 在过程赋值语句等式右边可以是任何有效的表达式,数据类型也没有限制。
• 如果一个信号没有声明则缺省为wire类型。使用过程赋值语句给wire赋值会产生错误。
过程赋值语句有两类:阻塞过程赋值(a=b)和非阻塞过程赋值(a<=b)
阻塞过程赋值执行完成后再执行在顺序块内下一条语句。
非阻塞赋值不阻塞过程流,仿真器读入一条赋值语句并对它进行调度之后,
就可以处理下一条赋值语句。
若过程块中的所有赋值都是非阻塞的,赋值按两步进行:
- 仿真器计算所有RHS表达式的值,保存结果,并进行调度在时序控制指
定时间的赋值。 - 在经过相应的延迟后,仿真器通过将保存的值赋给LHS表达式完成赋值。
过程时序控制
在过程块中可以说明过程时序。过程时序控制有三类:
① 简单延时(#delay):延迟指定时间步后执行
在test bench中使用简单延时(#延时)施加激励,或在行为模型中模拟实际延时,在简单延时中可以使用模块参数parameter:
② 边沿敏感的时序控制:@()
时序控制@可以用在RTL级或行为级组合逻辑或时序逻辑描述中。可以用关键字posedge和negedge限定信号敏感边