求高手指点testbench我的第一个testbench可对啊?

2019-03-25 09:01发布

我的电路是让一个LED闪烁下面是电路描述: module exp2(led,clk);
input clk;
output        led;
reg        led;
reg        [24:0]cnt;
always @(posedge clk)
begin
        cnt <= cnt + 1;
        if(cnt == 25000000)
        begin
                led <= ~led;
                cnt <= 0;
        end
end
endmodule 下面是我写的testbench,可是用ISE12.4自带的仿真波形不对,LED输出来老是X!而且cnt也总是等于0 我怀疑我的testbench写的不对,因为第一次写!求大神指点! module exp2_tb;
reg clk;
reg cnt;
exp2 uut(.clk(clk),.led(led));
initial begin
clk = 0;
cnt = 0;
#100
end
always #10 clk = ~clk; //是不是只要给源文件增加这个激励就行了????
endmodule 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
chenzhufly
1楼-- · 2019-03-25 11:45
 精彩回答 2  元偷偷看……
碧水2012
2楼-- · 2019-03-25 16:03
这个测试文件写的有问题 你这个电路只要时钟跑了就应该会动的 verilog的话可以用建立新资源选择verilog test fixture 建立测试模版 根据模版加激励信号就行了 其实也就是你的always#10 clk=~clk这个是在ISE下建立测试模版的方法。用新建文件实例化你写的那个模块也行,cnt是你被调用模块中的寄存器不属于输入输出你在测试文件中对它赋值不起作用,最好在原来的模块中添加一个复位信号,好让电路在一个已知的状态下运行。也是新手个人愚见,若有错误请指教。

[ 本帖最后由 碧水2012 于 2012-7-18 10:40 编辑 ]
xdqqlayn
3楼-- · 2019-03-25 20:53
你最好加一个复位rst_n,复位时,cnt清零。
initial begin
   rst_n=0;
  #20 rst_n=1;
  #100000 $stop
end

不太确定 你试试吧
小鱼儿1045
4楼-- · 2019-03-26 02:52
恩,谢谢。说的比较详细!
小鱼儿1045
5楼-- · 2019-03-26 03:41
谢谢!
eeleader
6楼-- · 2019-03-26 07:39
飘过,说的都是一针见血!

一周热门 更多>