《VHDL程序基本结构》PPT课件.ppt
第二章第二章 VHDL程序基本结构程序基本结构材料与能源学院微电子材料与工程系材料与能源学院微电子材料与工程系第二章第二章 VHDL程序基本结构程序基本结构2-1 VHDL程序的基本单元程序的基本单元2-2 设计实体设计实体2-3 设计结构体设计结构体22-4 库库2-5 程序包程序包2-6 配置配置2-7 子程序子程序 第二章第二章 VHDL程序基本结构程序基本结构材料与能源学院微电子材料与工程系材料与能源学院微电子材料与工程系2.1 VHDL程序基本结构程序基本结构例例 一个一个2输入的与门的逻辑描述输入的与门的逻辑描述LIBRARY IEEE;-库说明语句库说明语句 USE IEEE.STD_LOGIC_1164.ALL;-程序包说明语句程序包说明语句 ENTITY and2 IS PORT(a,b:IN STD_LOGIC;y :OUT STD_LOGIC);END and2;ARCHITECTURE and2x OF and2 IS BEGIN y=a AND b;END and2x;实体部分实体部分结构体部分结构体部分第二章第二章 VHDL程序基本结构程序基本结构材料与能源学院微电子材料与工程系材料与能源学院微电子材料与工程系 一个完整的一个完整的VHDL程序包括程序包括 1.实体实体(Entity)2.结构体结构体(Architecture)3.配置配置(Configuration)4.包包(Package)5.库库(Library)其中,其中,实体和结构体实体和结构体是是VHDL设计文件的两个基本组成部设计文件的两个基本组成部分:分:实体部分实体部分描述设计系统的外部接口信号(即输入描述设计系统的外部接口信号(即输入/输出信输出信号);号);结构体结构体用于描述系统的内部电路。用于描述系统的内部电路。配置配置用于从库中选取用于从库中选取所需元件安装到设计单元的实体中;所需元件安装到设计单元的实体中;包包存放各设计模块能共享存放各设计模块能共享的数据类型、常数、子程序等;的数据类型、常数、子程序等;库库用于存放已编译的实体、结用于存放已编译的实体、结构体、包集合和配置。构体、包集合和配置。第二章第二章 VHDL程序基本结构程序基本结构材料与能源学院微电子材料与工程系材料与能源学院微电子材料与工程系结构示意图:结构示意图:库、程序包库、程序包实体实体结构体结构体进程或其他并行结构进程或其他并行结构结构体结构体进程或其他并行结构进程或其他并行结构配置配置V VH HD DL L程程序序基基本本结结构构第二章第二章 VHDL程序基本结构程序基本结构材料与能源学院微电子材料与工程系材料与能源学院微电子材料与工程系2.2 设计实体设计实体(ENTITY)实体的一般格式为:实体的一般格式为:ENTITY 实体名实体名 IS GENERIC(类属参数说明类属参数说明):PORT(端口说明端口说明);ENDENTITY 实体名;实体名;实体是一个完整的、独立的语言模块,它相当于电实体是一个完整的、独立的语言模块,它相当于电路中的一个器件或电路原理图上的一个元件符号。路中的一个器件或电路原理图上的一个元件符号。实体中的每一个实体中的每一个I/OI/O信号被称为信号被称为端口端口,其功能对应于电路,其功能对应于电路 图符号的一个引脚。图符号的一个引脚。端口说明端口说明则是对一个实体的一组端口则是对一个实体的一组端口的定义,即对基本设计实体与外部接口的描述。端口是设的定义,即对基本设计实体与外部接口的描述。端口是设计实体和外部环境动态通信的通道。计实体和外部环境动态通信的通道。ayand2b第二章第二章 VHDL程序基本结构程序基本结构材料与能源学院微电子材料与工程系材料与能源学院微电子材料与工程系类属参数说明是可选部分。如果需要,可使用以类属参数说明是可选部分。如果需要,可使用以“GENERICGENERIC”语句来指定该设计单元的类属参数(如延时、语句来指定该设计单元的类属参数(如延时、功耗等)。功耗等)。实体名、端口名等均应为符合实体名、端口名等均应为符合VHDLVHDL命名规则的标识符。命名规则的标识符。第二章第二章 VHDL程序基本结构程序基本结构材料与能源学院微电子材料与工程系材料与能源学院微电子材料与工程系端口说明的一般格式为:端口说明的一般格式为:PORT(端口名端口名,端口名,端口名:端口模式:端口模式 数据类型;数据类型;端口名端口名,端口名,端口名:端口模式:端口模式 数据类型);数据类型);2.2.1 2.2.1 类属和端口说明类属和端口说明类属说明的一般格式为:类属说明的一般格式为:GENERICGENERIC(常数名:数据类型:常数名:数据类型:=设定值,设定值,)例:例:GENERICGENERIC(delay:TIME(delay:TIME:=10ns)=10ns);例:例:ENTITY and2 IS PORT(a,b:IN STD_LOGIC;y:OUT STD_LOGIC);END and2;第二章第二章 VHDL程序基本结构程序基本结构材料与能源学院微电子材料与工程系材料与能源学院微电子材料与工程系2.2.2 2.2.2 端口模式端口模式 端口模式端口模式 用来说明数据传输通过该端口的方向。端口用来说明数据传输通过该端口的方向。端口模式有以下几类:模式有以下几类:IN(输入):输入):仅允许数据流进入端口。主要用于时钟输入、仅允许数据流进入端口。主要用于时钟输入、控制输入、单向数据输入。控制输入、单向数据输入。OUT(输出):输出):仅允许数据流由实体内部流出端口。该模仅允许数据流由实体内部流出端口。该模式通常用于终端计数一类的输出,不能用于反馈。式通常用于终端计数一类的输出,不能用于反馈。BUFFER(缓冲):缓冲):该模式允许数据流出该实体和作为内该模式允许数据流出该实体和作为内部反馈时用,但不允许作为双向端口使用。部反馈时用,但不允许作为双向端口使用。INOUT(双向):双向):可以允许数据流入或流出该实体。该模可以允许数据流入或流出该实体。该模式也允许用于内部反馈。式也允许用于内部反馈。如果端口模式没有指定,则该端口处于如果端口模式没有指定,则该端口处于缺省模式为:缺省模式为:IN。第二章第二章 VHDL程序基本结构程序基本结构材料与能源学院微电子材料与工程系材料与能源学院微电子材料与工程系2.3 设计结构体(设计结构体(ARCHITECTURE)结构体是用来描述设计实体的内部结构和实体端口结构体是用来描述设计实体的内部结构和实体端口间的逻辑关系,在电路图相当于器件的内部结构。间的逻辑关系,在电路图相当于器件的内部结构。结构体的一般格式如下:结构体的一般格式如下:ARCHITECTURE 结构体名结构体名 OF 实体名实体名 IS 结构体说明部分结构体说明部分;BEGIN 并发处理语句并发处理语句;ENDARCHITECTURE 结构体名;结构体名;第二章第二章 VHDL程序基本结构程序基本结构材料与能源学院微电子材料与工程系材料与能源学院微电子材料与工程系结构体名由设计者自行定义,结构体名由设计者自行定义,OF后面的实体名表明了该结后面的实体名表明了该结构体所对应的是哪一个实体。有些设计实体有多个结构体,构体所对应的是哪一个实体。有些设计实体有多个结构体,这些结构体的名称不可相同,通常用这些结构体的名称不可相同,通常用behavioral(行为行为)、dataflow(数据流数据流)和和structural(结构结构)。结构体说明结构体说明(定义语句定义语句)是指对结构体需要使用的信号是指对结构体需要使用的信号(SIGNAL)、常数常数(CONSTANT)、数据类型数据类型(TYPE)和函数和函数(FUNCTION)等进行定义和说明。等进行定义和说明。并发处理语句位于并发处理语句位于BEGIN和和END之间,这些语句具体地描之间,这些语句具体地描述了结构造体的行为。述了结构造体的行为。并发处理语句是功能描述的核心部并发处理语句是功能描述的核心部分,也是变化最丰富的部分分,也是变化最丰富的部分。并发处理语句可以使用赋值并发处理语句可以使用赋值语句、进程语句语句、进程语句(PROCESS)、元件例化语句、块语句元件例化语句、块语句(BLOCK)以及子程序等。以及子程序等。需要注意的是需要注意的是,这些语句都是并发这些语句都是并发(同时)执行的,与排列顺序无关。(同时)执行的,与排列顺序无关。第二章第二章 VHDL程序基本结构程序基本结构材料与能源学院微电子材料与工程系材料与能源学院微电子材料与工程系 描述风格描述风格 VHDL VHDL结构体具体描述整个设计实体的逻辑功能,对于所结构体具体描述整个设计实体的逻辑功能,对于所希望的电路功能行为,可以在结构体中用不同的语句类型和希望的电路功能行为,可以在结构体中用不同的语句类型和描述方法来表达。这种不同的描述方式,即建模方法就是描描述方法来表达。这种不同的描述方式,即建模方法就是描述风格。有三种不同风格的描述方式:行为描述方式述风格。有三种不同风格的描述方式:行为描述方式(behavior)behavior)、数据流描述方式数据流描述方式(dataflow)dataflow)或寄存器或寄存器RTLRTL描述方描述方式、结构化描述方式式、结构化描述方式(structural)structural)。1.1.行为描述法行为描述法是是对设计实体按算法的路径来描述对设计实体按算法的路径来描述,只描述所,只描述所希望电路的功能或者说电路行为,而没有直接指明或涉及希望电路的功能或者说电路行为,而没有直接指明或涉及实现这些行为的硬件结构。它是系统数学模型的描述,主实现这些行为的硬件结构。它是系统数学模型的描述,主要是顺序语句描述。要是顺序语句描述。将将VHDLVHDL的行为描述语句转换成可综合的门级描述是的行为描述语句转换成可综合的门级描述是VHDLVHDL综合器的任务,这是一项十分复杂的工作。综合器的任务,这是一项十分复杂的工作。第二章第二章 VHDL程序基本结构程序基本结构材料与能源学院微电子材料与工程系材料与能源学院微电子材料与工程系LIBRARY IEEE;USE IEEE.Std_Logic_1164.ALL;ENTITY full_adder IS GENERIC(tpd:TIME:=10 ns);PORT(x,y,c_in:IN Std_Logic;sum,c_out:OUT Std_Logic);END full_adder;ARCHITECTURE behavioral OF full_adder ISBEGIN PROCESS(x,y,c_in)VARIABLE n:Integer;CONSTANT sum_vector:Std_Logic_Vector(0 TO 3):=0101;CONSTANT carry_vector:Std_Logic_Vector(0 TO 3):=0011;BEGIN n:=0;IF x=1 THEN n:=n+1;END IF;IF y=1 THEN n:=n+1;END IF;IF c_in=1 THEN n:=n+1;END IF;sum=sum_vector(n)AFTER 2*tpd;c_out=carry_vector(n)AFTER 3*tpd;END PROCESS;END behavioral;第二章第二章 VHDL程序基本结构程序基本结构材料与能源学院微电子材料与工程系材料与能源学院微电子材料与工程系本例的程序中,不本例的程序中,不存在任何与硬件选存在任何与硬件选择相关的语句,也择相关的语句,也不存在任何有关硬不存在任何有关硬件内部连线方面的件内部连线方面的语句。语句。VHDL的行为描述的行为描述功能具有很大的优功能具有很大的优越性。越性。全加器的真值表:全加器的真值表:第二章第二章 VHDL程序基本结构程序基本结构材料与能源学院微电子材料与工程系材料与能源学院微电子材料与工程系2.2.数据流描述法数据流描述法或或寄存器寄存器RTLRTL描述法描述法是以规定设计中的各种是以规定设计中的各种寄存器形式为特征,然后在寄存器之间插入组合逻辑。寄存器形式为特征,然后在寄存器之间插入组合逻辑。这类寄存器或显式地通过元件具体装配,或者通过推论这类寄存器或显式地通过元件具体装配,或者通过推论作隐含的描述。它采用并发信号赋值语句,作隐含的描述。它采用并发信号赋值语句,描述数据流描述数据流程的运动路径、运动方向和运动结果程的运动路径、运动方向和运动结果。=1=1=1=1xyC-outsumC-in&11全加器逻辑电路图全加器逻辑电路图第二章第二章 VHDL程序基本结构程序基本结构材料与能源学院微电子材料与工程系材料与能源学院微电子材料与工程系LIBRARY IEEE;USE IEEE.Std_Logic_1164.ALL;ENTITY full_adder IS GENERIC(tpd:TIME:=10 ns);PORT(x,y,c_in:IN Std_Logic;sum,c_out:OUT Std_Logic);END full_adder;ARCHITECTURE dataflow OF full_adder IS SIGNAL s:Std_Logic;BEGIN s=x XOR y AFTER tpd;sum=s XOR c_in AFTER tpd;c_out=(x AND y)OR(s AND c_in)AFTER 2*tpd;END dataflow;第二章第二章 VHDL程序基本结构程序基本结构材料与能源学院微电子材料与工程系材料与能源学院微电子材料与工程系3.3.结构化描述法结构化描述法是是先描述功能的逻辑电路图,再调用库中的先描述功能的逻辑电路图,再调用库中的标准元器件加以描述标准元器件加以描述,就是表示元件之间的互连,通常用,就是表示元件之间的互连,通常用于层次设计,允许互连元件的层次式安置,其建模步骤如于层次设计,允许互连元件的层次式安置,其建模步骤如下:下:v元件说明:描述局部接口。元件说明:描述局部接口。v元件例化:相对于其它元件放置元件。元件例化:相对于其它元件放置元件。v元件配置:指定元件所用的设计实体,即对一个给定元件配置:指定元件所用的设计实体,即对一个给定实体,如果有多个可用的结构体,则由配置决定模拟实体,如果有多个可用的结构体,则由配置决定模拟中所用的一个结构。中所用的一个结构。利用结构描述方式,可以采用结构化、模块化设计利用结构描述方式,可以采用结构化、模块化设计思想,将一个大的设计划分为许多小的模块,逐一设计调思想,将一个大的设计划分为许多小的模块,逐一设计调试完成,然后利用结构描述方法将它们组装起来,形成更试完成,然后利用结构描述方法将它们组装起来,形成更为复杂的设计。为复杂的设计。第二章第二章 VHDL程序基本结构程序基本结构材料与能源学院微电子材料与工程系材料与能源学院微电子材料与工程系LIBRARY IEEE;USE IEEE.Std_Logic_1164.ALL;ENTITY half_adder IS GENERIC(tpd:TIME:=10 ns);PORT(in1,in2:IN Std_Logic;sum,carry:OUT Std_Logic);END half_adder;ARCHITECTURE behavioral OF half_adder ISBEGIN PROCESS(in1,in2)BEGIN sum=in1 XOR in2 AFTER tpd;carry=in1 AND in2 AFTER tpd;END PROCESS;END behavioral;=1=1&in1in2sumcarry第二章第二章 VHDL程序基本结构程序基本结构材料与能源学院微电子材料与工程系材料与能源学院微电子材料与工程系LIBRARY IEEE;USE IEEE.Std_Logic_1164.ALL;ENTITY or_gate IS GENERIC(tpd:TIME:=10 ns);PORT(in1,in2:IN Std_Logic;out1:OUT Std_Logic);END or_gate;ARCHITECTURE structural OF or_gate ISBEGIN out1=in1 OR in2 AFTER tpd;END structural;ORORin1in2out1第二章第二章 VHDL程序基本结构程序基本结构材料与能源学院微电子材料与工程系材料与能源学院微电子材料与工程系LIBRARY IEEE;USE IEEE.Std_Logic_1164.ALL;ENTITY full_adder IS GENERIC(tpd:TIME:=10 ns);PORT(x,y,c_in:IN Std_Logic;sum,c_out:OUT Std_Logic);END full_adder;ARCHITECTURE structural OF full_adder IS COMPONENT half_adder PORT(in1,in2:IN Std_Logic;sum,carry:OUT Std_Logic);END COMPONENT;COMPONENT or_gate PORT(in1,in2:IN Std_Logic;out1:OUT Std_Logic);END COMPONENT;第二章第二章 VHDL程序基本结构程序基本结构材料与能源学院微电子材料与工程系材料与能源学院微电子材料与工程系 SIGNAL a,b,c:Std_Logic;FOR u1,u2:half_adder USE ENTITY Work.half_adder(behavioral);FOR u3:or_gate USE ENTITY Work.or_gate(structural);BEGIN u1:half_adder PORT MAP(x,y,b,a);u2:half_adder PORT MAP(c_in,b,sum,c);u3:or_gate PORT MAP(c,a,c_out);END structural;Half AdderC_ins sc cb ba a OROR Half Adders sc cc cxysumC_outU1U1U3U3U2U2第二章第二章 VHDL程序基本结构程序基本结构材料与能源学院微电子材料与工程系材料与能源学院微电子材料与工程系4.4.混合描述混合描述是指采用上述三种建模方法的任意组合。是指采用上述三种建模方法的任意组合。LIBRARY IEEE;USE IEEE.Std_Logic_1164.ALL;ENTITY xor_gate IS GENERIC(tpd:TIME:=10 ns);PORT(in1,in2:IN Std_Logic;out1:OUT Std_Logic);END xor_gate;ARCHITECTURE behavioral OF xor_gate ISBEGIN out1=in1 XOR in2 AFTER tpd;END behavioral;第二章第二章 VHDL程序基本结构程序基本结构材料与能源学院微电子材料与工程系材料与能源学院微电子材料与工程系LIBRARY IEEE;USE IEEE.Std_Logic_1164.ALL;ENTITY full_adder IS GENERIC(tpd:TIME:=10 ns);PORT(x,y,c_in:IN Std_Logic;sum,c_out:OUT Std_Logic);END full_adder;ARCHITECTURE mix OF full_adder IS COMPONENT xor_gate PORT(in1,in2:IN Std_Logic;out1:OUT Std_Logic);END COMPONENT;SIGNAL s:Std_Logic;FOR ALL:xor_gate USE ENTITY Work.xor_gate(behavioral);BEGIN c_out=(x AND y)OR(s AND c_in)AFTER 2*tpd;u1:xor_gate PORT MAP(x,y,s);u2:xor_gate PORT MAP(s,c_in,sum);END mix;第二章第二章 VHDL程序基本结构程序基本结构材料与能源学院微电子材料与工程系材料与能源学院微电子材料与工程系2.4 库库(LIBRARY)在利用在利用VHDL进行工程设计中,为了提高设计效率以及使进行工程设计中,为了提高设计效率以及使设计遵循某些统一的语言标准或数据格式,有必要将一些设计遵循某些统一的语言标准或数据格式,有必要将一些有用的信息汇集在一个或几个库中以供调用。这些信息可有用的信息汇集在一个或几个库中以供调用。这些信息可以是预先定义好的数据类型、子程序等设计单元的集合体以是预先定义好的数据类型、子程序等设计单元的集合体(程序包程序包),或预先设计好的各种设计实体,或预先设计好的各种设计实体(元件库程序包元件库程序包)。因此,可以把库看成是一种用来存储预先完成的程序包。因此,可以把库看成是一种用来存储预先完成的程序包和数据集合体的仓库。和数据集合体的仓库。库库(LIBRARY)的语句格式如下:的语句格式如下:LIBRARY 库名;库名;这一语句即相当于为其后的设计实体打开了以此库名这一语句即相当于为其后的设计实体打开了以此库名命名的库,以便设计实体可以利用其中的程序包。如语句命名的库,以便设计实体可以利用其中的程序包。如语句“LIBRARY IEEE;”表示打开表示打开IEEE库。库。第二章第二章 VHDL程序基本结构程序基本结构材料与能源学院微电子材料与工程系材料与能源学院微电子材料与工程系2.4.1 库的种类库的种类IEEE库库 IEEE库是库是VHDL设计中最为常见的库,它包含有设计中最为常见的库,它包含有IEEE标准的程序包和其他一些支持工业标准的程序包。标准的程序包和其他一些支持工业标准的程序包。IEEE库中的标准程序包主要包括库中的标准程序包主要包括STD_LOGIC_1164,NUMERIC_BIT和和NUMERIC_STD等程序包。其中的等程序包。其中的STD_LOGIC_1164是最重要的最常用的程序包,大部分是最重要的最常用的程序包,大部分基于数字系统设计的程序包都是以此程序包中设定的标准基于数字系统设计的程序包都是以此程序包中设定的标准为基础的。为基础的。第二章第二章 VHDL程序基本结构程序基本结构材料与能源学院微电子材料与工程系材料与能源学院微电子材料与工程系此外,还有一些程序包虽非此外,还有一些程序包虽非IEEE标准,但由于其已成事实上标准,但由于其已成事实上的工业标准,也都并入了的工业标准,也都并入了IEEE库。这些程序包中,最常用的库。这些程序包中,最常用的是是Synopsys 公司的公司的STD_LOGIC_ARITH、STD_LOGIC_SIGNED和和STD_LOGIC_UNSIGNED程序包。程序包。目前流行于我国的大多数目前流行于我国的大多数EDA工具都支持工具都支持Synopsys公司程公司程序包。一般基于大规模可编程逻辑器件的数字系统设计,序包。一般基于大规模可编程逻辑器件的数字系统设计,IEEE库中的库中的4个程序包个程序包STD_LOGIC_1164、STD_LOGIC_ARITH、STD_LOGIC_SIGNED和和STD_LOGIC_UNSIGNED已经足够使用。已经足够使用。另外,在另外,在IEEE库库中符合中符合IEEE标准的程序包并非符合标准的程序包并非符合VHDL语言标准,如语言标准,如STD_LOGIC_1164程序包。因此在使用程序包。因此在使用VHDL设计实体的前面设计实体的前面必须以显式表达出来必须以显式表达出来。第二章第二章 VHDL程序基本结构程序基本结构材料与能源学院微电子材料与工程系材料与能源学院微电子材料与工程系STD库库 VHDL语言标准定义了两个标准程序包,即语言标准定义了两个标准程序包,即STANDARD和和TEXTIO程序包,它们都被收入在程序包,它们都被收入在STD库中。库中。只要在只要在VHDL应用环境中,可随时调用这两个程序包中的应用环境中,可随时调用这两个程序包中的所有内容,即在编译和综合过程中,所有内容,即在编译和综合过程中,VHDL的每一项设计的每一项设计都自动地将其包含进去了。由于都自动地将其包含进去了。由于STD库库符合符合VHDL语言标语言标准,在应用中准,在应用中不必不必如如IEEE库那样库那样以显式表达出来以显式表达出来。WORK库库 WORK库库是用户的是用户的VHDL设计的现行工作库,用于存设计的现行工作库,用于存放用户设计和定义的一些设计单元和程序包。因此自动满放用户设计和定义的一些设计单元和程序包。因此自动满足足VHDL语言标准,在实际调用中,语言标准,在实际调用中,不必以显式预先说明不必以显式预先说明。第二章第二章 VHDL程序基本结构程序基本结构材料与能源学院微电子材料与工程系材料与能源学院微电子材料与工程系VITAL库库 使用使用VITAL库,可以提高库,可以提高VHDL门级时序模拟的精度,门级时序模拟的精度,因而只在因而只在VHDL仿真器中使用。库中包含时序程序包仿真器中使用。库中包含时序程序包VITAL_TIMING和和VITAL_ PRIMITIVES。VITAL程序包程序包已经成为已经成为IEEE标准,在当前的标准,在当前的VHDL仿真器的库中,仿真器的库中,VITAL库中的程序包都已经并到库中的程序包都已经并到IEEE库中。库中。实际上,由于各实际上,由于各FPGA/CPLD生产厂商的适配工具生产厂商的适配工具(如如ispEXPERT Compiler)都能为各自的芯片生成带时序信息的都能为各自的芯片生成带时序信息的VHDL门级网表,用门级网表,用VHDL仿真器仿真该网表可以得到非常仿真器仿真该网表可以得到非常精确的时序仿真结果。因此,基于实用的观点,在精确的时序仿真结果。因此,基于实用的观点,在FPGA/CPLD设计开发过程中,一般并不需要设计开发过程中,一般并不需要VITAL库中的库中的程序包。程序包。第二章第二章 VHDL程序基本结构程序基本结构材料与能源学院微电子材料与工程系材料与能源学院微电子材料与工程系除了以上提到的库外,除了以上提到的库外,EDA工具开发商为了便于工具开发商为了便于FPGA/CPLD开发设计上的方便,都有自己的扩展库和相开发设计上的方便,都有自己的扩展库和相应的程序包,如应的程序包,如DATAIO公司的公司的GENERICS库、库、DATAIO库等,以及上面提到的库等,以及上面提到的Synopsys 公司的一些库。公司的一些库。在在VHDL设计中,有的设计中,有的EDA工具将一些程序包和设计单元工具将一些程序包和设计单元放在一个目录下,而将此目录名,如放在一个目录下,而将此目录名,如“WORK”,作为库名,作为库名,如如Synplicity公司的公司的Synplify。有的有的EDA工具是通过配置语工具是通过配置语句结构来指定库和库中的程序包,这时的配置即成为一个句结构来指定库和库中的程序包,这时的配置即成为一个设计实体中最顶层的设计单元。设计实体中最顶层的设计单元。此外,用户还可以自己定义一些库,将自己的设计内容或此外,用户还可以自己定义一些库,将自己的设计内容或通过交流获得的程序包设计实体并入这些库中。通过交流获得的程序包设计实体并入这些库中。第二章第二章 VHDL程序基本结构程序基本结构材料与能源学院微电子材料与工程系材料与能源学院微电子材料与工程系2.4.2 库的用法库的用法在在VHDLVHDL语言中,库的说明语句总是放在实体单元前面,而且库语言中,库的说明语句总是放在实体单元前面,而且库语言一般必须与语言一般必须与USEUSE语言同用。库语言关键词语言同用。库语言关键词LIBRARYLIBRARY,指明所指明所使用的库名。使用的库名。USEUSE语句指明库中的程序包。一旦说明了库和程序语句指明库中的程序包。一旦说明了库和程序包,整个设计实体都可进入访问或调用,但其作用范围仅限于包,整个设计实体都可进入访问或调用,但其作用范围仅限于所说明的设计实体。所说明的设计实体。VHDLVHDL要求一项含有多个设计实体的更大的要求一项含有多个设计实体的更大的系统,每一个设计实体都必须有自己完整的库说明语句和系统,每一个设计实体都必须有自己完整的库说明语句和USEUSE语语句。句。USEUSE语句的使用将使所说明的程序包对本设计实体部分全部开放,语句的使用将使所说明的程序包对本设计实体部分全部开放,即是可视的。即是可视的。USEUSE语句的使用有两种常用格式:语句的使用有两种常用格式:USE USE 库名库名.程序包名程序包名.项目名;项目名;USE USE 库名库名.程序包名程序包名.ALLALL;第一语句格式的作用是,向本设计实体开放指定库中的特第一语句格式的作用是,向本设计实体开放指定库中的特定程序包内所选定的项目。第二语句格式的作用是,向本设计定程序包内所选定的项目。第二语句格式的作用是,向本设计实体开放指定库中的特定程序包内所有的内容。实体开放指定库中的特定程序包内所有的内容。第二章第二章 VHDL程序基本结构程序基本结构材料与能源学院微电子材料与工程系材料与能源学院微电子材料与工程系例例:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;以上的三条语句表示打开以上的三条语句表示打开IEEE库,打开此库中的库,打开此库中的STD_LOGIC_1164程序包和程序包和.程序包的所有内容。程序包的所有内容。例例:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.STD_ULOGIC;USE IEEE.STD_LOGIC_1164.RISING_EDGE;此例中向当前设计实体开放了此例中向当前设计实体开放了STD_LOGIC_1164程序包程序包中的中的RISING_EDGE函数。但由于此函数需要用到数据类型函数。但由于此函数需要用到数据类型STD_ULOGIC,所以在上一条所以在上一条USE语句中开放了同一程序语句中开放了同一程序包中的这一数据类型。包中的这一数据类型。第二章第二章 VHDL程序基本结构程序基本结构材料与能源学院微电子材料与工程系材料与能源学院微电子材料与工程系2.5 程序包程序包(PACKAGE)为了使已定义的常数、数据类型、元件调用说明以及子程序能被为了使已定义的常数、数据类型、元件调用说明以及子程序能被更多的更多的VHDL设计实体方便地访问和共享,可以将它们收集在一设计实体方便地访问和共享,可以将它们收集在一个个VHDL程序包中。多个程序包可以并入一个程序包中。多个程序包可以并入一个VHDL库中,使之库中,使之适用于更一般的访问和调用范围。这一点对于大系统开发,多个适用于更一般的访问和调用范围。这一点对于大系统开发,多个或多组开发人员并行工作显得尤为重要。或多组开发人员并行工作显得尤为重要。程序包的内容主要由如下四种基本结构组成,因此一个程序包中程序包的内容主要由如下四种基本结构组成,因此一个程序包中至少应包含以下结构中的一种。至少应包含以下结构中的一种。v常数说明:主要用于预定义系统的宽度,如数据总线通道的常数说明:主要用于预定义系统的宽度,如数据总线通道的宽度。宽度。v数据类型说明:主要用于说明在整个设计中通用的数据类型,数据类型说明:主要用于说明在整个设计中通用的数据类型,例如通用的地址总线数据类型定义等。例如通用的地址总线数据类型定义等。v元件定义:主要规定在元件定义:主要规定在VHDL设计中参与元件例化的文件设计中参与元件例化的文件(已已完成的设计实体完成的设计实体)对外的接口界面。对外的接口界面。v子程序说明:用于说明在设计中任一处可调用的子程序。子程序说明:用于说明在设计中任一处可调用的子程序。第二章第二章 VHDL程序基本结构程序基本结构材料与能源学院微电子材料与工程系材料与能源学院微电子材料与工程系定义程序包的一般语句结构如下:定义程序包的一般语句结构如下:-程序包首程序包首PACKAGE 程序包名程序包名 IS-程序包首开始程序包首开始 程序包首说明部分程序包首说明部分 END 程序包名;程序包名;-程序包首结束程序包首结束-程序包体程序包体(并非是必须的并非是必须的)PACKAGE BODY 程序包名程序包名 IS-程序包体开始程序包体开始 程序包体说明部分以及包体内容程序包体说明部分以及包体内容END 程序包名;程序包名;-程序包体结束程序包体结束第二章第二章 VHDL程序基本结构程序基本结构材料与能源学院微电子材料与工程系材料与能源学院微电子材料与工程系2.5.1 STD_LOGIC_1164程序包程序包它是它是IEEE库中最常用的程序包,是库中最常用的程序包,是IEEE的标准程序包。其的标准程序包。其中包含了一些数据类型、子类型和函数的定义,这些定义将中包含了一些数据类型、子类型和函数的定义,这些定义将VHDL扩展为一个能描述多值逻辑扩展为一个能描述多值逻辑(即除具有即除具有“0”和和“1”以以外还有其他的逻辑量,如高阻态外还有其他的逻辑量,如高阻态“Z”、不定态不定态“X”等等)的的硬件描述语言,很好地满足了实际数字系统的设计需求。硬件描述语言,很好地满足了实际数字系统的设计需求。该程序包中用得最多和最广的是定义了满足工业标准的两个该程序包中用得最多和最广的是定义了满足工业标准的两个数据类型数据类型STD_LOGIC和和STD_LOGIC_VECTOR,它们非常它们非常适合于适合于FPGA/CPLD器件中多值逻辑设计结构。器件中多值逻辑设计结构。在使用本程序包之前,在使用本程序包之前,需加语句需加语句:LIBRARY IEEE;USE IEEE.Std_Logic_1164.ALL;第二章第二章 VHDL程序基本结构程序基本结构材料与能源学院微电子材料与工程系材料与能源学院微电子材料与工程系2.5.2 STD_LOGIC_ARITH、STD_LOGIC_UNSIGNED和和 STD_LOGIC_SIGNED程序包程序包它是它是Synopsys公司的程序包,但都预先编译在公司的程序包,但都预先编译在IEEE库中。库中。虽然未成为虽然未成为IEEE标准,但已经成为事实上的工业标准,绝标准,但已经成为事实上的工业标准,绝大多数的大多数的VHDL综合器和仿真器都支持它们。综合器和仿真器都支持它们。这些程序包重载了可用于这些程序包重载了可用于INTEGER型及型及STD_LOGIC和和STD_LOGIC_VECTOR型混合运算的运算符、转换函数。型混合运算的运算符、转换函数。在使用这些程序包之前,在使用这些程序包之前,需加语句需加语句:LIBRARY IEEE;USE STD_LOGIC_ARITH;USE STD_LOGIC_UNSIGNED;USE STD_LOGIC_SIGNED;第二章第二章 VHDL程序基本结构程序基本结构材料与能源学院微电子材料与工程系材料与能源学院微电子材料与工程系2.5.3 STANDARD程序包程序包 这个程序包是这个程序包是STD库中的预编译程序包。库中的预编译程序包。STANDARD程序程序包包中定义了许多基本的数据类型、子类型和函数。它是中定义了许多基本的数据类型、子类型和函数。它是VHDL标准程序包,实际应用中已隐性地打开了,故标准程序包,实际应用中已隐性地打开了,故不必再不必再用用USE语句另作声明,语句另作声明,即在所有的设计单元的开头,隐藏有即在所有的设计单元的开头,隐藏有下面的下面的LIBRARY及及USE子句:子句:STANDARD程序包具体内容见有关书籍。程