您的位置 首页 分销

关于testbench在FPGA编程中的技巧

关于testbench在FPGA编程中的技巧-定义信号类型:原来模块中的输入信号,定义成reg 类型,原来模块中的输出信号,定义为wire类型,但这里有个问题,如果在testbench中本身有一个模块需要,如用来产生时钟,送给要仿真的模块,那怎么定义信号类型呢?

1、时刻标尺:格局:`timescale 仿真时刻单位/时刻精度,举例:`TImescale 1ns/100ps,仿真时刻单位位1ns,可是仿真时刻精度能够到达100ps。

我们应该注意到有个#符号,该符号的意思是指推迟相应的时刻单位。该时刻单位由TImescale决议.一般在testbench的最初界说时刻单位和仿真精度,比方`TImescale 1ns/1ps,前面一个是代表时刻单位,后边一个代表仿真时刻精度。以上面的比如而言,一个时钟周期是20个单位,也便是20ns。而仿真时刻精度的概 念便是,你能看到1.001ns时对应的信号值,而假设TImescale 1ns/1ns,1.001ns时分的值就无法看到。

2、界说信号类型:本来模块中的输入信号,界说成reg 类型,本来模块中的输出信号,界说为wire类型,但这儿有个问题,如果在testbench中自身有一个模块需求,如用来发生时钟,送给要仿真的模块,那怎样界说信号类型呢?

其实仍是相同的界说,输入信号界说为reg类型,输出界说为wire类型,可是这个模块的输出送给仿真模块作输入,这个输入便是wire类型了,如下图所示的clk_d1和clk_d2这两个信号就只能界说为wire类型。

关于testbench在FPGA编程中的技巧

3.文件的输入测验数据

有时分,需求很多的数据输入,直接赋值的话比较繁琐,能够先生成数据,再将数据读入到寄存器中,需求时取出即可。用 $readmemb体系使命从文本文件中读取二进制向量,$readmemh 用于读取十六进制文件。例如:reg [7:0] mem[0:255] // 一个8bit位宽,长度256的寄存器组initial $readmemh ( “E:/readhex/mem.dat”, mem ) // 将.dat文件读入寄存器组mem中initial $readmemh ( “E:/readhex/mem.dat”, mem, 128, 1 ) // 参数为寄存器加载数据的地址开端和完毕。

4. 仿真成果写入文件

用函数 $fwrite ($fdisplay),函数功用,将数据写入到txt文件中(与fscanf正好相反)。$fwrite和$fdisplay的差异,$fwrite写下一个数不会主动转行,能够加\n来转行,$fdisplay则会主动转行。这儿只介绍$fwrite了,$fdisplay和$fwrite根本相同的写法。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/fenxiao/340668.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部