如何写testbench的verilog代码

如何写testbench的verilog代码,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

你所需要的网站建设服务,我们均能行业靠前的水平为你提供.标准是产品质量的保证,主要从事网站设计、成都网站制作企业网站建设、成都做手机网站、网页设计、成都品牌网站建设、网页制作、做网站、建网站。创新互联建站拥有实力坚强的技术研发团队及素养的视觉设计专才。

使用的FPGA开发板:xilinx KC705
开发环境: vivado2019.1

Readme:
昨天在流水灯的代码中添加了“按键消抖”功能。上板也进行了测试,测试结果OK。
但是对于有些上板测试,有时候还不能完全反应出逻辑设计时的意思。
因此,还是需要testbench测试下仿真的波形,通过波形来看,是不是真的完全表达了设计的初衷。

正文:
1.编写测试文件的思路
通常,编写测试文件的过程如下:
1)产生模拟激励(波形);
2)将产生的激励加入到被测试模块中并观察其响应;
3) 将输出响应与期望值相比较

2.怎么写
1)建立仿真文件
如何写testbench的verilog代码

文件命名:文件命名保持一致,后边加一个尾缀“tb”,表示testbench.
如何写testbench的verilog代码
此时,出来一个空文件:
如何写testbench的verilog代码

  1. 编写内容
    了解下testbench 的基本架构

module Test_bench();//通常无输入无输出//信号或变量声明定义//逻辑设计中输入对应 reg 型//逻辑设计中输出对应 wire 型reg  key_in;//逻辑设计中输入对应 reg 型reg  rst_n;reg  clk;reg [7:0] cnt;wire key_out;//逻辑设计中输出对应 wire 型//1.使用 initial 或 always 语句产生激励// 一般包括:时钟,复位,以及(模拟)产生测试的输入信号//2.例化待测试模块
 key_noshake
#(.cnt_max(8'd100))key_noshake_inst(.key_in(key_in),.rst_n(rst_n),.clk(clk),.key_out(key_out));  //3.监控和比较输出响应//观察仿真后的输出波形即可endmodule

3)完整代码如下:

`timescale 1ns / 1ps//// Company: // Engineer: // // Create Date: 2021/03/12 10:58:46// Design Name: // Module Name: key_noshake_tb// Project Name: // Target Devices: // Tool Versions: // Description: // // Dependencies: // // Revision:// Revision 0.01 - File Created// Additional Comments:// //module key_noshake_tb();//通常无输入无输出//信号或变量声明定义reg  key_in;//逻辑设计中输入对应 reg 型reg  rst_n;reg  clk;reg [7:0] cnt;wire key_out;//逻辑设计中输出对应 wire 型//1.使用 initial 或 always 语句产生激励    initial 
    begin
        clk=1'b1;rst_n=1'b0;#50rst_n=1'b1;end

always #10  clk=~clk;//生成(模拟)时钟信号always@(posedge clk or negedge rst_n)if( rst_n==1'b0)cnt<=8'b0;else if(cnt==8'd249)cnt<=8'b0;else cnt<=cnt+8'b1;always@(posedge clk or negedge rst_n)//模拟按键key_in的前抖动,后抖动,以及稳定段if( rst_n==1'b0)key_in<=1'b1;else  if (cnt>=8'd02 &&  cnt<=8'd19)key_in<={
   
   
   $random} %2;else  if (cnt>=8'd129 &&  cnt<=8'd149)key_in<={
   
   
   $random} %2;elsekey_in<=1'b0;// 2.例化待测试模块  

 key_noshake
#(.cnt_max(8'd100))key_noshake_inst(.key_in(key_in),.rst_n(rst_n),.clk(clk),.key_out(key_out));     //3.监控和比较输出响应endmodule

注:
如何写testbench的verilog代码

3.仿真结果

如何写testbench的verilog代码

如何写testbench的verilog代码
放大(局部特写)
如何写testbench的verilog代码

关于如何写testbench的verilog代码问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。


名称栏目:如何写testbench的verilog代码
转载源于:http://lszwz.com/article/ppogej.html

其他资讯

售后响应及时

7×24小时客服热线

数据备份

更安全、更高效、更稳定

价格公道精准

项目经理精准报价不弄虚作假

合作无风险

重合同讲信誉,无效全额退款