У меня сбивающая с толку ошибка Verilog, которая возникает, когда я пытаюсь создать 5-битный MUX 2x1 с использованием кода STRUCTURAL, и я не могу найти информацию о том, почему мой код отображается неправильно.Ошибка:
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
tb.v:
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