如何写testbench的verilog代码
发表于:2024-11-30 作者:千家信息网编辑
千家信息网最后更新 2024年11月30日,如何写testbench的verilog代码,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。使用的FPGA开发板:xilinx KC7
千家信息网最后更新 2024年11月30日如何写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安全错误
数据库的锁怎样保障安全
软件开发原型图用什么做
网络安全小标语五个字
理服务器
数据库设置默认表空间
数据库的定义及意义
域文件服务器安全策略
数据库中有哪几种表
view安全服务器端口
苹果服务器不可信任怎么解决
公共基础信息数据库
最有价值的网络安全书籍
软件开发公司占股多少
远程服务器登录需要密码
没有找到安全管理服务器
庐江品质网络技术咨询介绍
网络安全架构冗余设计
autox安途公司 服务器
永州市网络安全培训
数据库的内存和磁盘大小吗
西城区技术软件开发介绍
乡镇网络安全职责
对软件开发的认知
汽车选号软件开发
数据库 更新丢失
保定网络技术服务有限责任公司
学校网络安全说明
机器人与软件开发
装机模拟器能装服务器吗
电脑的总服务器在哪里
江西省中小学网络安全答题