2016-12-14 37 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,感谢您的帮助! –