【问题标题】:verilog mux not workingverilog 多路复用器不工作
【发布时间】:2015-05-09 13:19:01
【问题描述】:

我想为 2*1 多路复用器构建一个小代码,其中输入来自不同的模块(使其更实用),但我总是得到高阻抗 ('Z') 的输出。有什么建议吗?

module  mux_using_assign(
  din_0      , // Mux first input
  din_1      , // Mux Second input
  sel        , // Select input
  mux_out      // Mux output
  );
  input din_0, din_1, sel ;
  output mux_out;
  wire  mux_out;
  assign mux_out = (sel) ? din_1 : din_0;

  endmodule //End Of Module mux


  module ip1();
  wire a;
  mux_using_assign dut1(.din_0(a));
  assign a = 1;
  endmodule


  module ip2();
  wire b;
  mux_using_assign dut1(.din_1(b));
  assign b = 0;
  endmodule



  module test();
  wire sel        ; // Select input
  wire mux_out;
  ip1 aa();    // tried commenting this and following line also
  ip2 bb();
  mux_using_assign dut1(.sel(sel),.mux_out(mux_out));
  assign sel=1;
  endmodule

【问题讨论】:

    标签: verilog mux


    【解决方案1】:

    问题在于每个模块中的dut1 实例是与其他模块不同的实例。换句话说,ip1ip2test 中的每一个都有自己的dut1 复用器。您需要使用输入/输出线并将它们全部链接到单个 mux_using_assign 声明。

    【讨论】:

    • 只是想确认一下,为所有 mux 实例提供相同的名称并不意味着它们是同一个物理块?
    • 那么有没有办法只使用语法来做到这一点,而不是使用所有详细的接线解决方案(寻找更简单的出路),因为这只是一个更大项目的实验代码.我必须实现一个仲裁器,它从不同的块中获取输入并根据选定的输入块访问内存输出。
    • 我不知道。此外,布线解决方案并不是那么“详细”——事实上,它可以说比您尝试做的更好,因为它将接口与实现分开。
    猜你喜欢
    • 1970-01-01
    • 2013-12-16
    • 1970-01-01
    • 1970-01-01
    • 2020-07-01
    • 1970-01-01
    • 2021-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多