VHDL语言学习 下载本文

内容发布更新时间 : 2024/5/24 1:56:28星期一 下面是文章的全部内容请认真阅读。

VHDL学习

(本学习以MAXPLUS10为工具软件)

第一章、 VHDL程序的组成

一个完整的VHDL程序是以下五部分组成的:

库(LIBRARY):储存预先已经写好的程序和数据的集合

程序包(PACKAGE):声明在设计中将用到的常数、数据类型、元件及子程序 实体(ENTITY):声明到其他实体或其他设计的接口,即定义本定义的输入输出端口 构造体(ARCHITECTUR):定义实体的实现,电路的具体描述

配置(CONFIGURATION):一个实体可以有多个构造体,可以通过配置来为实体选择其中一个构造体 1.1库

库用于存放预先编译好的程序包(PACKAGE)和数据集合体,可以用USE语句调用库中不同的程序包,以便不同的VHDL设计使用。

库调用的格式: LIRARY 库名

USE 库名.所要调用的程序包名.ALL

可以这样理解,库在硬盘上的存在形式是一个文件夹,比如库IEEE,就是一个IEEE的文件夹,可以打开MAX PLUSR安装源文件夹,进入VHDL93的文件夹,就可以看到一个IEEE的文件夹,这就是IEEE库,而里面的文件就是一个个对程序包或是数据的描述文件,可以用文本打开来查看文件的内容。

例如在VHDL程序里面经常可以看到“USE IEEE.STD_LOGIC_1164”,可以这样解释这句话,本序里要用到IEEE文件夹下程序包STD_LOGIC_1164,而STD_LOGIC_1164是可以在IEEE文件夹的STD1164.vhd文件里面看到的,用文本打开STD1164.vhd,可以看到有一名为“IEEE.STD_LOGIC_1164”PAKAGE定义。

简单的来说,库相当于文件夹,而程序包和数据就相当于文件夹里面的文件的内容(注意:不是相当于文件,因为程序包和数据都是在文件里面定义的,而文件名是和实体名相同的,可以说实体相当于文件)。

到了这里就可以考虑一个问题,“在安装MAX PLUS时有多少个库已经存在的呢”,要得到这个问题的答案,可以打开安装目录下的“VHDL93”文件夹,就可以看到里面有五个文件夹,分别是ATERA、IEEE、LPM、STD、VITAL,也就是说你看到了五个库,分别是 ATERA功能库:增强型功能部件,即IP核,包括数字信号处理、通信、PCI和其他总线接口、处理器和外设及外设的功能。

IEEE库:由IEEE(美国电子电机工程师学会)制定的标准库 LPM库:参数可调模块库 STD库:符合VHDL标准的库

VITAL库:vhdl上对asic提供高精确度及高效率的仿真模型库

调用库的表达有两种,一是显式表式,就是用LIBRARY和USE来调用库里面的程序包或数据,适用于那些不符合VHDL标准的库调用,比如IEEE库;另一种是隐式表式,就是不用说明就自动调用的,适合于符合VHDL标准的库调用,比如STD库,不用写明调用就已经自动调用出来了。

除了上面所介绍的库外,还有用户自定义库及WORK库,WORK库是用户的VHDL现行工作库,从上面的理解可知,WORK库就是用户当前编辑文件所在的文件夹,文件夹里面的其他文件里面所描述包或数据的集合就是WORK库里面的包和数据的集合。由于WORK库自动满足VHDL标准,因此在就应用中不必以显式预先说明(比如 LIBRARY WORK这样的定义是多余的)。

1.2程序包

在VHDL中,常量、数据类型与子程序可以在实体说明部分和结构体部分加以说明,且实体说明部分所定义的常量、数据类型与子程序在相应的结构体中是可见的(可以被使用的),但在一个实体的说明部分与结构体的部分对于其他实体的说明部分与结构部分是不可见的(注:实体相当于一个文件),程序包(PACKAGE)就是为了使一组常量说明、数据说明、

子程序说明和元件说明等内容对于多个设计实体都成为可见的而提供的一种结构,可以这样理解一个实体(文件)里的PACKAGE对常量等的定义在其于的实体(文件)里是可以被使用的。

程序包由包头和包体构成,包头格式: PACKAGE 程序包名 IS 说明语句; END 程序包名;

说明语句部分可为:USE语句、类型定义、子程序声明(定义在包体)、常量定义、信号声明、元件声明等。

包体格式:

PACKAGE BODY 程序包名 IS 说明语句; END 程序包名

说明部分用于子程序的定义,注:在包中对子程序的说明分为两部分,子程序声明放在包头,子程序的定义在包体。

实体对于程序包不是自动可见(即不是自动就设为使用)的,为了使用程序包说明的内容就必须在实体的开始加上USE语句(即是要用USE来调用程序包里面所说明的东西),即使实体和程序包是在同一个文件里也要这样调用。 1.3实体

实体(ENTITY)是VHDL设计中最其本的组成部分之一(另一个是结构体),VHDL表达的所有设计均与实体有关。

实体类似于原理图中的一个部件符号,它并不描述设计的具体功能,只是定义所需的全部输入/输出信号。 实体格式如下: