verilog 多路复用器不工作
Posted
技术标签:
【中文标题】verilog 多路复用器不工作【英文标题】:verilog mux not working 【发布时间】: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
【问题讨论】:
【参考方案1】:问题在于每个模块中的dut1
实例是与其他模块不同的实例。换句话说,ip1
、ip2
和test
中的每一个都有自己的dut1
复用器。您需要使用输入/输出线并将它们全部链接到单个 mux_using_assign
声明。
【讨论】:
只是想确认一下,为所有 mux 实例提供相同的名称并不意味着它们是同一个物理块? 那么有没有办法只使用语法来做到这一点,而不是使用所有详细的接线解决方案(寻找更简单的出路),因为这只是一个更大项目的实验代码.我必须实现一个仲裁器,它从不同的块中获取输入并根据选定的输入块访问内存输出。 我不知道。此外,布线解决方案并不是那么“详细”——事实上,它可以说比您尝试做的更好,因为它将接口与实现分开。以上是关于verilog 多路复用器不工作的主要内容,如果未能解决你的问题,请参考以下文章