verilog 多路复用器不工作
verilog mux not working
我想为 2*1 mux 构建一个小代码,其中输入来自不同的模块(以使其更实用),但我总是得到高阻抗输出 ('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
问题是每个模块中的 dut1
实例是与其他模块不同的实例。换句话说,ip1
、ip2
和 test
中的每一个都有自己的 dut1
多路复用器。您需要使用 input/output 线和 link 它们全部用于单个 mux_using_assign
声明。
我想为 2*1 mux 构建一个小代码,其中输入来自不同的模块(以使其更实用),但我总是得到高阻抗输出 ('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
问题是每个模块中的 dut1
实例是与其他模块不同的实例。换句话说,ip1
、ip2
和 test
中的每一个都有自己的 dut1
多路复用器。您需要使用 input/output 线和 link 它们全部用于单个 mux_using_assign
声明。