Verilog D-Flip-Flop在异步复位后不会重新锁存

时间:2015-01-27 00:08:20

标签: verilog flip-flop

我有一个带有异步复位和启用的触发器。这是我的代码:

module DFF_aSR(in, enable, clock, reset, out);
input in, enable, clock, reset;
output out;
reg out;

always @ (posedge clock or posedge reset) begin
    if (reset) begin
        out <= 1'b0;
    end 
    else if (enable) begin
        out <= in;
    end 
end
endmodule

但这是我的结果波形,显示重置后没有发生重新连接,为什么会这样?

flip flop waveform

1 个答案:

答案 0 :(得分:1)

如果/当数据稳定为高电平并且稳定为低电平时出现时钟上升沿,则锁存器输出应变为高电平。我看到的唯一边缘是在第一个复位脉冲之前。如果你希望闩锁能够抓住信号,例如时间110ns,你应该确保复位输入在此之前变低。如果您的意图是复位应该是边沿触发而不是电平触发,您可能需要使用一对触发器,一个由时钟触发,另一个通过复位,连线使得第一个的D输出连接到Q的第二个,第二个D连接到第一个/ Q.将锁存器的输出馈入XOR门将产生一个信号,该信号将指示哪个信号具有最近的上升沿(警告:同时上升沿可能触发亚稳态)。然后可以通过将锁存数据的“与”与XOR的输出一起形成您想要的信号,以及可能的一些危险避免门。