2016-12-14 48 views
0

不能讓我的手指爲什麼它不工作,我在eda playground上運行了一個模擬器,每當選擇改爲0時,我在輸出中得到一個「x」。但當sel爲「1」時正確得到「1」。謝謝!verilog 4位多路複用器測試臺代碼給出了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關鍵字它使用1位的默認寬度之前sel力量。

+0

是的,我意識到我把錯誤的登記冊,修復它。那麼你是否說你運行了代碼而且知道了?這可能是EDA的問題嗎?你改變了別的嗎? –

+0

你沒有解決它在你的問題。我只是改變了我的答案。你在EDA上試過所有的模擬器嗎? – toolic

+0

你在開玩笑嗎......是的「輸入選擇」的工作。爲什麼?它應該認識到它...... welp,感謝您的幫助! –