2016-12-14 13 views
0

не может поместить мой палец на почему это не работает, я управлял имитацией на игровой площадке eda, и я получаю «x» в выходе каждый раз, когда выбор изменяется на 0. I правильно получить «1», когда sel «1». благодаря!verilog 4bit mux test bench code дает x

код:

module mux8_2(input [3:0]a,[3:0]b,sel,output [3:0]out); 
assign out=(sel)?a:b; 
endmodule 

и испытательный стенд:

module mux8_2_tb; 

reg [3:0]A; 

reg [3:0]B; 

reg SEL; 

wire [3:0]OUT; 

mux8_2 UUT(A,B,SEL,OUT); 

initial 
    begin 

$dumpfile("dump.vcd"); 

$dumpvars(1); 

A=4'b1; B=4'b0; SEL=1'b1; 

#1 SEL=1'b0; 
#1 SEL=1'b1; 
#1 SEL=1'b0; 
#1 SEL=1'b1; 
#1 SEL=1'b0; 
#1 SEL=1'b1; 
#1; 
end 

endmodule 

ответ

1

Я не могу воспроизвести результаты; сигнал OUT всегда известен мной.

Но я получаю предупреждение компиляции:

The following 1-bit expression is connected to 4-bit port "sel" of module 
    "mux8_2", instance "UUT" 

Это может быть исправлено:

module mux8_2(input [3:0]a,[3:0]b, input sel,output [3:0]out); 

В коде sel унаследованной ширину от предыдущего сигнала ([3:0]b). Ваш код эквивалентен:

module mux8_2(input [3:0]a,[3:0]b,[3:0]sel,output [3:0]out); 

Добавление другого input ключевого слова перед тем sel заставляет его использовать стандартную ширину 1 бит.

+0

Да, я понял, что внес неправильный регистр, исправил его. Итак, вы говорите, что вы запустили код, и он был известен? это может быть проблема с эдой? вы что-то изменили? –

+0

Вы не исправили это в своем вопросе. Я только изменил строку в своем ответе. Вы пробовали все симуляторы на эде? – toolic

+0

вы издеваетесь надо мной ... да, «работа с селом» работала. но почему? он должен признать это ... привет, спасибо за помощь! –