《(1.3.3)--2.1.2 VHDL程序基本结构(2)20190802.ppt》由会员分享,可在线阅读,更多相关《(1.3.3)--2.1.2 VHDL程序基本结构(2)20190802.ppt(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第2章 EDA技术设计与应用基础2.1.2 VHDL程序基本结构(2)内容提要内容提要库、程序包的作用;库的种类;程序包的种类;库、程序包使用说明。一、库、程序包的作用为了使能被更多的VHDL设计实体方便地访问和共享,可以将我们将已定义的常数、数据类型、元件调用说明以及子程序收集在一起,这就是VHDL程序包。各种程序包可以并入一个或多个用来存储预先完成的程序包和数据集合体的仓库中,这就是库。作用:为了提高VHDL工程设计的效率以及使设计遵循某些统一的语言标准或数据格式。二、库的种类VHDL程序设计中常用的库有四种:IEEE库,STD库,WORK库,VITAL库。1IEEE库IEEE库中的标准程
2、序包主要包括:(1)STD_LOGIC_1164程序包;(2)NUMERIC_BIT程序包;(3)NUMERIC_STD程序包等。最常用的是Synopsys公司的工业标准程序包:(1)STD_LOGIC_ARITH程序包;(2)STD_LOGIC_SIGNED程序包;(3)STD_LOGIC_UNSIGNED程序包等。一般大规模可编程逻辑器件的数字系统设计,IEEE库中的STD_LOGIC_1164、STD_LOGIC_ARITH、STD_LOGIC_SIGNED和STD_LOGIC_UNSIGNED四个程序包已经足够使用。另外需要注意的是,在IEEE库中符合IEEE标准的程序包并非符合VHD
3、L语言标准,如STD_LOGIC_1164程序包,因此在使用VHDL设计实体的前面必须以显式表达出来。2STD库VHDL语言标准定义了两个标准程序包,即STANDARD和TEXTIO程序包,它们都被收入在STD库中。3WORK库WORK库是现行工作库,用于存放用户设计和定义的一些设计单元和程序包。4VITAL库VITAL库是各FPGA/CPLD生产厂商提供的面向ASIC的逻辑门库。使用VITAL库,可以提高VHDL门级时序模拟的精度,因而只在VHDL仿真器中使用。三、程序包的种类常用的预定义的程序包有四种:1STD_LOGIC_1164程序包;2STD_LOGIC_ARITH程序包;3STD_
4、LOGIC_UNSIGNED和STD_LOGIC_SIGNED程序包;4STANDARD和TEXTIO程序包。1STD_LOGIC_1164程序包它是IEEE库中最常用的程序包,是IEEE的标准程序包。该程序包中包含了一些数据类型、子类型和函数的定义,这些定义将VHDL扩展为一个能描述多值逻辑。2STD_LOGIC_ARITH程序包此程序包在STD_LOGIC_1164程序包的基础上扩展了三个数据类型:UNSIGNED、SIGNED和SMALL_INT,并为其定义了相关的算术运算符和转换函数。3STD_LOGIC_UNSIGNED和STD_LOGIC_SIGNED程序包该程序包重载了可用于IN
5、TEGER型及STD_LOGIC和STD_ LOGIC_VECTOR型混合运算的运算符,并定义了一个由STD_LOGIC_VECTOR型到INTEGER型的转换函数。这两个程序包的区别是,STD_LOGIC_SIGNED中定义的运算符考虑到了符号,是有符号数的运算,而STD_LOGIC_UNSIGNED则正好相反。4STANDARD和TEXTIO程序包STANDARD程序包中定义了许多基本的数据类型、子类型和函数。它是VHDL标准程序包,实际应用中已隐性地打开了,故不必再用USE语句另作声明。TEXTIO程序包定义了支持文本文件操作的许多类型和子程序。在使用本程序包之前,需加语句USE STD
6、.TEXTIO.ALL。TEXTIO程序包主要供仿真器使用。可以用文本编辑器建立一个数据文件,文件中包含仿真时需要的数据,仿真时用TEXTIO程序包中的子程序存取这些数据。综合器中,此程序包被忽略。关于这些库和程序包,可在与EDA软件相关的地方找到。比如在Quartus 8.0软件中,通过路径D:altera80quartuslibrariesvhdlieeestd_1164.vhd可找到对应的库和程序包。图1 Quartus 8.0中库的位置图图2 Quartus 8.0中程序包的位置图四、库、程序包的使用在VHDL语言中,库的说明语句总是放在实体单元前面,而且库语言一般必须与USE语言同用
7、。库语言关键词LIBRARY指明所使用的库名,USE语句指明库中的程序包。一旦说明了库和程序包,整个设计实体都可进入访问或调用,但其作用范围仅限于所说明的设计实体。VHDL要求一项含有多个设计实体的更大的系统,每一个设计实体都必须有自己完整的库说明语句和USE语句。库、程序包的使用语句格式如下:LIBRARY 库名;USE 库名.程序包名.项目名/ALL;-为其后的设计实体打开以此库名命名的库-向本设计实体开放指定库中的特定程序包内所选定的项目/所有的内容【例1】库和程序包的使用实例。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;-打开IEEE库-打开此库中的STD_LOGIC_1164程序包的所有内容-打开此库中的STD_LOGIC_UNSIGNED程序包的所有内容【例2】库和程序包的使用实例。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.STD_ULOGIC;USE IEEE.STD_LOGIC_1164.RISING_EDGE;-开放了STD_LOGIC_1164程序包中的RISING_EDGE函数-开放了STD_LOGIC_1164程序包中的STD_ULOGIC函数