首页 百科知识 程序设计中使用包有什么好处

程序设计中使用包有什么好处

时间:2022-10-26 百科知识 版权反馈
【摘要】:IEEE库是VHDL设计中最为常见的库,它包含有IEEE标准的程序包和其他一些支持工业标准的程序包。WORK库是用户的VHDL设计的现行工作库,用于存放用户设计和定义的一些设计单元和程序包。为了使已定义的常数、数据类型、元件调用说明及子程序能被更多的VHDL设计实体方便地访问和共享,可以将它们收集在一个VHDL程序包中。这两个程序包是STD库中的预编译程序包。程序包体用于定义在程序包首已定义的子程序的子程序体。

3.6 库和程序包

3.6.1 库

1.库的定义

库是经编译后的数据的集合,它存放集合定义、实体定义、结构体定义和配置定义等。

2.库的使用

在VHDL语言中,库的说明语句总是放在实体单元前面,而且库语言一般必须与USE语言同用。

库(LIBRARY)的语句格式如下。

LIBRARY库名;

这一语句相当于为其后的设计实体打开了以此库名所命名的库,以便设计实体可以利用其中的程序包。

例:LIBRARY IEEE;  --打开IEEE库

USE语句指明库中的程序包,USE语句的使用有两种常用格式:

USE库名.程序包名.项目名;

USE库名.程序包名.ALL;

第一语句格式的作用是,向本设计实体开放指定库中的特定程序包内所选定的项目;第二语句格式的作用是,向本设计实体开放指定库中的特定程序包内所有的内容。

库语言一般必须与USE语言同用,一旦说明了库和程序包,整个设计实体都可进入访问或调用。例如:

img146

3.库的分类

VHDL程序设计中常用的库有四种。

(1)IEEE库。IEEE库是VHDL设计中最为常见的库,它包含有IEEE标准的程序包和其他一些支持工业标准的程序包。

(2)STD库。VHDL语言标准定义了两个标准程序包,即STANDARD和TEXTIO程序包,它们都被收入STD库中。

(3)WORK库。WORK库是用户的VHDL设计的现行工作库,用于存放用户设计和定义的一些设计单元和程序包。因此,它自动满足VHDL语言标准,在实际调用中,不必以显式预先说明。

(4)VITAL库。VITAL库是各FPGA/CPLD生产厂商提供的面向ASIC的逻辑门库。使用VITAL库,可以提高VHDL门级时序模拟的精度,因而只在VHDL仿真器中使用。

(5)用户自定义的库。

3.6.2 程序包

为了使已定义的常数、数据类型、元件调用说明及子程序能被更多的VHDL设计实体方便地访问和共享,可以将它们收集在一个VHDL程序包(package)中。多个程序包可以并入一个VHDL库中,使之适用于更一般的访问和调用范围。这一点对于大系统开发、多个或多组开发人员并行工作显得尤为重要。

1.预定义程序包

常用的预定义程序包有以下四种。

(1)STD_LOGIC_1164程序包。它是IEEE库中最常用的程序包,是IEEE的标准程序包。其中包含了一些数据类型、子类型和函数的定义,这些定义将VHDL扩展为一个能描述多值逻辑(即除具有“0”和“1”以外还有其他的逻辑量,如高阻态“Z”、不定态“X”等)的硬件描述语言,很好地满足了实际数字系统的设计需求。

(2)STD_LOGIC_ARITH程序包。它预先编译在IEEE库中,是Synopsys公司的程序包。此程序包在STD_LOGIC_1164程序包的基础上扩展了三个数据类型,即UNSIGNED、SIGNED和SMALL_INT,并为其定义了相关的算术运算符和转换函数。

(3)STD_LOGIC_UNSIGNED和STD_LOGIC_SIGNED程序包。这两个程序包都是Synopsys公司的程序包,都预先编译在IEEE库中。这些程序包重载了可用于INTEGER型及STD_LOGIC和STD_LOGIC_VECTOR型混合运算的运算符,并定义了一个由STD_LOGIC_VECTOR型到INTEGER型的转换函数。

(4)STANDARD和TEXTIO程序包。这两个程序包是STD库中的预编译程序包。STANDARD程序包中定义了许多基本的数据类型、子类型和函数等。

程序包的具体内容如下。

常数说明:主要用于预定义系统的宽度,如数据总线通道的宽度。

数据类型说明:主要用于说明在整个设计中通用的数据类型,例如通用的地址总线、数据类型的定义等。

元件定义:主要规定在VHDL设计中参与元件例化的文件(已完成的设计实体)对外的接口界面。

子程序说明:用于说明在设计中任一处可调用的子程序。

2.自定义程序包

自定义程序包的一般语句结构如下。

img147

3.程序包首

程序包首的说明部分可收集多个不同的VHDL设计所需的公共信息,其中包括数据类型说明、信号说明、子程序说明及元件说明等。

在程序包结构中,程序包体并非是必须要有的,程序包首可以独立定义和使用。

程序包首的主要定义程序如下。

img148

img149

4.程序包体

程序包体用于定义在程序包首已定义的子程序的子程序体。程序包体说明部分的组成可以是USE语句(允许对其他程序包的调用)、子程序定义、子程序体、数据类型说明、子类型说明和常数说明等。没有子程序说明的程序包体可以省去。

程序包常用来封装属于多个设计单元分享的信息,程序包定义的信号、变量不能在设计实体之间共享。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈