当我尝试使用 STRUCTURAL 代码制作 5 位 2x1 MUX 时,我遇到了一个令人困惑的 Verilog 错误,但我似乎找不到任何关于我的代码为什么会显示错误的信息。错误是:
error: Expression width 5 does not match width 1 of logic gate array port 1.
我知道它在谈论我的一个输入,但我不知道端口 1 中的哪个输入。但是根据其余代码的布局方式,我很确定所有 5 位宽的输入都匹配带 5 位线和 5 位输出。任何帮助,将不胜感激!
供参考的是我的 .v 和 tb.v
.v: {module mux_2x1_5bit(in1, in2, gate, out);
input [4:0] in1, in2;
input gate;
output [4:0] out;
wire [4:0] a, b;
and #4 and1(a, {5{gate}}, in1);
and #5 and2(b, {5{~gate}}, in2);
or #4 or1(out, a, b);
endmodule
结核病:
module mux_2x1_5bitTEST();
wire [4:0] out;
reg [4:0] in1;
reg [4:0] in2;
reg gate;
mux_2x1_5bit DUT(in1, in2, gate, out);
initial
begin
in1 = 5'b00000;
in2 = 5'b00010;
gate = 0;
#20 in1 = 5'b00001;
#20 gate = 1;
#20 in2 = 5'b10101;
#20 in1 = 5'b01101;
#20 gate = 0;
end
always @(in1 or in2 or gate)
#1 $display("| gate = %b | in1 = %b | in2 = %b | out = %b |", gate, in1, in2, out);
endmodule