实例化DUT-Design Under Test

为DUT产生激励波形

产生参考输出,并将DUT的输出与参考输出进行比较

提供测试通过或失败的指示

TestBench产生激励的三种方式:

直接在testbench中产生

从矢量中读入

从单独的激励文件中读入

比较流行的做法是使用matlab产生激励文件,由testbench读入该激励文件并将激励馈送到DUT,DUT产生的相应输出以文件的形式存储,由matlab读取并与理想的响应作比较。

下面以一个简单的同步加法器为例,分析不同形式的testbench的写法。

1. 简单的TestBench

简单的testbench只适合于相对比较简单的设计。如图1-1所示,在testbench中只是简单的实例化了一个DUT,激励在testbench中产生。可见这种方式的testbench可重用性比较差。

图1-1 简单的testbench

图1-2 DUT VHDL代码

简单的testbench代码如图1-3所示。

图1-3 简单的testbench 代码

仿真结果如图1-4所示。

图1-4 仿真结果

2. 具有独立激励源的testbench

将激励源作为一个文件在testbench中进行实例化,比较适合于具有复杂输入和简单输出的设计。如图2-1所示。

图2-1 具有独立激励源的testbench

在本例中,DUT的激励源为一个计数器。相应的VHDL代码如下:

图2-2 激励源代码

编写完成激励源的VHDL码后,还需要在testbench中进行实例化,方法与实例化DUT的方法一致。相应的testbench代码如下:

图2-3 具有独立激励源的testbench代码

3. 使用TextIO的testbench

当设计的输入输出都比较复杂时,尤其是在做复杂的算法仿真时,需要产生多种形式的激励输入,还要对仿真结果输出做复杂的分析时,使用TextIO的testbench具有最高的效率。在使用TextIO的testbench中,为DUT从输入文件读取激励输入,激励信号经过DUT处理后写入到输出文件中。其原理如图3-1所示。

图3-1 使用TextIO的testbench原理框图

在本例中,我们将Matlab产生的两个激励输入文件加载到testbench中,在输入到DUT之前先进行类型转换,然后按照时钟节拍将数据一个一个的加载到DUT的输入端口,再按照时钟节拍从DUT输出端口将数据写入到输出文件,当然在写入输入文件之前也要先进行类型转换。如图3-2所示。

图3-2 针对本例的testbench原理框图

Matlab产生加法器两个输入激励的代码如下,激励输入为范围在0~7之间的随机数,最后保存到txt文件中供testbench读取。

图3-3 激励产生m代码

使用TextIO的testbench代码如下:

图3-4 testbench代码

仿真结果如图3-5所示。

图3-5 仿真结果

下面我们对于如何在TestBench中使用TextIO做一个小结。

(1).首先需要声明TextIO的包集

(2).然后在process中声明输入、输出文件

(3).接着声明读写文件的行变量

(4).再声明用于保存行变量中值的数据变量

(5).最后进行文件的读写,在读文件之前需要判断文件是否已经被读到末尾。读文件时,先从文件中按行读出一行数据,再将行中的数据读到数据变量中。写文件时,先将数据变量组合成一行,再将行变量中的数据写入文件。需要注意的是只有variable型才是文件存取类型,不能使用signal型。

TextIO包集中定义了一些常用的文件操作过程:

readline(file_var, line_var);

--用于从文件file_var中读取一行数据保存到line_var中

read(line_var, data_var);

--用于从line_var中读取数据保存到data_var中

writeline(file_var, line_var);

--用于将line_var写入到file_var中

write(line_var, data_var);

--用于将data_var写入到line_var中

endfile(file_var)

--判断file_var是否已经到文件末尾

4. Ref

[1] TKT-1210 Digital design Ⅱ,Lect5 VHDL Test Bench

testbench实例 vhdl_VHDL TestBench基础(转)相关推荐

  1. PHP开发实例大全(基础卷) 适合菜鸟新手学习

    <PHP开发实例大全(基础卷)>筛选.汇集了PHP开发从基础知识到高级应用各个层面的大量实例及源代码,共有600个左右,每个实例及源代码按实例说明.关键技术.设计过程.详尽注释.秘笈心法的 ...

  2. Python 实例教学_01_基础语法

    Python 实例教程 教学方法 课前准备 要求 Python 实例教学_01_基础语法 [Python 教学](https://blog.csdn.net/weixin_43955170/categ ...

  3. testbench实例 vhdl_学写 Testbench --- 结构篇VHDL实例

    testbench.v: ---------------------------------------------------------------------- // // File heade ...

  4. matlab基础与实例教程,MATLAB基础与实例教程

    系统全面,实例丰富 考虑到Matlab进行仿真和运算分析时的基础知识和实践操作,讲解从基础的变量.函数.数据类型等入手,涉及到数学分析.图形可视化.Simulink仿真.文件读写等,全面地介绍了Mat ...

  5. redis实例python_生产消费者模式与python+redis实例运用(基础篇)

    根据这个图,我们举个简单的例子:假如你去某个餐厅吃饭,点了很多菜,厨师要一个一个菜的做,一个厨师不可能同时做出所有你点的菜,于是你有两个选择:第一个,厨师把所有菜都上齐了,你才开始吃:还有一个选择,做 ...

  6. python经典程序实例-Python简单基础小程序的实例代码

    1 九九乘法表 for i in range(9):#从0循环到8 i += 1#等价于 i = i+1 for j in range(i):#从0循环到i j += 1 print(j,'*',i, ...

  7. python简单程序实例-Python简单基础小程序的实例代码

    1 九九乘法表 for i in range(9):#从0循环到8 i += 1#等价于 i = i+1 for j in range(i):#从0循环到i j += 1 print(j,'*',i, ...

  8. vue的五个小实例解析其基础功能

    学习vue,在网上看到5个小实例,很受用.拿过来和大家一起分享,都是比较常见,基础的功能. 1.利用vue实现导航功能 <!DOCTYPE html> <html lang=&quo ...

  9. 2个点马氏距离计算实例_数据分析基础:距离度量方式(欧式距离、马氏距离、曼哈顿距离)...

    数据分析中,为了评定数据之间的相似度,有很多不同的距离的计算方法,如欧氏距离,马氏距离等等. 欧氏距离 Euclidean distance:欧几里得距离,m维空间中两个点之间的真实距离 离差平方和, ...

  10. vue结合php增删改查实例,从vue基础开始创建一个简单的增删改查的实例

    1.安装vue-clicnpm install vue-cli -g  --执行全局安装 2.创建一个webpack的基础项目:命令:vue init webpack myproject; 以下是项目 ...

最新文章

  1. 清除Squid缓存的小工具
  2. linux下的find文件查找命令与grep文件内容查找命令(转)
  3. Java TCP/IP Socket 编程 笔记
  4. 用vue实现模态框组件
  5. axure 倒计时_AxureRP教程—模拟倒计时
  6. python决策树代码解读_建模分析之机器学习算法(附pythonR代码)
  7. NumPy——生成随机数的学习笔记~
  8. 因为应用程序正在发送一个输入同步呼叫,所以无法执行传出的呼叫 -- 解决方法...
  9. Atitit 软件体系的进化,是否需要一个处理中心
  10. JavaEE 企业级分布式高级架构师(七)MongoDB学习笔记(3)
  11. duliu题之狼抓兔子题解
  12. 富士施乐Fuji Xerox DocuPrint P158 b 驱动
  13. Pycharm进入debug模式后一直显示collecting data解决方法
  14. RE写作Issue问题题库分析与提纲
  15. java反向查找dns_windows – 反向DNS查找
  16. 【小睿精选·第七期】基于STM32的DIY蓝牙机械键盘
  17. Java开发——IDEA
  18. 【大数据分析】未开先火|北京环球影城网络传播热度洞察
  19. JAVA编写文件格式转换UTF-8
  20. 李翰卿治疗小儿五更咳嗽经验

热门文章

  1. 解决ichat模块调用过程中——登录微信网页版失败的方法
  2. wxWindows Frame程序简化版
  3. wxwindows qt
  4. java中bool_java中boolean用法
  5. C#程序设计实践教程pdf
  6. Matlab 2016a 安装及破解教程
  7. 生成CFree 5.0 注册码
  8. 阿里云开发-身份证图像识别(SpringBoot)
  9. 网站快速收录-网站快速收录工具下载免费
  10. tp5 mysql 使用ignore_tp5数据库配置操作