FPGA 设计Verilog基础(三)

本文介绍了FPGA设计中Verilog Testbench的重要性,包括文件结构、时钟激励、复位信号、特殊信号设计和仿真控制语句。通过实例讲解加法器的测试文件编写,提供编写Testbench的建议,强调其在验证和调试设计中的关键作用。
摘要由CSDN通过智能技术生成

一个完整的设计,除了良好的功能描述代码,对程序的仿真验证时不可少的。学会如何去验证自己所写的程序,即如何调试自己的程序是一件非常重要的事情。而RTL逻辑设计中,学会根据硬件逻辑来写测试程序。即Testbench是尤其重要的。Verillog测试平台是一个例化的待测(MUT)模块,重要的是给他施加激励并观测器输出。逻辑模块与对应的测试平台共同组成仿真模型,应用这个模型可以测试该模块是否符合自己设计的要求。

编写Testbench的目的是为了对使用硬件描述语言设计的电路进行仿真验证、测试设计电路功能、性能与设计的是否相符。通常,编写测试文件的过程如下:

  • 产生模拟激励
  • 将产生的激励加入到被测模块中并观察其响应
  • 将输出响应与期望值比较

1.1Testbench 文件结构

通常一个完整的测试文件结构为

module Test_bench(); //通常无输入无输出
信号或变量定义声明
逻辑设计中输入对用reg型
逻辑设计中输出对应wire型
使用initial 或 always 语句产生激励
例化待测试模块
监控和比较输出响应
endmodule

1.2 时钟激励设计

下面里举出一些常用的封装子程序,这些是常用的写法,在很多应用中都能应用到。

/*-----------------------------------------------
时钟激励产生方法一:50%占空比时钟
-----------------------------------------------*/

parameter clockperiod = 10;

initial
    begin
        clk_i = 0;
        forever
            #(clock_period/2) clk_i = ~clk_i;
    end


/*-----------------------------------------------
时钟激励产生方法二:50%占空比时钟
-----------------------------------------------*/

initial
    begin
        clk_i = 0;
        always #(clock_period/2) clk_i = ~clk_i;
    end

/*-----------------------------------------------
时钟激励产生方法三:产生固定数量的时钟脉冲
-----------------------------------------------*/

initial
    begin
        clk_i = 0;
        repeat(6)
            #(clock_period) clk_i= ~clk_i;
    ebd

/*-----------------------------------------------
时钟激励产生方法四:产生非占空比为50%的时钟
-----------------------------------------------*/

initial
    begin
        clk_i = 0;
        forever
            begin
                #((clock_period/2)-2) clk_i
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值