【问题标题】:Using reg output as input Verilog使用 reg 输出作为输入 Verilog
【发布时间】:2016-05-03 15:22:40
【问题描述】:

所以,我正在开发一个简单的寄存器,它接受同步输入,一旦输入被断言,就会保持该状态,直到启用复位。

我的代码应该很容易解释。这种检查注册输出会导致任何问题吗?

    module walk_reg(
        input Walk_Sync,    //pedestrian set walk-request
        input WR_Reset,     //FSM reset, for during the walk service
        input clk,      //clock
        output reg WR   //output
        );


    always @(posedge (clk)) 
    begin
        if(WR_Reset)    //if reset enables, output goes to 0
            WR <= 1'b0;
        else if (WR)    //if WR is already on, keep it on
            WR <= WR;
        else 
            WR <= Walk_Sync;    //if reset is not enabled and WR isn't already one, assign output to Walk_Sync
    end

    endmodule // walk_reg

EDIT变量名已更改,忘记在代码中更改

【问题讨论】:

    标签: verilog


    【解决方案1】:

    不回答,但评论太多了。

    always @(posedge (clk)) 
        begin
            if(WR_Reset)    //if reset enables, output goes to 0
                WR <= 1'b0;
            else if (WR)    //if WR is already on, keep it on
                WR <= WR;
            else 
                WR <= Walk_Sync;    //if reset is not enabled and WR isn't already one, assign output to Walk_Sync
        end
    

    等同于:

    always @(posedge clk) 
    begin
      if (WR_Reset)    //if reset enables, output goes to 0
        WR <= 1'b0;
      else if (!WR)    
        WR <= Walk_Sync;
    end
    

    如果不满足任何条件,触发器将保持其值。

    duskwuff 的更好建议:

    always @(posedge clk) 
    begin
      if (WR_Reset)    //if reset enables, output goes to 0
        WR <= 1'b0;
      else if (Walk_Sync)    
        WR <= 1'b1;
    end
    

    【讨论】:

    • 或者,可能更清楚一点:… else if (Walk_Sync) WR &lt;= 1'b1.
    【解决方案2】:

    附带说明,WR_Reset 仅在时钟工作时才会复位触发器。 在大多数 Flop 设计中,我们使用 ASYNC 复位边沿检测,然后是基于时钟的复位检测。

    always @(posedge (clk))always @(posedge (clk) or posedge(WR_Reset))

    否则,使用 WR 进行条件赋值没有问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      相关资源
      最近更新 更多