实例解读Testbench编写方法.docx_第1页
实例解读Testbench编写方法.docx_第2页
实例解读Testbench编写方法.docx_第3页
实例解读Testbench编写方法.docx_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实例解读Testbench编写方法前言:在进行quartusII设计时,不少人刚开始觉得仿真极其不方便,还需要编写测试文件,浪费时间精力。不过小编想告诉大家,其实testbench编写很容易学,不外乎wait for 语句的堆叠就可以了,至于高深的用法,对一般程序都涉及不到,没必要弄得那么复杂。下面看看实例吧,将详细说明testbench的编写:我们可以通过Quartus自动生成一个Testbench的模板,选择Processing - Start - Start Test Bench Template Writer,等待完成后打开刚才生成的Testbench,默认是保存在simulationmodelsim文件夹下的.vt格式文件。打开vt文件后可以看到Quartus已经为我们完成了一些基本工作,包括端口部分的代码和接口变量的声明,我们要做的就是在这个做好的模具里添加我们需要的测试代码。一个最基本的Testbench包含三个部分,信号定义、模块接口和功能代码。timescale 1ns/ 1ps表示仿真的单位时间为1ns,精度为1ps。想要进行仿真首先要规定时间单位,而且最好在Testbench里面统一规定时间单位,而不要在工程代码里定义,因为不同的模块如果时间单位不同可能会为仿真带来一些问题,而timescale本身对综合也就是实际电路没有影响。其实Testbench本身可以看做一个模块或者设备(本例中的模块名为add_vlg_tst),和你自己编写的模块进行通信。通过Testbench模块向待测模块输出信号作为激励,同时接收从待测模块输出的信号来查看结果。因此,在待测模块中的reg型信号在Testbench中就变成了wire,待测模块中的wire型信号在Testbench中则对应为reg型。那么inout怎么办呢,inout型信号也要设成wire,同时要用一个reg型信号作为输出寄存器,同时设置一个三态门,由一个使能信号控制,如:assigninout_sig = out_en ? out_reg : 1bz;处理完接口和声明之后,需要自己设置一些激励信号,激励信号的内容就是肯能会输入到待测模块中的波形。下面我们就来写一个简单的测试程序。实例:60进制计数器源代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity cnt60 is port( clk,reset:in std_logic; p:out std_logic_vector(3 downto 0); q:out std_logic_vector(3 downto 0) );end cnt60;architecture arch of cnt60 is signal cp:std_logic;signal m:std_logic_vector(3 downto 0);signal n:std_logic_vector(3 downto 0);begin p_1:process(reset,clk)begin if (reset=1) then m=0000; else if (clkevent and clk=1) then if (m=1001) then m=0000; else m=m+0001; end if; end if; end if; end process p_1;cp=m(3) and m(0);p_2:process(clk,reset)begin if (reset=1) then n=0000;else if(clkevent and clk=1) then if (cp=1) then if (n=0101) then n=0000; else n=n+0001; end if;end if; end if;end if;end process p_2;p=m(3)&m(2)&m(1)&m(0);q clk,p = p,q = q,reset = reset);p_reset : PROCESS BEGIN reset=0; wait for 10 ns; reset=1; wait for 10 ns; reset=0; WAIT; END PROCESS p_reset;p_clk : PROCESS BEGIN wait for 1 ns; clk=1; wait for 1 ns; clk=0; END PROCESS p_clk; END cnt60_arch;根据生成的模板,只需改动红色字体部分。该部

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论