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的初级的认识。

  • 相关阅读:
    Different AG groups have the exactly same group_id value if the group names are same and the ‘CLUSTER_TYPE = EXTERNAL/NONE’
    An example of polybase for Oracle
    use azure data studio to create external table for oracle
    Missing MSI and MSP files
    You may fail to backup log or restore log after TDE certification/key rotation.
    Password is required when adding a database to AG group if the database has a master key
    Use KTPASS instead of adden to configure mssql.keytab
    ardunio+舵机
    android webview 全屏100%显示图片
    glide 长方形图片显示圆角问题
  • 原文地址:https://www.cnblogs.com/michile/p/2258454.html
Copyright © 2011-2022 走看看