我是靠谱客的博主 明亮流沙,最近开发中收集的这篇文章主要介绍如何写Verilog仿真文件写testbench的可以分为两步:testbench中变量声明技巧如何在仿真时把仿真文件写到txt中,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
写testbench的可以分为两步:
①写激励(相当于硬件中的晶振等)
②例化主模块(对被测模块进行端口映射)
举例:
`timescale 1ns/1ps
module tb_led_twinkle();//tb文件不需要定义输入输出端口
//以下是激励部分代码
reg sys_clk;
reg sys_rst_n;
wire led;
initial begin //initial语句只在程序开始时执行一次
sys_clk=0;
sys_rst_n=0;
#200 sys_rst_n=1;
end
//这是一个周期20ns的时钟
always
#10 sys_clk=~sys_clk;
//以下是例化主模块部分
led_twinkle u_led_twinkle(
.sys_clk (sys_clk),
.sys_rst_n (sys_rst_n),
.led (led)
);
endmodule
testbench中变量声明技巧
在编写Testbench代码中变量声明是为被测试模块提供对应接口,与被测试模块端口对应即可。
注意: 与被测模块输入端口对应的变量应该声明为reg类型,因为reg类型可以存储数据,为被测模块提供激励;与被测模块输出端口对应的变量应该声明为wire类型,即通过wire来引出被测模块的输出
如何在仿真时把仿真文件写到txt中
在仿真时,有时我们需要看一下仿真产生的结果是否正确。如果直接从vivado的仿真窗口看仿真波形,则比较难看出仿真结果是否正确,这时我们可以将仿真结果写到txt文件中,然后在matlab中读取txt文件即可比较方便的查看仿真结果。
这里用到verilog中的两个系统函数:$fopen 和 $fdisplay
- verilog 仿真代码
`timescale 1ns / 1ps
module tb_pn_code();
reg rc_clk ;
reg rst ;
wire pn ;
initial begin
rst=1;
rc_clk=0;
#200
rst=0;
end
always #10 rc_clk=~rc_clk;
pn_code u_pn_code(
.rc_clk(rc_clk),
.rst (rst ),
.pn (pn )
);
//------------------将仿真结果写入txt文件-----------------------//
integer pn_code_file;
initial begin
pn_code_file=$fopen("G:/graduation_project/verilog/project_bpsk/bpsk_dsss/bpsk_dsss.srcs/txt/pn_code.txt");
end
always@(posedge rc_clk)begin
if(~rst)
$fdisplay(pn_code_file,"%d",pn);
end
endmodule
- matlab中读取txt文件
clear
clc
load('G:graduation_projectverilogproject_bpskbpsk_dsssbpsk_dsss.srcstxtpn_code.txt');
注意:
① 在$fopen函数中写地址时,用的斜杠的方向"/",这里与matlab中不同
② 每次仿真都会清空txt然后重新写入
最后
以上就是明亮流沙为你收集整理的如何写Verilog仿真文件写testbench的可以分为两步:testbench中变量声明技巧如何在仿真时把仿真文件写到txt中的全部内容,希望文章能够帮你解决如何写Verilog仿真文件写testbench的可以分为两步:testbench中变量声明技巧如何在仿真时把仿真文件写到txt中所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复