VHDL笔记第二部分

VHDL库

用于提高设计效率,使设计遵循某些同意的语言标准或数据格式,将一些有用的信息汇集在一个或几个标准库中,以供调用

库中主要包含,程序包,数据集合,元件

使用库必须在设计是提前调用库语句和USE语句

library 库名
库的分类

1)设计库:STD库和WORK库

STD库包含standard和textio两个程序包
STD库定义了多种常用数据类型,如BIT_VECTOR , BIT。 STD库为所有的设计单元所共享、隐含定义、默认和“可见”。在VHDL程序设计中,以下的库语句是不必要的:
LIBRARY STD;
USE STD.STANDARD.ALL;

WORK库:用户的VHDL设计的现行工作库,存放用户设计和定义的一些设计单元和程序包

2)资源库:常规元件和标准模块存放的库
最常用的资源库为 IEEE库和VITAL库
IEEE库符合(支持)工业标准的程序包的集合
IEEE库主要包括的程序包:
STD_LOGIC_1164 、NUMERIC_BIT、NUMERIC_STD、STD_LOGIC_ARITH、STD_LOGIC_SIGNED 、STD_LOGIC_UNSIGNED
大部分基于数字系统设计的程序包都是以此程序包中设定的标准为基础

库的用法

在VHDL语言中,库的说明语句总是放在实体单元前面。

USE语句的使用有两种常用格式:
USE 库名.程序包名.项目名 ;
USE 库名.程序包名.ALL ;

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
程序包(PACKAGE)

用于收集共享的数据类型、子程序或数据对象
1.程序包的组成内容
(1) 常数说明
(2) VHDL数据类型说明
(3) 元件定义
(4) 子程序

2.程序包的语句结构
在这里插入图片描述
程序包首

PACKAGE pac1 IS                               --程序包首开始
TYPE byte IS RANGE 0 TO 255;      --定义数据类型byte
SUBTYPE nibble IS byte RANGE 0 TO 15; --定义子类型nibble
CONSTANT byte_ff : byte:= 255; 	--定义常数byte_ff
SIGNAL addend : nibble; 		--定义信号addend
COMPONENT byte_adder                  	--定义元件
PORT (a, b: IN byte;
                 c: OUT byte;
    overflow: OUT BOOLEAN);
END COMPONENT;
FUNCTION my_function (a: IN byte) Return byte; --定义函数
END pacl;                                          	--程序包首结束

如果要使用上面程序包中的所有定义,可利用USE语句按如下方式去调用这个程序包。

LIBRARY WORK;
USE WORK.pacl.ALL;
ENTITY …
ARCHITHCYURE …
…

由于WORK库是默认打开的,所以可省去LIBRARY WORK语句,只要加入相应的USE语句即可。

在现行WORK库中定义程序包并立即使用的示例

1)程序包首

PACKAGE  seven IS
      SUBTYPE segments is BIT_VECTOR(0 TO 6) ;
      TYPE bcd IS RANGE 0 TO 9 ;
  END seven ;
  USE WORK.seven.ALL ; -- WORK库默认是打开的,
  ENTITY decoder IS
      PORT (input:in bcd; drive : out segments) ;
  END decoder ;
  ARCHITECTURE simple OF decoder IS
  BEGIN
      WITH input SELECT
        drive <=  B"1111110"  WHEN 0 ,
                   B"0110000"  WHEN 1 ,
                   B"1101101"  WHEN 2 ,
                   B"1111001"  WHEN 3 ,
                   B"0110011"  WHEN 4 ,
                   B"1011011"  WHEN 5 ,
                   B"1011111"  WHEN 6 ,
                   B"1110000"  WHEN 7 ,
                   B"1111111"  WHEN 8 ,
                   B"1111011"  WHEN 9 ,
                   B"0000000"  WHEN  OTHERS ;
  END simple ; 
        

2)程序包体

程序包体是在程序包首中已定义的子程序的子程序体。程序包体说明部分的组成内容可以是USE语句(允许对其它程序包的调用)、子程序定义、子程序体、数据类型说明、子类型说明和常数说明等。对于没有子程序说明的程序包体可以省去。
如果仅仅是定义数据类型或定义数据对象等内容,程序包体是不必要的,程序包首可以独立地被使用;但在程序包中若有子程序说明时,则必须有对应的程序包体。这时,子程序体必须放在程序包体中。

3.常用的预定义程序包

STD_LOGIC_1164程序包
STD_LOGIC_ARITH程序包
STD_LOGIC_UNSIGNED和STD_LOGIC_SIGNED程序包
STANDARD和TEXTIO程序包

配置(CONFIGURATION)

每个实体可以拥有多个不同的结构体,配置主要是为设计实体指定一个结构体。

配置语句的一般格式如下:

CONFIGURATION配置名 OF 实体名IS
  配置说明语句;
END配置名;

配置说明语句有多种形式,选配不包含BLOCK语句和COMPONENT语句的结构体时,可采用如下简单形式:
FOR选配结构体名
END FOR;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

展桑~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值