Я хочу попробовать сделать функциональную реализацию мультиплексора 16x1. Кажется, все в порядке, но когда я тестирую свой проект на тестовом стенде, вывод m
представляет собой красную строку и всегда пишет stx. Мне нужны известные результаты вместо stx.
2x1 Multiplexer
module mux_2x1(y,d0,d1,s);
input d0,d1,s;
output y;
wire t0,t1;
and(t0,d0,~s);
and(t1,d1,s);
or(y,t1,t2);
endmodule
4x1 Multiplexer
module mux_4x1(y,d0,d1,d2,d3,s0,s1);
input d0,d1,d2,d3,s0,s1;
output y;
wire t0,t1;
mux_2x1 m1(t0,d0,d1,s0);
mux_2x1 m2(t1,d2,d3,s0);
mux_2x1 m3(y,t0,t1,s1);
endmodule
8x1 Multiplexer
module mux_8x1(y,d,s0,s1,s2);
input [0:7]d;
input s0,s1,s2;
output y;
wire [0:5]t;
mux_2x1 m1(t[0],d[0],d[1],s0);
mux_2x1 m2(t[1],d[2],d[3],s0);
mux_2x1 m3(t[2],d[4],d[5],s0);
mux_2x1 m4(t[3],d[6],d[7],s0);
mux_2x1 m5(t[4],t[0],t[1],s1);
mux_2x1 m6(t[5],t[2],t[3],s1);
mux_2x1 m7(y,t[4],t[5],s2);
endmodule
16x1 Multiplexer
module mux_16x1(y,d,s0,s1,s2,s3);
input [0:15]d;
input s0,s1,s2,s3;
output y;
wire [0:3]t;
mux_8x1 m1(t[0],d,s1,s2,s3);
mux_4x1 m2(t[1],d[8],d[9],d[10],d[11],s2,s3);
mux_4x1 m3(t[2],d[12],d[13],d[14],d[15],s2,s3);
mux_2x1 m4(t[3],t[1],t[2],s1);
mux_2x1 m5(y,t[0],t[3],s0);
endmodule
Код Verilog, реализация функции
module mux_16x1_imp(m,a,b,c,d);
input a,b,c,d;
output m;
//module mux_16x1(y,d,s0,s1,s2,s3);
mux_16x1 m1(m,{1'b0,1'b0,1'b1,1'b1,1'b0,1'b1,1'b0,1'b1,1'b1,1'b1,1'b1,1'b1,1'b0,1'b0,1'b0,1'b0},a,b,c,d);
endmodule
Вот мой код тестовой среды
module mux_16x1_imp_test();
reg a,b,c,d;
wire m;
mux_16x1_imp TestBench(m,a,b,c,d);
initial begin
a=1'b0; b=1'b0; c=1'b0; d=1'b0; #100
a=1'b0; b=1'b0; c=1'b0; d=1'b1; #100
a=1'b0; b=1'b0; c=1'b1; d=1'b0; #100
a=1'b0; b=1'b0; c=1'b1; d=1'b1; #100
a=1'b0; b=1'b1; c=1'b0; d=1'b0; #100
a=1'b0; b=1'b1; c=1'b0; d=1'b1; #100
a=1'b0; b=1'b1; c=1'b1; d=1'b0; #100
a=1'b0; b=1'b1; c=1'b1; d=1'b1; #100
a=1'b1; b=1'b0; c=1'b0; d=1'b0; #100
a=1'b1; b=1'b0; c=1'b0; d=1'b1; #100
a=1'b1; b=1'b0; c=1'b1; d=1'b0; #100
a=1'b1; b=1'b0; c=1'b1; d=1'b1; #100
a=1'b1; b=1'b1; c=1'b0; d=1'b0; #100
a=1'b1; b=1'b1; c=1'b0; d=1'b1; #100
a=1'b1; b=1'b1; c=1'b1; d=1'b0; #100
a=1'b1; b=1'b1; c=1'b1; d=1'b1;
end
endmodule
Моделирование