Verilog HDL的阻塞与非阻塞语句

发布时间:2023-01-26 10:43:50

VerilogHDL的阻塞与非阻塞语句VerilogHDL语言的过程块中赋值语句称为过程赋值语句,其分为阻塞与非阻塞赋值语句。阻塞赋值语句没有完成之前会对后面的语句不能被执行,即对后面的语句造成阻塞;而非阻塞赋值语句是同时进行执行的。除了阻塞赋值语句以外,延迟时间的写法也会造成语句的阻塞与非阻塞。【关键词】阻塞赋值非阻塞赋值延迟时间组合电路时序电路1引言阻塞赋值和非阻塞赋值语句是VerilogHDL语言中的两种过程块赋值语句。在运用VerilogHDL语言对硬件电路进行程序设计时,如果对其理解不清或运用不当,会导致电路达不到预期的功能而产生错误。赋值语句和时间延迟相配合,则能更好的对硬件电路进行描述。对组合电路和时序电路的描述应该采用不同的赋值语句,下面就来讨论一下对不同电路应该采用何种方式对其进行描述。2过程赋值语句2.1非阻塞赋值语句阻塞赋值语句属于过程性赋值语句中的一种,其在initialalways过程块中赋值,它只能对寄存器数据类型的变量赋值。阻塞赋值语句的操作符号为“=,其语法格式是:变量=表达式;当一个语句块中有多条阻塞赋值语句时,如果前面的赋值语句没有完成,则后面的语句就不能执行,即对后面的语句造成阻塞。在串行语句块中,各条阻塞赋值语句将按照排列顺序依次执行。阻塞赋值语句执行过程是先计算等号右端表达式的值,将计算后的值赋给左边的变量,然后再执行下一条语句。2.2阻塞赋值语句
非阻塞赋值语句的操作符号位“<=,其语法格式是:变量<=表达式;当一个语句块中有多条非阻塞赋值语句,则后面语句的执行不会受到前面语句的限制。在串行语句块中,各条非阻塞赋值语句的执行没有先后之分。非阻塞赋值语句执行过程是先计算所有非阻塞赋值语句右端表达式的值,然后将所有计算值一并赋给其左边对应的变量。3时序电路语句的描述对时序电路的描述一般在always过程中完成,下面对图1中不同always块中不同赋值语句搭配时间延迟对信号的描述进行分析。输出信号q1是采用非阻塞赋值语句结合时间延迟在赋值符号的右边,其仿真波形如图2所示,其中时钟信号的周期设定为20ns。从仿真结果可以看出,每个时钟上升沿都会触发always块的执行。赋值语句的执行顺序为:将当前时刻a的值暂存到内部寄存器中,等待赋值符号右边的延迟时间之后,将暂存的值赋给变量q1输出信号q2是采用阻塞赋值语句结合时间延迟在赋值符号的右边,其仿真波形如图3所示,其中时钟信号的周期设定为20ns。从仿真结果可以看出,当阻塞赋值语句没有执行完之前,新的时钟上升沿不会触always块的执行。赋值语句的执行顺序为:将当前时刻a的值暂存到内部寄存器中,等待赋值符号右边的延迟时间之后,将暂存的值赋给变量q2输出信号q3是采用非阻塞赋值语句结合时间延迟在赋值符号的左边,其仿真波形如图4所示,其中时钟信号的周期设定为20ns。从仿真结果可以看出,当非阻塞赋值语句没有执行完之前,新的时钟上升沿不会触发always块的执行。赋值语句的执行顺序为:首先延迟赋值符号左边的时间值,然后将当前时刻a值赋值给变量q3q4是采用阻塞赋值语句结合时间延迟在赋值符号的左边,其仿真波形如图5所示,其中时钟信号的周期设定为20ns。从仿真结果可以看出,当阻塞赋值语句没有执行完之前,新的时钟上升沿不会触发always块的执行。赋值语句的执行顺序为:首先延迟赋值符号左边的时间值,然后将当前时刻a的值赋值给变量q4
其语句的执行过程和波形与q3的一致。4结论从以上的分析可以看出,q2q3q4的赋值方式都不适合于描述时序逻辑电路,因为其中q3q4的赋值过程是先延迟时间再赋值,而且q2q3q4的赋值语句会阻塞后面的语句和always块的再次触发,这些都不符合触发器电路的行为。而q1的赋值语句执行过程符合时序电路的行为,其中赋值符号右边的延迟时间可以理解为触发器的传输延迟时间,只是其值应小于时钟的一个周期。VerilogHDL的设计描述中,时序电路的过程赋值语句应该采用非阻塞赋值,写法为q1<=a如果q1输出连给下一个触发器的数据输入端时,q1的跳变在时钟的上升沿。在仿真的时候,会由于仿真器的不同,在时钟的上升沿采样的数据是数据跳变前的值,还是数据跳变后的值的不同而导致仿真结果和实际电路不一致,而导致功能错误。所以,赋值语句可以写为q1<=#1a;其中#1的延迟时间用于模拟时钟上升沿到q端输出的传输延迟时间。这样在仿真的时候,可以让数据的跳变避开时钟的上升沿,这样仿真结果和实际电路更加符合。参考文献[1]数字系统的VerilogHDL设计[M].北京:机械工业出版社,2007.[2]VerilogHDL与数字ASIC设计基础[M].武汉:华中科技大学出版社,2008.[3]VerilogHDL数字集成电路设计原理与应用[M].西安:西安电子科技大学出版社,2011.作者单位四川大学锦城学院四川省成都市611731

Verilog HDL的阻塞与非阻塞语句

相关推荐