Verilog 跟随器触发器的错误编码样式

Verilog 跟随器触发器的错误编码样式,verilog,Verilog,以下是捕获数据的代码,捕获的数据通过跟随器触发器传递。的作者说rst_n将用作第二个触发器的数据启用,因为两个触发器都是从同一程序块推断出来的。有人能解释一下模拟器如何将其解释为仅用于第二个触发器的负载数据信号吗 module badFFstyle ( output reg q2, input d, clk, rst_n ); reg q1; always @(posedge clk) if (!rst_n) q1 <= 1'b0; else begin

以下是捕获数据的代码,捕获的数据通过跟随器触发器传递。的作者说rst_n将用作第二个触发器的数据启用,因为两个触发器都是从同一程序块推断出来的。有人能解释一下模拟器如何将其解释为仅用于第二个触发器的负载数据信号吗

module badFFstyle (
 output reg q2,
 input d, clk, rst_n
);

  reg q1;

  always @(posedge clk)
    if (!rst_n) q1 <= 1'b0;
    else begin
      q1 <= d;
      q2 <= q1;
    end
endmodule
rst_n信号将与q1输出的输入d一起用作输入数据,并作为q2输出的时钟启用。为了理解差异,您需要考虑触发器应在何时对其输入进行采样:

当输入为rst_n&d时,q1将在每个时钟周期对其输入进行采样。 当输入为q1时,q2将仅在rst_n=1时发生的时钟周期上对其输入进行采样。
这意味着,当rst_n=0时,第二个触发器将保持其值,而不考虑d和1q1`。

有关逻辑图和混合寄存器的解决方案,请参阅,这些寄存器被重置为不在单个ALYST块中的寄存器。如果将其标记为启用信号,而不是纸张中使用的加载数据,则更有意义。非常感谢。