FPGA开发笔记-TestBench的编写(入门)

        使用Quartus&Modelsim联合仿真时,需要自行编写TestBench来产生激励信号,下面进行简要的介绍。

对于2选1数据选择器,其verilog代码如下:

module mux21(
    input a,b,c,
    output y;

    assign y=(a&~c)|(b&c);

endmodule

编写对应的testbench如下:

`timescale 100ns/1ns    //设置仿真步长(单位时间)/仿真精度(最高分辨率)
module TB_mux21;    //实体名,自行拟定,建议与元件实体名区分开来

    //端口声明
    reg A,B,C;     //一般输入端口使用reg型
    wire Y;        //输出端口只能用wire型

    //实例引用被测模块,格式:
    //    .<实例端口名>(<欲链接的测试端口名>)
    //注:这里的testMux21就是一个自己起的名字,是用元件mux21实例化的一个对象
    mux21 testMux21(.a(A),.b(B),.c(C),.y(Y));    

    initial        //initial块(用begin/end括起来),只执行一次
    begin
        A=0;B=0;C=0;    //激励设置
        #10 A=1;        //#10即延时10个时间单位
        #5 C=1;
        #10 B=1;
        #10 C=0;
        #20 A=0;
        #10 B=1;
    end

endmodule

此外,归纳一些常用激励的写法:

1、用for循环

initial
begin
    a=0; b=0;
    for(a=0;a<4;a=a+1) begin
        for(b=0;b<4;b=b+1)begin
            #20;    //延时
        end
    end
end

2、重复波形

(i)
always #2 clk = ~clk;    //每过两个时间单位,clk反转一次
//效果是产生周期为4个时间单位,占空比50%的时钟信号


(ii)
parameter tON=2,tOFF=2;    //参数定义,可以类比C语言中的宏名
always
begin
    #tON clk=0;
    #tOFF clk=1;
end
//也是产生时钟信号,周期(tON+tOFF)个时间单位,占空比tON/(tON+tOFF)


(iii)
parameter Tlen=100,Ton=2,Toff=2;
initial
begin
    repeat(Tlen)    //在Tlen个时间单位内不断重复
    begin
        #Toff clk=1;
        #Ton clk=0;
    end
end
//效果类似(ii),但限定了时钟信号持续的总时长

最后,使用联合仿真需要按需更改一些Quartus II的设置,具体说明可以参考FPGA开发笔记-Quartus II入门的“二、硬件描述语言入门(Verilog)”

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值