我是靠谱客的博主 明亮流沙,最近开发中收集的这篇文章主要介绍如何写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中所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部