菜鸟问个关于多路选择器的testbench问题,望各位前辈赐教
`timescale 100ns/1ns
module mux4_1test;
reg[3:0] in1,in2,in3,in0;
reg s0,s1,clk;
wire [3:0] out;
mux4_1 mux1(.s0(s0),.s1(s1),.in0(in0),.in1(in1),.in2(in2),.in3(in3),.out(out));
initial
$monitor($time,"s=%b,out=%b\n",{s1,s0},out);
initial
begin
clk=0;
forever #30 clk=~clk;
end
initial
begin
in0=0000;
in1=0010;
in2=0100;
in3=1000;
{s1,s0}=2'b00;
#80{s1,s0}=2'b01;
#50{s1,s0}=2'b10;
#80{s1,s0}=2'b11;
end
endmodule
这是我写的多路器
module mux4_1(s0,s1,out,in1,in2,in3,in0);
input s0,s1,in1,in2,in3,in0;
output reg out;
always@(*)
begin
case ({s1,s0})
2'b00ut=in0;
2'b01ut=in1;
2'b10ut=in2;
2'b11:out=in3;
default:out=2'bxx;
endcase
end
endmodule
是 :out
看错了-。-
timescale 写大了,而timescale length默认100ns,改成了`timescale 1ns/1ps 数据长度也不匹配!
其他问题还在找!还有什么问题望赐教
刚开始波形一直是初始值主要是timescale没写好,现在终于弄好了,菜鸟引以为戒
module mux4_1(s0,s1,out,in1,in2,in3,in0);
input s0,s1,in1,in2,in3,in0;
output reg out;
你的mux内,输入输出全都是1bit的;
但是tb内:
module mux4_1test;
reg[3:0] in1,in2,in3,in0;
wire [3:0] out;
却是4bits的,你想想原因在哪?
另外,clk是正常的,可以出正常波形。
最后,你的仿真,什么时候停止?你不告诉仿真器,仿真器怎么知道如何停止?
nitial
begin
in0=0000;
in1=0010;
in2=0100;
in3=1000;
{s1,s0}=2'b00;
#80{s1,s0}=2'b01;
#50{s1,s0}=2'b10;
#80{s1,s0}=2'b11;
#100;
$stop;//或者$finish
end
谢谢,数据长度不匹配已经改了,刚开始仿真的时候timescale写的不对clk都只有初始值,原来是因为显示不全。而且终止时间也没给,谢谢啦!哥
谢谢,数据长度不匹配已经改了,刚开始仿真的时候timescale写的不对clk都只有初始值,原来是因为显示不全。而且终止时间也没给,谢谢啦!哥
