计数器问题,这个代码的testbench对不对,仿真的时候,输出一直是X
本帖最后由 fpgaw 于 2011-8-17 13:38 编辑这个代码的testbench对不对,仿真的时候,输出一直是X,帮忙指点一下
module tcount(out,data,load,reset,clk);
output out;
input data;
input load,clk,reset;
reg out;
always @(posedge clk)
begin
if(!reset)
out<=8'h00;
else if (load)
out<=data;
else
out<=out+1;
end
endmodule
测试文件:
`timescale1ns/1ns
module tcount_tp;
reg clk,reset,load;
reg data;
wire cntout;
integer i;
tcount count(cntout,data,load,reset,clk);
always #10 clk<=~clk;
initial
begin
clk<=0;reset<=0; load<=0;data<=8'h00;
#5 reset<=1;
#10 load<=1;
#10 load<=0;
for(i=0;i<255;i=i+1)
#10 data<=data+1;
#10000$finish;
end
initial
$monitor($time,,,"cntout=%d",cntout);
endmodule 注意,在你的时钟上升沿的这几个时间点上:10,30,50。。。复位和置数都正好无效。计数器不能够进入到一个确定的状态上。 如果在0时刻把clk赋成1,那么在20时刻,就可以把数置进去了。 感谢了,好像明白加载激励的精髓了 感谢了
http://bbs.vibesic.com/images/smilies/default/lol.gif 弱弱的说一句
http://bbs.vibesic.com/images/smilies/default/loveliness.gif
<br>
<br>
你的模块里面,好象没有定义 load,clk,reset; 的类型.
http://bbs.vibesic.com/images/smilies/default/sad.gif 端口定义input,output,inout时,默认它们的类型是wire。 hehe <br>
长见识了
页:
[1]