FPGA必备基础7:verilog的6种延迟操作

如题所述

在FPGA设计中,理解verilog语言中的延迟操作至关重要。主要有六种延迟操作方式,包括连续赋值、阻塞赋值和非阻塞赋值,以及正规延迟和内定延迟的结合。以下是每种操作的详细解释:


1. 连续赋值


连续赋值(assign #5 C = A + B)在T时刻执行后,会等待5个时间单位,然后计算A和B在T+5时刻的值给C。若在等待期间A或B的值改变,仿真器会撤销等待并重新计算,但小于5个单位的变化无效。


2. 内定延迟连续赋值

assign C = #5 A + B,与连续赋值类似,不同在于使用T时刻的A和B值,非阻塞赋值变化小于5个单位时,等待会被撤销。


3. 阻塞赋值


always @(*) #5 C = A + B,阻塞赋值在等待5个时间单位后立即赋值,即使A和B在等待期间改变,仿真器也不会响应,直到always块执行完毕。


4. 内定延迟阻塞赋值

always @(*) C = #5 A + B,与阻塞赋值类似,使用T时刻的值,但非阻塞赋值会等待事件队列处理,变化会在下一次事件触发时反映在输出上。


5. 非阻塞赋值


always @(*) #5 C <= A + B,非阻塞赋值在等待期间,A和B的变化会被记录,仿真器会在always块结束后处理,确保输入变化的完整反映。


6. 内定延迟非阻塞赋值

always @(*) C <= #5 A + B,与非阻塞赋值相同,但使用T时刻的值,区别在于非阻塞赋值会在等待结束后处理输入变化。


以上就是verilog中六种延迟操作的基本概念和实现方式。理解这些延迟模式有助于优化FPGA设计的时序性能。

温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜