vhdl testbench实例_支持veriloghdl的工具及获取方法

vhdl testbench实例_支持veriloghdl的工具及获取方法VHDL与VerilogHDL的Testbench模板一般而言,一个testbench需要包含的部分如下:(1)VHDL:entity和architecture的声明;Verilog:moduledeclaration(2)信号声明(3)实例化待测试文件(4)提供仿真激励其中第(4)步是关键所在,需要完成产生时钟信号,以及提供激励信号两个任务。VHDLTestbench中产生…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

VHDL与VerilogHDL的Testbench模板

一般而言,一个testbench需要包含的部分如下:
(1)VHDL:entity 和 architecture的声明;Verilog:module declaration
(2)信号声明
(3)实例化待测试文件
(4)提供仿真激励
其中第(4)步是关键所在,需要完成产生时钟信号,以及提供激励信号两个任务。

VHDL Testbench中产生时钟信号的两种方法

首先要在信号声明部分,定义一个constant如下:

constant clk_period:TIME:=10ns;
  1. 方法一
clk<= not clk after clk_period/2;
  1. 方法二
	process 
	begin 
	wait for clk_period/2;
	clk<='1';
	wait for clk_period/2;
	clk<='0';
	end process;

其次激励信号生成语法也利用wait for语句产生即可

	process
	begin 
	  rst_n<='0';
	  en<='0';
	  wait for(clk_period*30);
	  rst_n<='1';
	  wait for(clk_period*30);
	  en<='0';
	  wait;
	end process;

Testbench模板

首先写了一个简单二分频电路作为待测试文件如下:

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;

entity two_Divider is 
port(
     clk    :  in std_logic;
	  rst_n  :  in std_logic;
	  clkout :  out std_logic
);
end entity two_Divider;

architecture behav of two_Divider is 
signal clkout_temp  :  std_logic:='0'; 


begin 
    process(clk,rst_n)
    begin 
	 if(rst_n='0')then 
		 clkout_temp<='0';
	 elsif(clk'event and clk='1')then 
	    clkout_temp<=not clkout_temp;
	 end if ;
	 clkout<=clkout_temp;
	 end process;
end behav;
    	 

这里为了验证之前两种产生时钟的方法,特生成了两个时钟,编写testbench如下:

library ieee;
use ieee.std_logic_1164.all;

entity two_Divider_tb is 
end entity;

architecture behav of two_Divider_tb is 
component two_Divider  
port(
     clk    :  in std_logic;
	  rst_n  :  in std_logic;
	  clkout :  out std_logic
);
end component;

signal clk       : std_logic:='0'; --初始化,否则仿真结果中可能出现高阻态
signal rst_n     : std_logic;
signal clkout    : std_logic;
signal clk1      : std_logic:='0';
constant clk_p1:TIME:=10ns;
constant clk_p2:TIME:=10ns;

begin 

   --实例化待测试文件
	instant:two_Divider port map(clk=>clk ,rst_n=>rst_n,clkout=>clkout); 
	
	--方法一产生时钟
	clk1<= not clk1 after clk_p2/2;
	
	--方法二产生时钟
	process 
	begin 
	wait for clk_p1/2;
	clk<='1';
	wait for clk_p1/2;
	clk<='0';
	end process;
	
	--提供激励信号
	process
	begin 
	  rst_n<='0';
	  wait for(clk_p1*30);
	  rst_n<='1';
	  wait;
	end process;
end behav;
	

仿真结果如下:

在这里插入图片描述
与理论分析一致

Verilog编写testbench与VHDL大同小异,附一个testbench如下:


`timescale 1ns/1pstestbench

module my_tb;
 
reg datain,clk,rst,clk1; //对DUT而言,输入定义为reg型
wire q;                  //对DUT而言,输出定义为wire型

parameter clock_period=10;
parameter clock_period1=20;

DUT u1(.datain(datain),.rst(rst),.clk(clk), .q(q));//调用待测试程序

initial   //产生时钟方法一
begin 
   clk1 = 1'b1;
	forever clk1=#(clock_period1/2) ~clk1;
end 
	
initial clk = 1'b1;   //产生时钟方法一
	always #(clock_period/2)clk=~clk;	

//初始化,激励信号产生
initial
begin

	
	datain   = 1'b0;
	rst = 1'b0;
	
	
	#(clock_period*10) rst = 1'b1;
	#(clock_period*10) datain = 1'b1;
	                         
end
 

endmodule
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/193046.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 重装系统后oracle数据库还原_重装系统后管家婆数据库恢复

    重装系统后oracle数据库还原_重装系统后管家婆数据库恢复以下http://database.51cto.com/art/201011/233460.htm  1、首先,将原来的ORACLE文件夹改名,原来的路径是D:/oracle。我暂时改成D:/oracle_old。找来ORACLE(我用的是ORACLE9I)安装光盘,将ORACLE安装在原来安装的目录下,这样恢复起来更加方便,主要是注册表的内容不用修改。2、安装完了之后,系统中又

    2022年10月21日
    2
  • opkg[通俗易懂]

    opkg[通俗易懂]opkg是个安装器,小巧,功能全。root@hbg:/#opkgfilesopkgPackageopkg(9c97d5ecd795709c8584e972bfdf3aee3a5b846d-7)isinstalledonrootandhasthefollowingfiles:/bin/opkg–命令存放地/etc/opkg.conf…

    2022年4月28日
    80
  • 【记录】mac使用PyCharm中Python版本不对应的解决方法

    【记录】mac使用PyCharm中Python版本不对应的解决方法在使用PyCharm进行tensorflow学习时,发现mac中还有Python2.7的旧版本,并且说明建议使用新版本。经过搜索以及多个方法的试错,突然发现我用的是macOSBigSur,而惊喜的是已经出的新版本macOSMonterey已经把Python2.7移除了,也许是因为这个原因,在安装了Monterey后,就可以非常顺利的使用Python3.7以及anaconda和tensorflow2.0了。然而在之后的一天我使用anaconda运行py程序时发现了这个问题:Process

    2022年8月27日
    6
  • 地图API地址  百度地图开放平台

    地图API地址  百度地图开放平台

    2021年9月18日
    67
  • pycharm软件界面设置与配置[通俗易懂]

    pycharm软件界面设置与配置[通俗易懂]pycharm软件界面设置与配置pycharm软件介绍:基于eclipse开发的开源软件,适用于整体开发较大项目。负责繁琐的工作细节,节省宝贵的时间,善用以键盘操作为主的编程方法,pycharm完全理解代码的每个面向,依靠它的智能化代码补全,实时检查和快速修复等功能,轻松进行项目导航。其有以下优点:集成python需要的模块,方便开发;语法高亮,快速识别代码,方便开发;代码提示。搭建pycharm软件的开发环境:首先安装JDK(JDK是整个java开发的核心,它包含了JAVA的运行环

    2022年8月29日
    2
  • SNMP协议具体解释

    SNMP协议具体解释

    2021年12月3日
    157

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号