如何写testbench的verilog代码
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,如何写testbench的verilog代码,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。使用的FPGA开发板:xilinx KC7
千家信息网最后更新 2025年12月03日如何写testbench的verilog代码
如何写testbench的verilog代码,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
使用的FPGA开发板:xilinx KC705
开发环境: vivado2019.1
Readme:
昨天在流水灯的代码中添加了"按键消抖"功能。上板也进行了测试,测试结果OK。
但是对于有些上板测试,有时候还不能完全反应出逻辑设计时的意思。
因此,还是需要testbench测试下仿真的波形,通过波形来看,是不是真的完全表达了设计的初衷。
正文:
1.编写测试文件的思路
通常,编写测试文件的过程如下:
1)产生模拟激励(波形);
2)将产生的激励加入到被测试模块中并观察其响应;
3) 将输出响应与期望值相比较
2.怎么写
1)建立仿真文件
文件命名:文件命名保持一致,后边加一个尾缀"tb",表示testbench.
此时,出来一个空文件:
编写内容
了解下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;endalways #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注:
3.仿真结果

放大(局部特写)
关于如何写testbench的verilog代码问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。
测试
输出
设计
逻辑
逻辑设计
文件
输入
代码
信号
波形
仿真
模块
问题
内容
变量
按键
时钟
更多
结果
语句
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
普洱法院网络安全宣传
苏州网络安全事件
主流开发架构和服务器
知名的网络安全会议和比赛
傅里叶红外图数据库
js上传附件到服务器
数据库图片批导出工具
驻马店网络技术产品介绍
山西精英网络技术服务计划表
有口皆碑的软件开发公司
宜良正规软件开发价格走势
网络安全公司服务器
对峙2服务器切换
无法打开服务器
数据库 数据发布
l4d2服务器管理员
重庆旅游团软件开发
ibm 服务器分类
成都市网络安全保卫支队大队
宝马数据库对照表
企业应该怎么样管理香港服务器呢
哪个数据库可以查港股
华为 硬件还是 软件开发
对日软件开发周报模板
blast所用的数据库
用友软件服务器名是什么
文件从客户机转移到服务器
网络安全防御技术论文
查询数据库生成二维码项目
最好的网络技术讲解