亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> Verilog

深入理解 Verilog 中的赋值间延迟与赋值内延迟

Verilog 延迟语句可以在赋值运算符的左侧或右侧指定延迟值。

赋值间延迟

 // 延迟指定在左侧 #<delay> <LHS> = <RHS> 

赋值间延迟语句的延迟值位于赋值运算符的左侧(LHS)。这表示该语句本身在延迟过期后执行,是最常用的延迟控制形式。

 module tb; reg a, b, c, q; initial begin $monitor("[%0t] a=%0b b=%0b c=%0b q=%0b", $time, a, b, c, q); // 在时间 0 初始化所有信号为 0 a <= 0; b <= 0; c <= 0; q <= 0; // 赋值间延迟:等待 #5 时间单位 // 然后将 a 和 c 赋值为 1。注意 'a' 和 'c' // 在当前时间步结束时更新 #5 a <= 1; c <= 1; // 赋值间延迟:等待 #5 时间单位 // 然后将 'q' 赋值为 RHS 计算出的值 #5 q <= a & b | c; #20; end endmodule 

请注意,q 在 10 个时间单位时变为 1,因为该语句在 10 时间单位时被求值,而 RHS(a、b、c 的组合)计算结果为 1。

仿真日志

 xcelium> run [0] a=0 b=0 c=0 q=0 [5] a=1 b=0 c=1 q=0 [10] a=1 b=0 c=1 q=1 xmsim: *W,RNQUIE: Simulation is complete. 

赋值内延迟

 // 延迟指定在右侧 <LHS> = #<delay> <RHS> 

赋值内延迟是指赋值运算符右侧(RHS)存在延迟。这表示语句首先被求值,捕获 RHS 上所有信号的值,然后仅在延迟过期后将结果赋给目标信号。

 module tb; reg a, b, c, q; initial begin $monitor("[%0t] a=%0b b=%0b c=%0b q=%0b", $time, a, b, c, q); // 在时间 0 初始化所有信号为 0 a <= 0; b <= 0; c <= 0; q <= 0; // 赋值间延迟:等待 #5 时间单位 // 然后将 a 和 c 赋值为 1。注意 'a' 和 'c' // 在当前时间步结束时更新 #5 a <= 1; c <= 1; // 赋值内延迟:首先执行语句 // 然后等待 5 个时间单位,再将求值后的值赋给 q q <= #5 a & b | c; #20; end endmodule 

注意仿真日志中 q 的赋值缺失!

仿真日志

 xcelium> run [0] a=0 b=0 c=0 q=0 [5] a=1 b=0 c=1 q=0 xmsim: *W,RNQUIE: Simulation is complete. 

这是因为在 5 个时间单位时,a 和 c 使用非阻塞赋值语句赋值。非阻塞赋值的行为是:先求值 RHS,但直到该时间步结束才真正赋值给变量。

因此 a 和 c 的值虽求值为 1,但尚未赋值,当下一个非阻塞语句(q 的赋值)执行时,a 和 c 仍保持旧值 0,导致 q 的 RHS 求值为 0,$monitor 未检测到变化而不显示。

为观察变化,将 a 和 c 的赋值语句从非阻塞改为阻塞赋值。

 ... // 非阻塞改为阻塞,其余代码不变 #5 a = 1; c = 1; q <= #5 a & b | c; ... 

仿真日志

 xcelium> run [0] a=0 b=0 c=0 q=0 [5] a=1 b=0 c=1 q=0 [10] a=1 b=0 c=1 q=1 xmsim: *W,RNQUIE: Simulation is complete. 

Verilog

  1. Verilog基础:设计你的第一个与门
  2. Verilog 入门:数字电路设计完整教程
  3. 掌握 Verilog 语法:关键规则与最佳实践
  4. 理解 Verilog 标量与向量:位、寄存器与线网类型
  5. 掌握 Verilog 拼接操作:实用指南
  6. 深入理解 Verilog 赋值语句:类型、语法与最佳实践
  7. Verilog阻塞与非阻塞赋值:关键区别详解
  8. 掌握Verilog函数:高效RTL设计的复用利器
  9. 理解Verilog任务:函数vs任务、语法与用法全解析
  10. 理解Verilog延时控制:时序技术与最佳实践
  11. 深入理解 Verilog 门延迟:精准时序助力可靠数字设计
  12. Verilog 时钟发生器设计与实现指南