在利用VHDL 进行工程设计中为了提高设计效率以及使设计遵循某些统一的语言标准或数据格式有必要将一些有用的信息汇集在一个或几个库中以供调用这些信息可以是预先定义好的数据类型子程序等设计单元的集合体程序包或预先设计好的各种设计实体元件库程序包因此可以把库看成是一种用来存储预先完成的程序包数据集合体和元件的仓库如果要在一项VHDL 设计中用到某一程序包就必须在这项设计中预先打开这个程序包使此设计能随时使用这一程序包中的内容在综合过程中每当
综合器在较高层次的VHDL 源文件中遇到库语言就将随库指定的源文件读入并参与综合这就是说在综合过程中所要调用的库必须以VHDL 源文件的方式存在并能使综合器随时读入使用为此必须在这一设计实体前使用库语句和USE 语句USE 语句将在后面介绍一般地在VHDL 程序中被声明打开的库和程序包对于本项设计称为是可视的那么这些库中的内容就可以被设计项目所调用有些库被IEEE 认可成为IEEE库IEEE 库存放了IEEE 标准1076 中标准设计单元如Synopsys 公司的STD_LOGIC_UNSIGNED 程序包等
通常 库中放置不同数量的程序包而程序包中又可放置不同数量的少子程序子程序中又含有函数过程设计实体元件等基础设计单元VHDL 语言的库分为两类一类是设计库如在具体设计项目中设定的目录所对应的
46 VHDL实用教程WORK 库另一类是资源库资源库是常规元件和标准模块存放的库如IEEE 库设计
库对当前项目是默认可视的无需用LIBRARY 和USE 等语句以显式声明
库LIBRARY 的语句格式如下
LIBRARY 库名
这一语句即相当于为其后的设计实体打开了以此库名命名的库以便设计实体可以
利用其中的程序包如语句 LIBRARY IEEE ; 表示打开IEEE 库
1. 库的种类
VHDL 程序设计中常用的库有以下几种
h IEEE 库
IEEE 库是VHDL 设计中最为常见的库它包含有IEEE 标准的程序包和其它一些支
持工业标准的程序包IEEE 库中的标准程序包主要包括STD_LOGIC_1164
NUMERIC_BIT 和NUMERIC_STD 等程序包其中的STD_LOGIC_1164 是最重要和最常
用的程序包大部分基于数字系统设计的程序包都是以此程序包中设定的标准为基础的
此外还有一些程序包虽非IEEE 标准但由于其已成事实上的工业标准也都并入
了IEEE 库这些程序包中最常用的是Synopsys 公司的STD_LOGIC_ARITH
STD_LOGIC_SIGNED 和STD_LOGIC_UNSIGNED 程序包目前流行于我国的大多数EDA
工具都支持Synopsys 公司的程序包一般基于大规模可编程逻辑器件的数字系统设计
IEEE 库中的四个程序包STD_LOGIC_1164 STD_LOGIC_ARITH STD_LOGIC_SIGNED
和STD_LOGIC_UNSIGNED 已足够使用另外需要注意的是在IEEE 库中符合IEEE
标准的程序包并非符合VHDL 语言标准如STD_LOGIC_1164 程序包因此在使用VHDL
设计实体的前面必须以显式表达出来
h STD 库
VHDL 语言标准定义了两个标准程序包即STANDARD 和TEXTIO 程序包文件输
入/输出程序包它们都被收入在STD 库中只要在VHDL 应用环境中即可随时调用
这两个程序包中的所有内容即在编译和综合过程中VHDL 的每一项设计都自动地将其
包含进去了由于STD 库符合VHDL 语言标准在应用中不必如IEEE 库那样以显式表
达出来如在程序中以下的库使用语句是不必要的
LIBRARY STD
USE STD.STANDARD.ALL ;
h WORK 库
WORK 库是用户的VHDL 设计的现行工作库用于存放用户设计和定义的一些设计单
元和程序包因而是用户的临时仓库用户设计项目的成品半成品模块以及先期已设
计好的元件都放在其中WORK 库自动满足VHDL 语言标准在实际调用中也不必以显
式预先说明基于VHDL 所要求的WORK 库的基本概念在PC 机或工作站上利用VHDL
进行项目设计不允许在根目录下进行而是必须为此设定一个目录用于保存所有此项
KONXIN 杭州康芯电子有限公司 KONXIN |