zoukankan      html  css  js  c++  java
  • verilog testbench 浅析

          早上看了《精通Verilog》,一节课看了八十多页的,所以说并不是精读的,对于我这种半路出家接手verilog语言的人来说,现在看看基本的语法倒是觉得受益匪浅。以前上课学习了VHDL后,马上转向Verilog,倒是没有什么困难。当然这只是把一种语言翻译成另外的语言,但在现在看来是远远不够的,事实是Verilog支持的不只是把VHDL翻译过来就完事的。翻译只是完成了在QUARTUS II里面提供综合的语句,但是Verilog的灵活性并不会在quartus II里面体现的,如果有较好的Verilog语法基础的人应该知道它支持的大量系统函数和任务,在quartusII里面做设计的时候我们并不会使用到这些系统函数和任务的,就连简单的延时语句都不会用到,那么这些语句设计出来并不是为了综合的,他们的目的就是仿真,也就是编写testbench的。

           昨天看了一个晚上的testbench编写,总是感觉似懂非懂的样子,原因之一是我没有扎实的Verilog基础,对程序里面的initial 语句总是感觉很难接受,或许是再VHDL语法中很难找到对应的语句来帮助学习吧。今天看了基础的语法书后,对整个testbench的理解就比较透彻了。Teshtench是一个完整的Verilog程序(当然也有VHDL写得testbench,我这里所说的只是针对Verilog的),由quartus II生产的testbench模板是已经例化好了的,我忽视了例化,就把整个程序理解不清了。简单的说,整个testbench程序把我们写得将要综合的语句和自己写得激励程序组合到一起。这里modelsim就像是个FPGA了,模块例化就像我们把程序下载到了这块板子中,而自己写得激励信号就像在完成各个信号的输入,这个概念在所有的仿真中都可以这么理解的。

         这样对testbench的编写就可以有了很感性的认识了,接下来就是对teshbench文本的理解了。首先知道所有iniaial语句从一开始就开始顺序执行,所有的foever和always语句都是反复循环执行。我们用循环语句产生周期性信号,如时钟信号。在initial语句中利用延时语句如#1000进行相对时间操作,如在5时刻复位信号撤销,计数器开始计数,利用#10在15时刻使清零信号有效,对计数器清零。 当然在testbench中可以调用大量的系统函数和任务,来完成显示和调用文本,这算是对testbench的深入理解操作了,我只是完成了对testbench的初级的认识。

  • 相关阅读:
    计算机专业找工作注意什么
    LU分解
    HDU2050
    牛牛与字符串border 题解(gcd)
    牛牛与交换排序 题解(双端队列模拟区间反转)
    动态最小生成树 题解(线段树+归并排序)
    系数 题解(lucas+思维)
    D. Dogeforces 题解(并查集+构造)
    Java 入土基础
    E. AZ Graph 题解(思维)
  • 原文地址:https://www.cnblogs.com/michile/p/2258454.html
Copyright © 2011-2022 走看看