【问题标题】:How do I specify weak feedback inverter in Verilog如何在 Verilog 中指定弱反馈逆变器
【发布时间】:2013-09-22 18:32:10
【问题描述】:

我有一个由受控逆变器 IV0(.c(ctrl),.in(d),.out(a)) 驱动的普通逆变器 IV1(.in(a),.out(b))。对于 IV0,当 ctrl 为 1 时,驱动输出。否则,它会保持浮动。

同时,还有一个弱反馈反相器IVW(.in(b), .out(a))。

当ctrl为1时,节点a的值由IV0驱动。当ctrl为0时,节点a由弱反馈反相器驱动。

当IV0驱动节点a时,弱反馈反相器IVW也驱动节点a。如果他们将节点 a 驱动到不同的值,verilog 将产生 X。

我怎样才能用verilog写这个?


原答案

module buf(input d,ctrl, output b);
  reg a,b;
  always @ (d or ctrl) begin
    if(ctrl==1) begin
      a=~d;
      b=~a;
    end
    else begin
      a=~b;
      b=~a;
    end
  end
endmodule

摩根评论

这在综合后的工作方式与您当前的 RTL 不同 模拟。您确实需要使用 always @* 来确保 RTL 和门 级别将匹配。


【问题讨论】:

    标签: verilog feedback


    【解决方案1】:

    指定弱逆变器:

    not (weak1,weak0) u0 (out0,in1);
    

    For more info.

    IV0(.c(ctrl), .in(d), .out(a)); //out is z when crtl==0
    IV1(          .in(a), .out(b));     
    IVW(          .in(b), .out(a)); //out has weak drive
    

    当 ctrl 为 1 时,我们只有真正发挥作用:

    IV1(          .in(a), .out(b));     
    IVW(          .in(b), .out(a));
    

    这是一个时序循环,可能会导致振荡器不稳定。

    【讨论】:

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