1
编程语言及工具
VHDL语言testbench仿真的例子如下:
1.源代码
--六进制计数器的代码
Library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity cnt6 is
port
(clr,en,clk :in std_logic;
q :out std_logic_vector(2 downto 0)
);
end entity;
architecture rtl of cnt6 is
signal tmp :std_logic_vector(2 downto 0);
begin
process(clk)
-- variable q6:integer;
begin
if(clk‘event and clk=’1‘) then
if(clr=’0‘)then
tmp《=“000”;
elsif(en=’1‘) then
if(tmp=“101”)then
tmp《=“000”;
else
tmp《=unsigned(tmp)+’1‘;
end if;
end if;
end if;
q《=tmp;
-- qa《=q(0);
-- qb《=q(1);
-- qc《=q(2);
end process;
end rtl;
2,testbench代码
Quartus II 可以自动生成testbench代码固定格式。
如果自己不想写这些testbench的这些固定格式,可以在quartus里自动生成testbench文件的模板,然后往里面写信号就行了
步骤:processing-》start-》starttest bench template write
这里需要注意的是要在仿真选项里选择一个仿真工具,然后才会生成testbench
-- 六进制计数器testbench的代码
library ieee;
use ieee.std_logic_1164.all;
entity cnt6_tb is
end cnt6_tb;
architecture rtl of cnt6_tb is
component cnt6
port(
clr,en,clk :in std_logic;
q :out std_logic_vector(2 downto 0)
);
end component;
signal clr :std_logic:=’0‘;
signal en :std_logic:=’0‘;
signal clk :std_logic:=’0‘;
signal q :std_logic_vector(2 downto 0);
constant clk_period :time :=20 ns;
begin
instant:cnt6 port map
(
clk=》clk,en=》en,clr=》clr,q=》q
);
clk_gen:process
begin
wait for clk_period/2;
clk《=’1‘;
wait for clk_period/2;
clk《=’0‘;
end process;
clr_gen:process
begin
clr《=’0‘;
wait for 30 ns;
clr《=’1‘;
wait;
end process;
en_gen:process
begin
en《=’0‘;
wait for 50ns;
en《=’1‘;
wait;
end process;
end rtl;
在VHDL程序中,实体(ENTITY)和结构体(ARCHITECTURE)这两个基本结构是必须的,他们可以构成最简单的VHDL程序。通常,最简单的VHDL程序结构中还包含另一个最重要的部分,即库(LIBRARY)和程序包(PACKAGE)。
1.实体
1.1功能:
对这个设计实体与外部电路进行接口描述
1.2常用语句结构
entity 实体名 is
[generic (类属表); ]
[port ( 端口表 );]
end entity 实体名;
1.3实体名
一个设计实体无论多大和多复杂,在实体中定义的实体名即为这个设计实体的名称。在例化(已有元件的调用和连接)中,即可以用此名对相应的设计实体进行调用。
1.4generic类属说明语句
类属(generic)参量是一种端口界面常数,常以一种说明的形式放在实体或块结构前的说明部分,书写格式如下:
1 generic ( [ 常数名 : 数据类型 [ : 设定值] ] ) 2 { ; 常数名 : 数据类型 [ : 设定值] };
1.4端口说明
实体端口说明的一般书写格式如下:
1 port ( 端口名 : 端口模式 数据类型 ; 2 { 端口名 : 端口模式 数据类型 } );
2.结构体
2.1功能
结构体是实体所定义的设计实体中的一个组成部分。结构体描述设计实体的内部结构和/或外部设计实体端口间的逻辑关系。
2.2组成
对数据类型、常数、信号、子程序和元件等元素的说明部分。
描述实体逻辑行为的,以各种不同的描述风格表达的功能描述语句,它们包括各种形式的顺序描述语句和并行描述语句。
以元件例化语句为特征的外部原件(设计实体)端口间的连接方式。
2.3结构体的一般语言格式
1 architecture 结构体名 of 实体名 is
2 [说明语句]
3 begin
4 [功能描述语句]
5 end architecture 结构体名;
小编推荐阅读:
全部0条评论
快来发表一下你的评论吧 !