Я борюсь здесь с заданием для моего класса цифровой логики. Я искал в Интернете ресурсы, но не так много полезного. Кажется, что у каждого свой подход, отличный от того, что мы делаем в классе. Учебника тоже нет, только еженедельные раздаточные материалы, и этот тоже не очень полезен. Я написала своему инструктору по электронной почте, но ответа нет. В общем, это моя последняя надежда.
Мне нужно построить 4-сторонний демультиплексор, однако это нужно сделать, сначала создав 2-сторонний демультиплексор, а затем используя три из них для создания четырехстороннего демультиплексора.
Это почти все инструкции, которые мы получили. Нам показали, как создать 4-канальный мультиплексор таким же образом — сначала создав 2-канальный мультиплексор, а затем используя его 3 раза. Итак, я просто изменил то, что нам там показывали. Но мой вывод не совсем правильный. Я получаю «z» для каждого вывода.
"exp0, exp1, exp2, exp3" - это ожидаемый результат, который я должен получить.
2-сторонний демультиплексор
module demux2way(outA, outB, in, sel);
input in, sel;
output outA, outB;
wire s0, w0, w1;
not(s0, sel);
and(outA, w0, s0, in);
and(outB, w1, sel, in);
endmodule
4-сторонний демультиплексор
module demux4way(out0, out1, out2, out3, in, sel0, sel1);
input in, sel0, sel1;
output out0, out1, out2, out3;
wire w0, w1;
demux2way dmx0 (w0, w1, in, sel0);
demux2way dmx1 (w0, sel1, out0, out1);
demux2way dmx2 (w1, sel1, out2, out3);
endmodule
4Way Demux Testbench
module demux4way_tb();
reg inA, selA, selB;
wire outA, outB, outC, outD;
reg exp0, exp1, exp2, exp3;
initial begin
#0 selA=0; selB=0; inA=0; exp0=0; exp1=0; exp2=0; exp3=0;
#2 selB=1; exp0=0; exp1=0; exp2=0; exp3=0;
#2 selA=1; selB=0; exp0=0; exp1=0; exp2=0; exp3=0;
#2 inA=1; selA=0; exp0=1; exp1=0; exp2=0; exp3=0;
#2 selB=1; exp0=0; exp1=1; exp2=0; exp3=0;
#2 selA = 1; selB=0; exp0=0; exp1=0; exp2=1; exp3=0;
#2 selB=1; exp0=0; exp1=0; exp2=0; exp3=1;
#10 $finish; //End the simulation
end
initial begin
$monitor ("time=%4d: sel0=%b sel1=%b in=%b out0=%b out1=%b
out2=%b out3=%b, exp0=%b exp1=%b exp2=%b exp3=%b",
$time, selA, selB, inA, outA, outB, outC, outD, exp0, exp1, exp2, exp3);
end
demux4way demux01( .sel0(selA), .sel1(selB), .in(inA), .out0(outA), .out1(outB), .out2(outC), .out3(outD));
endmodule