5590|12

55

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

最简单4位计数器的testbench的一些小问题 [复制链接]

今天写了一个最简单的4位计数器(无清零、无使能)的源程序和testbench程序,计数值出不来,是不是testbench中还需要对计数值先初始化呢,各位大侠帮看看。
4位计数器源程序:
module count4(clk,cnt);
    input clk;
    output [3:0]cnt;
     reg  [3:0]cnt;
     always @(posedge clk)
        begin
        cnt<=cnt+1;
        end
endmodule

testbench程序:
`timescale 1 ns/10 ps
module test_count4();
    reg clk=0;
    wire [3:0]cnt;
count4 i1(.clk(clk),.cnt(cnt));
    always #10  clk=~clk;
    initial
    begin
    $monitor($time,,,"clk=%d cnt=%d",clk,cnt);
    #400  $stop;
    end
endmodule

仿真波形:

此帖出自FPGA/CPLD论坛

最新回复

我第一次写testbench就遇到这样的问题,纠结了很久,还是查看这个才解决,看来这个是容易犯的错误,好贴  详情 回复 发表于 2014-4-24 22:59
点赞 关注
 

回复
举报

55

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
本帖最后由 xuhongming 于 2014-3-16 12:52 编辑

简单4位计数器(modelsim仿真文件与word文档).zip (45.93 KB, 下载次数: 24)


没人回答,我就自问自答吧,是在一个fpga群里,一个前辈教我的,在这里先感谢那位前辈了。
上面波形中cnt不能计数,是因为cnt没有初值,处于不定态,后面在源程序中修改一下:
reg[3:0]--->reg[3:0]=4‘b0;就可以了,修改后的波形如下


此帖出自FPGA/CPLD论坛
 
 

回复

13

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
额,楼主以后要记得赋初值呀,我也是新手,刚接触FPGA没多久,给你个赞吧
此帖出自FPGA/CPLD论坛

点评

谢谢  详情 回复 发表于 2014-3-16 11:52
 
 
 

回复

55

帖子

0

TA的资源

一粒金砂(中级)

4
 
本帖最后由 xuhongming 于 2014-3-16 11:50 编辑

      
4位全加器程序:
module  adder4(cout,sum,ina,
                inb,cin,clk);
    input [3:0]ina,inb;
    input clk,cin;
    output reg[3:0]sum;
    output reg cout;
    always @(posedge clk)
    begin
        {cout,sum}=ina+inb+cin;
    end
endmodule
全加器测试程序testbench
`timescale 1ns/10 ps
module test_adder4();
    reg[3:0]ina,inb;
    reg cin;
    reg clk=0;
    wire cout;
    wire [3:0]sum;
    parameter period=20;
adder4 i1(.ina(ina),.inb(inb),.cin(cin),
        .clk(clk),.sum(sum),.cout(cout));
    always     #(period/2)  clk=~clk;
initial
        begin
        ina=0;
        inb=0;
        cin=0;
        end
    initial
        begin
        repeat(20)
        #20 ina=$random;
        end
    initial
        begin
        repeat(40)
        #10 inb=$random;
        end
    initial
        begin
         repeat(2)
        #200 cin=$random;
        end
    initial
        begin
        $monitor($time,,,"%d+%d+%d={%d,%d}",ina,inb,cin,cout,sum);
        #400 $stop;
        end
endmodule
仿真波形
此帖出自FPGA/CPLD论坛
 
 
 

回复

55

帖子

0

TA的资源

一粒金砂(中级)

5
 
本帖最后由 xuhongming 于 2014-3-16 12:52 编辑
mqliuttoong 发表于 2014-3-15 18:49
额,楼主以后要记得赋初值呀,我也是新手,刚接触FPGA没多久,给你个赞吧


谢谢教导
此帖出自FPGA/CPLD论坛
 
 
 

回复

55

帖子

0

TA的资源

一粒金砂(中级)

6
 
本帖最后由 xuhongming 于 2014-3-16 12:11 编辑

4位异步清零计数器(仿真文件与word文档).zip (47.03 KB, 下载次数: 4)
4位异步清零计数器(仿真文件与word文档).zip (47.03 KB, 下载次数: 4)


此帖出自FPGA/CPLD论坛
 
 
 

回复

55

帖子

0

TA的资源

一粒金砂(中级)

7
 


异步清零_计数使能控制的4位计数器(仿真文件与word文档).rar

47.91 KB, 下载次数: 3

异步清零_计数使能控制的4位计数器(仿真文件与word文档)

此帖出自FPGA/CPLD论坛
 
 
 

回复

55

帖子

0

TA的资源

一粒金砂(中级)

8
 
异步清零、计数使能、数据加载控制功能的4位计数器(仿真文件与测试文档).zip (66.87 KB, 下载次数: 1)

异步清零、计数使能、数据加载控制功能的4位计数器:
module count4_rst_en_load(clk,rst,en,load,data,cnt);
    input clk,rst,en,load;
    input [3:0]data;
    output reg[3:0]cnt;
    always @(posedge clk or negedge rst)
        begin
        if(!rst)  cnt<=0;
            else if(en==1)
                begin
                    if(load)  cnt<=data;
                        else cnt<=cnt+1;
                end
        end
endmodule
测试程序:
`timescale 1 ns/10 ps
module test_count4_rst_en_load();
    reg clk=0;
    reg rst,en,load;
    reg [3:0]data;
    wire [3:0]cnt;
count4_rst_en_load  i1(.clk(clk),.rst(rst),.en(en),
                        .load(load),.data(data),.cnt(cnt));
    always #10  clk=~clk;
    initial
        begin
            rst=0;en=0;load=0;data=4'd6;
            #20  en=1;
            #20  rst=1;
            #20  load=1;
            #20  rst=0;
            #20  rst=1;
            #20  load=0;
        end
    initial
        begin
        $monitor($time,,,"clk=%d rst=%d en=%d load=%d cnt=%d",
                                    clk,rst,en,load,data,cnt);
        #800  $stop;
        end
endmodule
       仿真波形:
此帖出自FPGA/CPLD论坛
 
 
 

回复

55

帖子

0

TA的资源

一粒金砂(中级)

9
 
上面的文件,modelsim初学者可以试试,已经测试过了,自己也是个初学者,也只能写写这样简单的程序了,还望多多体谅。
此帖出自FPGA/CPLD论坛
 
 
 

回复

13

帖子

0

TA的资源

一粒金砂(中级)

10
 
modelsim还要写配置文件,正在学习如何写,不错
此帖出自FPGA/CPLD论坛
 
 
 

回复

5979

帖子

8

TA的资源

版主

11
 
写的不错 正好可以总结一下modelsim的使用方法
在实践中检验 在实践中总结 是最好的学习方法
此帖出自FPGA/CPLD论坛
个人签名生活就是油盐酱醋再加一点糖,快活就是一天到晚乐呵呵的忙
===================================
做一个简单的人,踏实而务实,不沉溺幻想,不庸人自扰
 
 
 

回复

55

帖子

0

TA的资源

一粒金砂(中级)

12
 
谢谢版主的评价。
此帖出自FPGA/CPLD论坛
 
 
 

回复

25

帖子

1

TA的资源

一粒金砂(中级)

13
 
我第一次写testbench就遇到这样的问题,纠结了很久,还是查看这个才解决,看来这个是容易犯的错误,好贴
此帖出自FPGA/CPLD论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表