我是靠谱客的博主 明亮流沙,这篇文章主要介绍如何写Verilog仿真文件写testbench的可以分为两步:testbench中变量声明技巧如何在仿真时把仿真文件写到txt中,现在分享给大家,希望可以做个参考。

写testbench的可以分为两步:

①写激励(相当于硬件中的晶振等)
②例化主模块(对被测模块进行端口映射)

举例:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
`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 仿真代码
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
`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文件
复制代码
1
2
3
4
clear clc load('G:graduation_projectverilogproject_bpskbpsk_dsssbpsk_dsss.srcstxtpn_code.txt');

注意:
① 在$fopen函数中写地址时,用的斜杠的方向"/",这里与matlab中不同
② 每次仿真都会清空txt然后重新写入

最后

以上就是明亮流沙最近收集整理的关于如何写Verilog仿真文件写testbench的可以分为两步:testbench中变量声明技巧如何在仿真时把仿真文件写到txt中的全部内容,更多相关如何写Verilog仿真文件写testbench内容请搜索靠谱客的其他文章。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部