【问题标题】:Verilog D-Flip-Flop not re-latching after asynchronous resetVerilog D-Flip-Flop 在异步复位后不重新锁存
【发布时间】:2015-01-27 00:08:20
【问题描述】:

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

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

但这是我得到的波形,显示复位后没有发生重新锁定,为什么会这样?

【问题讨论】:

  • 每次inen 为高时启用重置。 out 只能在clockreset 低、en 高和in 高的姿势上走高`
  • @Greg,我明白你的解释,但我仍然不知道如何解决这个问题。
  • 您需要更改您的测试台激励,而不是您的设计。

标签: verilog flip-flop


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-26
    • 1970-01-01
    相关资源
    最近更新 更多