




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
图2.4VHDL程序设计基本结构2.2VHDL程序基本结构一个相对完整的VHDL程序通常包含实体(Entity)、结构体(Architecture)、配置(Configuration)、程序包(Package)和库(Library)5个部分。2021/6/271
(1)库、程序包使用说明:用于打开(调用)本设计实体将要用到的库、程序包;程序包存放各个设计模块共享的数据类型、常数和子程序等;库是专门存放预编译程序包的地方。(2)实体:用于描述所设计的系统的外部接口信号,是可视部分;(3)结构体:用于描述系统内部的结构和行为,建立输入和输出之间的关系,是不可视部分。
(4)配置说明语句:主要用于以层次化的方式对特定的设计实体进行元件例化,或是为实体选定某个特定的结构体。2021/6/272
实体(ENTITY)是一个设计实体的表层设计单元,其功能是对这个设计实体与外部电路进行接口描述。它规定了设计单元的输入输出接口信号或引脚,是设计实体经封装后对外的一个通信界面。
1.实体语句结构
实体说明单元的常用语句结构如下:
ENTITY
实体名
IS[GENERIC(类属表);][PORT(端口表);]END[ENTITY]
实体名;2.2.1实体2021/6/273
实体说明单元必须以语句“ENTITY实体名IS”开始,以语句“ENDENTITY
实体名;”结束。
实体名是设计者自己给设计实体的命名,可作为其他设计实体对该设计实体进行调用时用。中间在方括号内的语句描述,在特定的情况下并非是必须的。例如构建一个VHDL仿真测试基准等情况中可以省去方括号中的语句。2021/6/2742.类属(GENERIC)说明语句
类属(GENERIC)参量是一种端口界面常数,常以一种说明的形式放在实体或块结构体前的说明部分。类属为所说明的环境提供了一种静态信息通道,类属的值可以由设计实体外部提供。类属说明的一般书写格式如下:
GENERIC([常数名;数据类型[:设定值]{;常数名:数据类型[:设定值]});2021/6/275LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYAND2IS
GENERIC(RISEW:TIME:=1ns;
FALLW:TIME:=1ns);
PORT(A1:INSTD_LOGIC;
A0:INSTD_LOGIC;
Z0:OUTSTD_LOGIC);
ENDENTITYAND2;【例2.2】2输入与门的实体描述
类属说明中定义参数RISEW为上沿宽度,FALLW为下沿宽度,它们分别为1ns,这两个参数用于仿真模块的设计。2021/6/276
实体端口说明的一般书写格式如下:
PORT(端口名:端口模式数据类型;
{端口名:端口模式数据类型});
端口名是设计者为实体的每一个对外通道(系统引脚)所取的名字,一般用几个英文字母组成;
端口模式(端口方向)是指这些通道上的数据流动方式,即定义引脚是输入还是输出;
数据类型是指端口上流动的数据的表达格式。
3.PORT端口说明2021/6/277图2.5
端口模式符号图
IEEE1076标准包中定义了4种常用的端口模式,各端口模式的功能及符号分别见表2.1和图2.5。表2.1
端口模式说明2021/6/278PORT(n0,n1,select:INBIT;
q:OUTBIT;
bus:OUTBIT_VECTOR(7
DOWNTO0));【例2.3】端口模式及数据类型定义
说明:n0,n1,select
是输入引脚,属于BIT型;
q是输出引脚,BIT型;
bus是一组8位二进制总线,属于BIT_VECTOR。2021/6/279
LIBRARYIEEE;
USEIEEE.STD_LOGIC.1164.ALL;
ENTITYmmIS
PORT(n0,n1,select:INSTD_LOGIC;
Q:OUTSTD_LOGIC;
Bus:OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDENTITYmm;【例2.4】端口模式及IEEE库数据类型定义
例中端口数据类型取自IEEE标准库(该库中有数据类型和函数的说明),其中STD_LOGIC取值为“0”,“1”,“X”和“Z”。因为使用了库,所以在实体说明前要增加库说明语句。
2021/6/2710
2.2.2结构体
结构体(ARCHITECTURE)是设计实体的一个重要部分,结构体将具体实现一个实体。结构体不能单独存在,它必须有一个界面说明,即一个实体。对于具有多个结构体的实体,必须用CONFIGURATION配置语句指明用于综合的结构体和用于仿真的结构体,即在综合后的可映射于硬件电路的设计实体中,一个实体只对应一个结构体。在电路中,如果实体代表一个器件符号,则结构体描述了这个符号的内部行为。2021/6/2711ARCHITECTURE
结构体名
OF
实体名IS
[说明语句]--内部信号,常数,数据类型,函数等的定义
BEGIN[功能描述语句]END[ARCHITECTURE][结构体名];1.结构体语句格式2021/6/2712
ENTITYmuxIS
PORT(a0,a1:INBIT;
Sel:INBIT;
Sh:OUTBIT);
ENDmux;
ARCHITECTUREdataflowOFmuxIS
BEGINsh<=(a0ANDsel)OR(NOTselANDa1);
ENDdataflow;
【例2.5】结构体描述2021/6/2713
结构体中的说明语句是对结构体的功能描述语句中将要用到的信号(SIGNAL)、数据类型(TYPE)、常数(CONSTANT)、元件(COMPONENT)、函数(FUNCTION)和过程(PROCEDURE)等加以说明的语句。在一个结构体中说明和定义的数据类型、常数、元件、函数和过程只能用于这个结构体中,若希望其能用于其他的实体或结构体中,则需要将其作为程序包来处理。2.结构体说明语句2021/6/27143.功能描述语句
描述设计实体的具体行为,它包含两类语句:
(1)并行语句:并行语句总是在进程语句(PROCESS)的外部,语句的执行与书写顺序无关,总是同时被执行。
(2)顺序语句:顺序语句总是在进程语句(PROCESS)的内部,该语句是顺序执行的。一个结构体可以包含几个类型的子结构描述:BLOCK(块)描述、PROCESS(进程)描述、SUNPROGRAMS(子程序)描述。2021/6/2715
块语句是由一系列并行执行语句构成的组合体,它的功能是将结构体中的并行语句组成一个或多个模块。
进程语句定义顺序语句模块,用于将从外部获得的信号值,或内部的运算数据向其他的信号进行赋值。
子程序调用语句用于调用一个已设计好的子程序。
信号赋值语句将设计实体内的处理结果向定义的信号或界面端口进行赋值。
元件例化语句对其他的设计实体作元件调用说明。2021/6/2716使用BLOCK语句描述的格式如下:
[块标号:]BLOCK
BEGIN
ENDBLOCK[块标号];1)BLOCK块语句2021/6/2717
ENTITYmuxIS
PORT(d0,d1,sel:INBIT;
q:OUTBIT);
ENDmux;
ARCHITECTUREconnectOFmuxIS
SIGNALtmp1,tmp2,tmp3:BIT;
BEGIN
cale:BLOCK
BEGINtmp1<=d0ANDsel;
tmp2<=d1AND(NOTsel);
tmp3<=tmp1ORtmp2;
q<=tmp3;
ENDBLOCKcale;
ENDconnect;【例2.6】
用块语句实现的二选一电路2021/6/2718进程描述的格式如下:
[进程名]:PROCESS(信号1,信号2,…)
BEGIN┇
ENDPROCESS[进程名];进程语句中总是带有信号变量(敏感变量),只有当信号变量发生变化时,进程才被启动,将进程里的语句从上到下顺序执行一遍,执行完了就回到开始的PROCESS语句。2)进程(Process)语句描述2021/6/2719ENTITYmux2IS
PORT(d0,d1,sel:INBIT;
q:OUTBIT);
ENDmux2;
ARCHITECTUREconnectOFmux2IS
BEGIN
cale:PROCESS(d0,d1,sel)
VARIABLEtmp1,tmp2,tmp3:BIT;
BEGINtmp1:=d0ANDsel;
tmp2:=d1AND(NOTsel);
tmp3:=tmp1ORtmp2;
q<=tmp3
ENDPROCESScale;
ENDconnect;【例2.7】用进程语句实现的二选一电路2021/6/2720子程序就是在主程序调用它以后能将处理结果返回给主程序。在VHDL中有2种类型:过程和函数。●过程语句
PROCEDURE
过程名(参数1,参数2)IS
[定义语句];
BEGIN
[顺序处理语句];
END过程名;3)子程序语句描述2021/6/2721
●函数语句FUNCTION函数名(参数1,参数2)RETURN数据类型名IS
[定义语句];
BEGIN
[顺序处理语句]RETURN[返回变量名]END函数名;2021/6/2722
FUNCTIONmin(x,y:INTEGER)RETURNINTEGER
IS
BEGIN
IFX<YTHEN
RETURN(x);
ELSE
RETURN(y);
ENDIF;
ENDmin;【例2.8】FUNCTION语句应用举例2021/6/2723
PROCEDUREvector_to_int(q:ININTEGER;
x_flag:OUTBOOLEAN;
z:INSTD_LOGIC_VECTOR)IS
BEGINq:=0;
x_flag:=FALSE;
FORiINz’RANGELOOPq:=q*2;
IF(z(i)=1)THENq:=q+1;
ELSEIF(z(i)/=0)THENx_flag:=TRUE;
ENDIF;
ENDLOOP;
ENDvector_to_int;
【例2.9】PROCEDURE语句应用2021/6/27242.2.3库
库是经编译后的数据的集合,它存放包定义、实体定义、构造定义和配置定义。使设计者可以共享已经编译的设计结果。VHDL中常用的库如下:
IEEE库
IEEE库中包含IEEE标准的程序包,包括STD_LOGIC_1164、NUMERIC_BIT、NUMERIC_STD以及其他一些程序包。其中STD_LOGIC_1164是最主要的程序包,大部分可用于可编程逻辑器件的程序包都以这个程序包为基础。
2021/6/2725STD库
STD库包含STANDARD和TEXTIO程序包。
STANDARD程序包中定义了许多基本的数据类型、子类型和函数。
TEXTIO是文件输入/输出程序包,是VHDL语言标准定义的。在VHDL的编译和综合过程中,系统都能自动调用因此不必在程序开始处打开该库及其程序包。WORK库
WORK库是VHDL的现行工作库,用于存放用户设计和定义的一些单元和程序包。在使用该库时无需进行任何说明。2021/6/2726VITAL库
使用VITAL可以提高门级时序仿真的精度,一般在VHDL语言程序进行仿真时使用。主要包含两个程序包:
VITAL_timing:时序仿真包;
VITAL_primitives:基本单元程序包。现在的EDA开发工具都已将VITAL库的程序包加到IEEE库了。
2021/6/2727
在使用库之前,一定要进行库说明和包说明。
库和包的说明格式
LIBRARY
库名;
USE
库名.程序包名.项目名/all2.2.4程序包
包中罗列VHDL中用到的信号定义、常数定义、数据类型、元件语句、函数定义和过程定义,它是一个可编译的设计单元,也是库结构中的一个层次,使用包时可以用USE语句说明,例如:USEIEEE.STD_LOGIC_1164.ALL2021/6/2728
程序包分为包首和包体。
(1)程序包首格式
PACKAGE
包名IS[说明语句]
END
包名;
(2)程序包体格式
PACKAGEBODY
包名IS[说明语句]
END[PACKAGEBODY]包名;2021/6/2729PACKAGElogicIS
TYPEthree_level_logicIS(‘0’,’1’,’z’);
CONSTANTunknown_value:three_level_logic:=’0’;
FUNCTIONinvert(input:three_level_logic)
RETURNthree_level_logic;END
logic;【例2.10】程序包首2021/6/2730PACKAGEBODYLOGICIS
FUNCTIONinvert(input:three_level_logic)
returnthree_level_logicis
bengin
Caseinputis
when‘0’=>return‘1’;
when‘1’=>return‘0’;
when‘z’=>return‘z’;
Endcase;
Endinvert;Endlogic;[例2.11]
程序包体2021/6
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 潍坊市坊子区事业单位招聘真题2024
- 山东阳信县县直学校招聘真题2024
- 柳州银行招聘真题2024
- 2024年四川西南医科大学附属天府医院招聘考试真题
- 甘肃兰州工业学院招聘真题2024
- 2024年成都银行招聘考试真题
- 《2025企业临时用工劳动合同》
- 2025国际货物销售合同(合同版本)
- 二零二四年份2月份保护区边缘地带大熊猫冲突防范教学模块
- 拉脱维亚语中的神话词汇研究论文
- 2024年北京农商银行招聘笔试参考题库含答案解析
- 小萝卜头的故事演讲稿3分钟三篇
- 六年级音乐上册第二单元悠扬民歌教案
- 消防管道整改安装施工方案
- 隧道衬砌裂缝及渗水处理方案
- 倡导绿色-五大发展理念解析课件
- 《都江堰》教学讲解课件
- 深信服下一代防火墙介绍
- 幼儿园小班音乐教案《做客》含反思
- GB/T 4798.3-2023环境条件分类环境参数组分类及其严酷程度分级第3部分:有气候防护场所固定使用
- 精神科常用药物-课件
评论
0/150
提交评论