3029|4

7228

帖子

195

TA的资源

五彩晶圆(高级)

楼主
 

【Espier FPGA VHDL学习帖】(助学)第13帖 VHDL库文件知多少 [复制链接]

不管是FPGA硬件语言,还是一般的单片机的C程序都会涉及到。
什么是库呢?
1.1VHDL的库
定义:库是经编译后的数据的集合,它存放包集合定义,实体定义,结构定义和配置定义
库的功能类似于UNIX何MS-DOS操作系统中的目录,库中存放设计的数据。在VHDL语言中,库的说明总是放在设计单元的最前面
                           LIBRARY     库名;
这样,在设计单元内的语句就可以使用库中的数据。由此可见,库的好处就在于使设计者可以共享已经编译过的设计结果。在VHDL语言中可以存在多个不同的库,但是库和库之间是独立的,不能互相嵌套。


1.3库的种类
当前在VHDL中主要有五类库:IEEE库、STD库、代工厂元件库、用户定义的库和WORK库。 此外还有VITAL库。
1.4 程序包
程序包是用VHDL语言编写的一段程序,可以供其他设计单元调用和共享,相当于公用的“工具箱”,各种数据类型、子程序等一旦放入了程序包,就成为共享的“工具”,类似于C语言的头文件,使用它可以减少代码的输入量,使程序结构清晰。在一个设计中,实体部分所定义的数据类型、常量和子程序可以在相应的结构体中使用,但在一个实体的声明部分和结构体部分中定义的数据类型、常量及子程序却不能被其他设计单元使用。因此,程序包的作用是可以使一组数据类型、常量和子程序能够被多个设计单元使用。
程序包分为包头和包体两部分。包头(也称程序包说明)是对包中使用的数据类型、元件、函数和子程序进行定义,其形式与实体定义类似。包体规定了程序包的实际功能,存放函数和过程的程序体,而且还允许建立内部的子程序、内部变量和数据类型。包头、包体均以关键字PACKAGE开头。程序包格式如下。
包头格式:PACKAGE 程序包名 IS
[包头说明语句]
END 程序包名;
包体格式:PACKAGE BODY 程序包名 IS
[包体说明语句]
END 程序包名;
调用程序包的通用模式为:USE 库名.程序包名.ALL;
常用预定义程序包有以下四个:
(1)STD_LOGIC_1164程序包
STD_LOGIC_1164程序包定义了一些数据类型、子类型和函数。数据类型包括:STD_ULOGIC、STD_ULOGIC _VECTOR、STD_LOGIC和STD_LOGIC _VECTOR,用的最多最广的是STD_LOGIC和STD_LOGIC_VECTOR数据类型。调用STD_LOGIC_1164程序包中的项目需要使用以下语句:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
该程序包预先在IEEE库中编译,是IEEE库中最常用的标准程序包,其数据类型能够满足工业标准,非常适合CPLD(或FPGA)器件的多值逻辑设计结构。

std_logic_1164 IEEE的标准库,仅定义了std_ulogic, std_ulogic_vector, std_logic, std_logic_vector等类型 以及他们的逻辑操作(and, or, xor, not, nand, nxor, nor)
  
numeric_std IEEE的标准库,定义了unsigend/signed以及他们的算术运算(包括与integer),+,-,*,/, rem, mod, abs to_integer / to_signed / to_unsigned也都在这个库里面定义。


(2)STD_LOGIC_ARITH程序包
该程序包是美国Synopsys公司的程序包,预先编译在IEEE库中。主要是在STD_LOGIC_1164程序包的基础上扩展了UNSIGNED(无符号)、SIGNED(符号)和SMALL_INT(短整型)三个数据类型,并定义了相关的算术运算符和转换函数。是synopsys的一个扩展,定义了unsigned, signed与integer, std_ulogic之间的算术运算、关系运算(>, <, >=, <=, =, /=)。算术运算返回类型可以是signed, unsigned或std_logic_vector,还定义了unsigned, signed, integer, std_logic_vector机种类型之间的转换函数CONV_STD_LOGIC_VECTOR, CONV_INTEGER, CONV_SIGNED, CONV_UNSIGNED

(3)STD_LOGIC_SIGNED程序包
该程序包预先编译在IEEE库中,也是Synopsys公司的程序包。主要定义有符号数的运算,重载后可用于INTEGER(整数)、STD_LOGIC(标准逻辑位)和STD_LOGIC _VECTOR(标准逻辑位向量)之间的混合运算,并且定义了STD_LOGIC _VECTOR到INTEGER的转换函数。
    跟std_logic_unsigned类似,唯一的差别是,这里面的function都是先把操作数(std_logic_vector或integer类型)都转换成signed之后再用std_logic_arith库中的function完成
  在用这些库的时候,基本原则是要知道你想要EDA软件实现什么样的运算。大部分情况下,std_logic_vector
  应该作为unsigned参与运算。如果一定要std_logic_vector作为signed参与运算,最好用显示的to_integer来做。

(4)STD_LOGIC_UNSIGNED程序包
该程序包用来定义无符号数的运算,其他功能与STD_LOGIC_SIGNED相似。
synopsys的一个扩展,定义了基于std_logic_vectorstd_logic_vector
  std_logic_vector与integer之间的算术运算, >, <, >=, <=, =, /=
  返回类型是std_logic_vector或boolean
  注意这里面的function的运算都是基于unsigned,就是说std_logic_vector和integer都变成unsigned之后再用std_logic_arith库中的function完成



[ 本帖最后由 常见泽1 于 2013-11-17 02:01 编辑 ]

1.JPG (46.5 KB, 下载次数: 0)

1.JPG
此帖出自FPGA/CPLD论坛

最新回复

过奖了。哪有“通吃”呢! FPGA只是以前看过书,没有实际练习过。  详情 回复 发表于 2013-11-19 01:04
点赞 关注
 

回复
举报

7228

帖子

195

TA的资源

五彩晶圆(高级)

沙发
 
【菜鸟FPGA VHDL学习帖】第13帖 VHDL库文件知多少.pdf (180.61 KB, 下载次数: 7)
此帖出自FPGA/CPLD论坛
 
 

回复

1万

帖子

25

TA的资源

裸片初长成(高级)

板凳
 
以后准备买个板子,和楼主一块学习它。
此帖出自FPGA/CPLD论坛

点评

大神没学过么 在我印象里 你好像都通吃的  详情 回复 发表于 2013-11-18 22:31
 
 
 

回复

7228

帖子

195

TA的资源

五彩晶圆(高级)

4
 

回复 板凳dontium 的帖子

大神没学过么 在我印象里 你好像都通吃的
此帖出自FPGA/CPLD论坛

点评

过奖了。哪有“通吃”呢! FPGA只是以前看过书,没有实际练习过。  详情 回复 发表于 2013-11-19 01:04
 
 
 

回复

1万

帖子

25

TA的资源

裸片初长成(高级)

5
 

回复 4楼常见泽1 的帖子

过奖了。哪有“通吃”呢!
FPGA只是以前看过书,没有实际练习过。
此帖出自FPGA/CPLD论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表