Verilog中D型触发器行为级与门级建模的时序差异咨询
Verilog D触发器门级与行为级建模时序差异问题
在Verilog中分别采用门级建模与行为级建模实现D型触发器时,状态转换的时钟沿存在差异,仿真(iverilog或Vivado)中该差异表现显著,对此存在技术困惑。
两种建模方式的时序特性
行为级建模(上升沿触发)
代码实现如下:
reg [15:0] R; assign OUT = R; initial R = 0; always@(posedge CLK) begin if(ST) begin R <= X; end end
该模型的输出在时钟上升沿立即完成状态转换,采用此建模的CPU可正常工作。
门级建模(下降沿输出更新)
内部由两个D锁存器构成:第一个锁存器在时钟上升沿捕获输入信号,第二个(输出端)锁存器使用反相时钟,在时钟下降沿将输入传递至输出端,状态转换实际发生在时钟下降沿。采用此建模的CPU同样可正常工作,但将行为级模型改为negedge触发时,CPU应用会失效。
核心问题
- 这种时序差异是否重要?
- 是否存在更贴近门级实现的D型触发器行为级建模方式?
- 综合后进行仿真时,这种差异会消失吗?
更新说明
部分困惑源于普通DFF与主从结构DFF的区别,现已明确自身寄存器无需主从结构,当前行为级模型符合普通DFF特性,可满足需求。
内容的提问来源于stack exchange,提问作者Patrick
相关产品推荐
相关产品推荐

