大多数硬件设计人员对verilog的testbench比较熟悉,那是因为verilog被设计出来的目的就是为了用于测试使用,也正是因为这样verilog的语法规则才被设计得更像C语言,而verilog发展到后来却因为它更接近C语言的语法规则,设计起来更加方便,不像VHDL那也死板严密,所以verilog又渐渐受到硬件设计者们的青睐。但其实VHDL在最开始也是具有测试能力的,而且它的语法严密,但我们同样可以用它来编写我们的测试文件。

下面以一个8bit计数器为例子给出个简单的testbench模板及注释:

通过编写testbench来仿真和通过拖波形来仿真,最大的好处就是,当测试数据无比庞大时,可以简易得通过testbench中的算法来实现,而另一个更为重要的方面就是,可以通过testbench对数据文件进行读写操作,从而简化我们的仿真工作。

首先介绍下时间控制语句——wait:(其实wait语句是通过控制仿真的两种状态——执行和挂起,来控制时间的)

1.wait——无线等待;语法【wait;】,类似于Verilog中的¥Stop

2.wait on——敏感信号量变化;语法【wait on 信号;】,表示当信号发生变化的时候,仿真开始继续执行,从而结束挂起状态

3.wait until——条件满足;语法【waituntil 表达式】,表达式为一个布尔表达式,表示当表达式为“真”时,仿真继续执行,结束挂起状态

4.wait for——时间控制;语法【waitfor 时间表达式】,例:【wait for 30ns;】

VHDL也提供了文件I/O的操作,以下简单介绍在我们大部分情况下如何通过VHDL来进行文件操作。

file类型:文件句柄,用于定义文件。语法1【file 文件变量名:text is 读取或者写入类型 “文件名”;】text——文件类型为文本类型,读取类型为in,写入类型为out;语法2【file 文件变量名:text;】只是定义了文件变量名,并没有给赋予初值。

用第二种方式定义文件变量则需要用到函数file_open();语法【file_open(文件状态指示,文件变量,“文件名”,读写状态);】如上图实例。

LINE类型:如下图,为std库中TEXTIO文件中的定义

LINE 为存取类型的变量,它表示该变量是指向字符串的指针,它是TEXTIO 中所有操作的基本单元。读文件时,先按行(LINE)读出一行数据,再对LINE 操作来读取各种数据类型的数据;写文件时, 先将各种的数据类型组合成LINE,再将LINE 写入文件。在用户使用时, 必须注意只有变量才可以是存取类型, 而信号则不能是存取类型。

TEXTIO还定义了一些基本的文件操作过程:

【READLINE(文件变量,行变量);】从指定的文件中读取一行。

【READ(行变量,数据变量);】从一行中读取一个数据。

【WRITELINE(文件变量,行变量);】将行变量中数据写入到指定文件。

【WRITE(行变量,数据变量);】将数据写入到一行中。

【WRITE(行变量,数据变量,起始位置,字符数);】比上个过程多了起始位置和字符数的指定。

上图事例为循环从数据文件中读取出数据,赋值给信号量。

上图事例为了说明行变量与各个变量之间的转换,行变量可与任何变量类型进行转换,并且原样输出到指定文件中。

另外再推荐个语句:ASSERT——断言语句。它和VC中的_TRACE语句一样,在调试程序中非常有用非常方便。

assert是一个调试仿真时的专用语法,他可以判断一个boolean变量,如果该变量为假就输出一个用户指定的信息到终端(控制台),用户可以附带输出信息的严格等级,从低到高依次是:note,warning,error,failure,可以让用户区分信息的类型。同样assert语句也是不能被综合的。

assert可以是同步语句(在process外),此时assert后面的任何变量变化都会引起assert语句判断一次。assert还可以是顺序语句,此时assert存在于process中。

testbench实例 vhdl_VHDL的testbench的编写相关推荐

  1. FPGA学习笔记(五)Testbench(测试平台)文件编写进行Modelsim仿真

    系列文章目录 一.FPGA学习笔记(一)入门背景.软件及时钟约束 二.FPGA学习笔记(二)Verilog语法初步学习(语法篇1) 三.FPGA学习笔记(三) 流水灯入门FPGA设计流程 四.FPGA ...

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

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

  3. Vue开发实例(07)之编写头部页面

    作者简介 作者名:编程界明世隐 简介:CSDN博客专家,从事软件开发多年,精通Java.JavaScript,博主也是从零开始一步步把学习成长.深知学习和积累的重要性,喜欢跟广大ADC一起打野升级,欢 ...

  4. shell实例第1讲:编写shell脚本注意事项

    编写shell前需要注意以下几点,注意点会不断更新. 1.开头加解释器:#!/bin/bash 2.语法缩进,使用四个空格 3.多加注释说明 4.命名建议规则:变量名大写.局部变量小写,函数名小写,名 ...

  5. python游戏脚本实例-Python使用pygame模块编写俄罗斯方块游戏的代码实例

    文章先介绍了关于俄罗斯方块游戏的几个术语. 边框――由10*20个空格组成,方块就落在这里面. 盒子――组成方块的其中小方块,是组成方块的基本单元. 方块――从边框顶掉下的东西,游戏者可以翻转和改变位 ...

  6. c语言编写日历作业,C实例编程(用C语言编写的一个日历文件)

    #includetypedef strUCt { unsigned char day; unsigned char month; unsigned short year; }T_MFW_DATE; t ...

  7. Testbench编写指南(1)基本组成与示例

    对于小型设计来说,最好的测试方式便是使用TestBench和HDL仿真器来验证其正确性.一般TestBench需要包含这些部分:实例化待测试设计.使用测试向量激励设计.将结果输出到终端或波形窗口便于可 ...

  8. Vivado中Testbench模板(自用)

    1.背景         从ISE切换到Vivado后,一直不习惯该软件的仿真方式.因为有个大麻烦,软件无法自动生成testbench用例.即使网上有VScode搭配插件进行自动生成Testbench ...

  9. Vivado fifo IP 完整例程(包括testbench)

    网上尽管有各种介绍fifo的文章,但大部分没有一个完整的例程来练习,这里给出能够完整演示的fifo例程和仿真分析.工程文件虽然部分基于xilinx的官方例程,但官方例程没有testbench,这部分是 ...

  10. mapreduce编程实例python-Python编写MapReduce作业的简单示例

    这篇文章主要为大家详细介绍了Python编写MapReduce作业的简单示例,具有一定的参考价值,可以用来参考一下. 对python这个高级语言感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看 ...

最新文章

  1. 【Java源码分析】HashTable源码分析
  2. CentOS 搭建内部Yum源同步阿里Yum源
  3. php+mysql+apache 环境搭建
  4. php是什么电荷,科学网—蛋白质的表面静电势、ζ-电位和表面电荷 - 朱俊向的博文...
  5. java编写一个整钱换零_Java编写钱币转换为大写程序
  6. 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则
  7. 好看的vscode字体
  8. Ubuntu下利用python实现自动打卡系统全过程
  9. 摩尔庄园手游服务器链接不稳定,摩尔庄园手游公测常见问题解决方法一览
  10. 使用plsql登陆oracle数据库,使用PLSQL 创建Oracle数据库用户
  11. 基于stm32的简单车牌识别原理
  12. RTP直播分发服务器集群方案
  13. 在固定宽高内显示固定数量的最大正方形
  14. 5G业务测试方法与验证
  15. 服务器跑项目,如何使用远程服务器跑项目
  16. 自学python后自己接单-详解 | Python学多久才能独立接单赚钱?一个月足够了!
  17. Linux/ubuntu深度学习,查看cuda、cudnn、显卡、驱动的版本的命令
  18. 9_1 法律法规标准化
  19. Java8——Stream流
  20. 安徽省全省计算机水平考试成绩查询时间,2021年安徽省计算机等级考试分数公布时间|成绩查询入口...

热门文章

  1. 2010nbsp;贱语大全!
  2. mmap 通过地址映射读写文件
  3. java 表头固定_固定表头在快逸报表中的设定
  4. 好用的json格式化网址
  5. Chrome 大版本更新来了,这是一次「史诗级」增强
  6. 基于R lavaan 进行SEM分析总结
  7. How to make an app
  8. BISS绝对值编码器_TI方案_线路延迟补偿
  9. Java程序设计基础笔记 • 【第7章 Java中的类和对象】
  10. GIMP教程 4 图层