我在制作测试平台时遇到问题。我的学校已经进入了这个季度,但我觉得我错过了一些基础知识。
这里我试图制作一个2乘4的解码器,但我想在verilog中模拟它。
module decoder2to4(x, enable, y);
input [1:0] x; //this is my decoder input
input enable;
output [3:0] y;
reg [3:0] y;
always @(x, enable ) //
begin
if(enable==0) //if enable isn't on, all outputs WON'T OUTPUT correct and give us 1111
y = 4'b1111;
else //if enable is high...
if (x == 2'b00) //...then we check our inputs and give corresponding outputs
y = 4'b0001;
if (x == 2'b01)
y = 4'b0010;
if (x == 2'b10)
y = 4'b0100;
if (x == 2'b11);
y = 4'b1000;
end
endmodule
这是我的模拟文件〜我写的正确吗?
module testbench_2to4decoder;
reg [1:0] x; //use reg not wire to assign values
wire [3:0] y; //for the outputs
2to4Decoder uut(x,y);
initial begin
x = 2'b00;
enable = 1'b0; //keep it off
#10 //wait some time
enable = 1'b1; //turn enable on
#10; //wait some time
x = 2'b01; //input 01
#10; //wait some time
x = 2'b10; //input 10
#10; //then
x = 2'b11; //input 11
#10;
enable = 1'b0; //turn it off
#10;
end
endmodule
答案 0 :(得分:2)
您没有正确地实例化设计。首先,enable
没有连接。 enable
甚至没有在testbench中声明。
此外,模块名称错误。而不是遵循:
2to4Decoder uut(x,y);
你必须:
decoder2to4 uut(x,enable, y);
鼓励使用reset
逻辑具有输出的默认值。但由于这是一个组合电路,因此这里不是强制性的。
可以使用for
或repeat
循环和增量变量x
来提供输入。但这只是为了提高编码效率。
其他事情似乎没问题。请参阅Module instantiation链接。