理解Verilog延时控制:时序技术与最佳实践
两类时序控制
Verilog含延时控制和事件控制。延时控制:仿真器遇到语句到实际执行间插入延时。事件控制:延迟至仿真事件发生(网络/变量值变化隐式事件、显式命名事件触发)。门/网络内部延时模型也推进仿真时间。
延时控制详解
延时表达式为X/Z视为零延时;负值视为同位宽时间变量的2补无符号整数。支持常数、变量、表达式、十六进制、时间单位(如10ps)等多种形式。$realtime显示高精度时间。
事件控制
隐式事件:变量值变化触发。posedge(向1变化:0→X/Z/1、X/Z→1)、negedge(向0变化:1→X/Z/0、X/Z→0)。仅能检测向量信号LSB的边沿。同状态到同状态非事件。
命名事件:event声明,->触发,@等待。无数据、无持续时间、可任意时刻发生。支持数组(如event b_event[5])。可同步多并发进程。
事件或操作符
or或逗号,等待列表中任一事件触发。示例展示posedge a or posedge b、posedge a, negedge b、a, b三种敏感列表的触发时序差异。
隐式事件表达式列表与 @* 简化
敏感列表遗漏信号是常见功能错误源。Verilog提供@*或@(*)自动包含过程块读取的所有网络/变量,消除维护负担。示例对比手工维护敏感列表与@*等效性。
电平敏感事件控制
wait关键字实现条件满足前阻塞。条件为假则阻塞后续语句,为真则继续。示例:等待计数器非零、等待计数器达4值。
Verilog
- Verilog 入门:数字电路设计完整教程
- 掌握 Verilog 拼接操作:实用指南
- 深入理解 Verilog 赋值语句:类型、语法与最佳实践
- Verilog阻塞与非阻塞赋值:关键区别详解
- 掌握Verilog控制流:if-else、case、循环语句全解析
- 掌握Verilog函数:高效RTL设计的复用利器
- 理解Verilog任务:函数vs任务、语法与用法全解析
- 深入理解 Verilog 中的赋值间延迟与赋值内延迟
- 深入理解 Verilog 门延迟:精准时序助力可靠数字设计
- Verilog 时钟发生器设计与实现指南
- 掌握 Verilog 数学函数:高效硬件设计的利器
- 掌握 Verilog $timeformat:精度控制与显示格式化