您好,欢迎访问三七文档
1主要内容:程序包和配置重点内容:配置第4章VHDL的库、程序包和配置21.库(Library)库是经编译后的数据的集合,存放包集合定义、实体定义、结构体定义和配置定义。库的功能类似于UNIX和MS-DOS操作系统中的目录,库中存放设计的数据。在VHDL中,库的说明总放在设计单元的最前面。库中的各个设计单元可以用作进行其他设计的资源,一个设计可以使用多个库中的设计单元。第4章VHDL的库、程序包和配置4.1VHDL的库、程序包和配置3第4章VHDL的库、程序包和配置(1)库的使用首先在设计的开头说明要引用的库,然后使用use子句指明要使用库中的哪一个设计单元,其书写格式为:Library库名;Use库名.程序包名.all;其中:程序包名就是实际设计要使用的库中的设计单元;all表示使用程序包中的所有项目。4第4章VHDL的库、程序包和配置引用库和程序包中的说明语句有以下4种形式:假定设计实体中的信号类型为std_logic,其类型说明在ieee库的std_logic_1164程序包中定义。形式一:Libraryieee;Entityand2isPort(a:inieee.Std_logic_1164.Std_logic;b:inieee.Std_logic_1164.Std_logic;c:outieee.Std_logic_1164.Std_logic);Endand2;库说明程序包数据类型5第4章VHDL的库、程序包和配置形式2:Libraryieee;Useieee.all;Entityand2isPort(a:inStd_logic_1164.Std_logic;b:inStd_logic_1164.Std_logic;c:outStd_logic_1164.Std_logic);Endand2;形式3:Libraryieee;Useieee.std_logic_1164.all;Entityand2isPort(a:instd_logic;b:instd_logic;c:outstd_logic);Endand2;6第4章VHDL的库、程序包和配置引用库和程序包中的说明语句有以下4种形式:假定设计实体中的信号类型为std_logic,其类型说明在ieee库的std_logic_1164程序包中定义。形式4:Libraryieee;Useieee.std_logic_1164.std_logic;Entityand2isPort(a:instd_logic;b:instd_logic;c:outstd_logic);Endand2;7第4章VHDL的库、程序包和配置2.库的种类VHDL提供的库可分为两大类:设计库:对当前设计是永远可见的,不需在程序开头对它们进行说明。一般包括std库和work库。资源库:用来存放常规元件和常用模块的库,在使用时要进行说明。资源库的内容与厂商直接相关,现在的VHDL厂商和EDA工具厂商都有自己的资源库,其中含有厂商自定义的程序包。应用最广泛的资源库是ieee库、vital库和用户自定义的库。8第4章VHDL的库、程序包和配置(1)std库是VHDL的标准库,包含程序包standard和textio。程序包standard中定义了bit、bit_vector、character和time等数据类型;程序包textio主要包含了对文本文件进行读写操作的过程和函数。注意:使用程序包textio时要对库和程序包进行说明:Librarystd;Usestd.textio.all;使用程序包standard时,由于VHDL规定standard程序包总是可见的,因此不必进行说明。9第4章VHDL的库、程序包和配置(2)work库是VHDL的工作库。在编译一VHDL的时候,默认其保存在work库中,因此work库可以用来临时保存设计人员以前编译过的元件和模块,也可以通过该库来使用其中的元件和模块。VHDL标准中规定了work库也是永远可见的,因此在使用work库的时候不需要对它进行说明。10第4章VHDL的库、程序包和配置(3)ieee库是应用最广泛的资源库。主要包括程序包std_logic_1164、numeric_bit、numeric_std、math_complex和math_real,其中程序包std_logic_1164、numeric_bit、numeric_std是ieee标准化组织认可的程序包。现在有些公司,如synopsys公司提供了程序包std_logic_arith、std_logic_signed和std_logic_unsigned等,虽没得到ieee标准化组织的认可,但仍然定义在ieee库中。使用ieee库时必须进行说明:Libraryieee;Useieee.std_logic_1164.all;11第4章VHDL的库、程序包和配置(4)vital库是应用比较广泛的资源库。主要包括程序包vital_timing和vital_primitives。其中vital_timing是一个时序程序包;vital_primitives是一个基本元件程序包。它们可以提高VHDL门级时序模拟精度。(5)用户自定义库用来存放设计中共用的一些程序包,这是设计人员自己建立的资源库。可以提高设计的灵活性。在VHDL的开头要对库进行说明。12第4章VHDL的库、程序包和配置2.程序包(Package)在VHDL中,设计的实体和结构体中定义的数据类型、常量、子程序说明和元件说明等部分只能在该设计实体中使用,而对其他设计实体是不可见的。程序包说明像C语言中include语句一样,用来单纯地罗列VHDL中所要用到的信号定义、常量定义、数据类型、子程序说明和元件说明等,是一个可编译的设计单元。要使用程序包中的某些说明和定义,要用use语句说明。各种VHDL编译系统都含有多个标准程序包,如Std_Logic_1164和Standard程序包。用户也可已自行设计程序包(保存到WORK下)。13第4章VHDL的库、程序包和配置程序包由两个独立的单元组成:程序包说明部分和程序包包体部分构成。(1)程序包说明部分的一般格式:PACKAGE程序包名IS说明语句END[程序包名];其中说明语句为:数据类型说明、常量说明、子程序说明、信号定义及元件说明等。(2)程序包体单元的一般格式:PACKAGEBODY程序包名IS包体语句END[程序包名];14第4章VHDL的库、程序包和配置PACKAGEfunISSUBTYPEsegmentISBIT_Vector(0to6);TYPEBCDISRANGE0to9;ENDfun;ENTITYdecoderISPORT(INPUT:BCD;DRIVE:OUTSEGMENT);ENDdecoder;ARCHITECTUREartOFdecoderISBEGINWITHINPUTSELECTDRIVE〈=B“1111110”WHEN0,B“0110000”WHEN1,B“1101101”WHEN2,B“1111001”WHEN3,B“0110011”WHEN4,B“1011011”WHEN5,B“1011111”WHEN6,B“1110000”WHEN7,B“1111111”WHEN8,B“1111011”WHEN9,B“0000000”WHENOTHERS;ENDart;例:在现行WORK库中定义程序包并立即使用实例15第4章VHDL的库、程序包和配置几种应用较广的程序包(1)Standard预先在std库中编译,主要定义了布尔类型、bit类型、character类型、出错级别、实数类型、整数类型、时间类型、延迟长度子类型、自然数子类型、正整数子类型、string类型、bit_vector子类型、文件打开方式类型和文件打开状态类型。对所有设计模块可见。(2)textio预先在std库中编译,定义了line类型、text类型、side类型、操作宽度width子类型、文件input、文件output、readline过程、对应于不同数据类型的read过程、writeline过程和对应于不同数据类型的write过程。对所有设计模块都不可见,使用时要进行说明。16(3)std_logic_1164预先在ieee库中编译,是使用最广泛的程序包,定义了设计人员长采用的一些数据类型和函数。定义了std_ulogic类型、std_ulogic_vector类型、std_logic子类型、std_logic_vector类型。决断函数resolved、X01Z子类型、UX01子类型、UX01Z子类型、对应于不同数据类型的and、nand、or、nor、xor、xnor、not函数、对应于不同数据类型的To_bot、To_bitvector、To_stdulogic、To_stdlogicvector、To_stdulogicvector、To_X01、To_X01Z、To_UX01转换函数、上升沿函数rising_edge、下降沿函数falling_edge和对应于不同类型的Is_X函数。对所有设计模块都不可见。使用时要进行说明。第4章VHDL的库、程序包和配置17第4章VHDL的库、程序包和配置(4)numeric_std已被定义为标准程序包,定义了用于综合的数据类型和算术函数。定义了两种数据类型:unsigned和signed,其中unsigned表示无符号的位矢量,signed表示带符号的位矢量,其最左端是最高位。还含有所有unsigned和signed类型的重载算术运算,还含有一些有用的类型转换函数、时钟检测函数和其他一些使用的函数。(5)numeric_bit与程序包numeric_std基本相同,不同之处在于它的基本元素类型是bit,而不是std_logic。183.配置(Configuration)配置语句用于描述各种设计实体和元件之间的连接关系以及设计实体和结构体之间的连接关系。设计者可以利用这种配置语句来选择不同的结构体,使其与要设计的实体相对应。仿真某一时实体时,可以利用配置来选择不同的结构体,进行性能对比实验以得到性能最佳的结构体。例如,要设计一个二输入四输出的译码器。如果一种结构中的基本元件采用反相器和三输入与门,而另一种结构中的基本元件都采用与非门。它们各自的结构体是不一样的,并且放在各自不同的库中。要设计译码器就可以利用配置语句实现对两种不同的结构体的选择。第4章VHDL的库、程序包和配置19(1)默认配置配置语句的基本格式:Configuration配置名of实体名is[语句说明];End[配置名];配置语句根据不同的情况,其说明语句有简有繁。最简单的缺省配置格式:Configuration配置名of实体名isFor选配结构体名Endfor;End[配置名];(教材中128页例题)第4章VHDL的库、程序包和配置默认配置只能用来选择不含有任何块语句和元件的结构体20Libraryieee;Useieee.std_logic_1164.all;Entityexampleisport(a,b:instd_logic;y:outstd_logic);Endexample;Architectureand2_arcofexampleisBeginprocess(a,b)variablecomb:std_vector(1downto0);Begincomb:=a&b;casecombiswhen“00”=y=‘0’;when“01”=y=‘0’;when“10”=y=‘0’;when“11”=y=‘1’;whenothers=y=‘X’;endcase;endprocess;Endand2_arc;第4章VHDL的库、程序包和配置Architectureor2_arcofexa
本文标题:VHDL库包配置
链接地址:https://www.777doc.com/doc-3613705 .html