89VHDL硬件描述语言

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

YANGTZENORMALUNIVERSITYVHDL硬件描述语言(二)YANGTZENORMALUNIVERSITYVHDL硬件描述语言(二)2.1VHDL程序结构2.2VHDL的语言元素2.3VHDL的基本描述语句2.4VHDL结构体的三种描述方法YANGTZENORMALUNIVERSITY2.1VHDL程序结构2.1.1VHDL程序基本结构2.1.2VHDL结构体的基本子结构YANGTZENORMALUNIVERSITY2.1VHDL程序结构2.1.1VHDL程序基本结构例1一个2输入的与门的逻辑描述LIBRARYieee;--库说明语句USEieee.std_logic_1164.ALL;--程序包说明语句ENTITYand2ISPORT(a,b:INSTD_LOGIC;y:OUTSTD_LOGIC);ENDand2;ARCHITECTUREand2xOFand2ISBEGINy=aANDb;ENDand2x;实体部分结构体部分YANGTZENORMALUNIVERSITYVHDL设计文件的两个基本组成部分实体(Entity)结构体(Architecture)配置(Configuration)包集合(Package)库(Library)一个完整的VHDL程序库用于存放已编译的实体、结构体、包集合和配置2.1.1VHDL程序基本结构实体部分描述设计系统的外部接口信号(即输入/输出信号)结构体用于描述系统的内部电路配置用于从库中选取所需元件安装到设计单元的实体中包集合存放各设计模块能共享的数据类型、常数、子程序等YANGTZENORMALUNIVERSITY2.1.1.1实体(ENTITY)实体的一般格式为:ENTITY实体名IS[类属参数说明];[端口说明];END;ENTITY、IS、END是VHDL的关键字(保留字)。实体中的每一个I/O信号被称为端口,其功能对应于电路图符号的一个引脚。端口说明则是对一个实体的一组端口的定义,即对基本设计实体与外部接口的描述。端口是设计实体和外部环境动态通信的通道。ayand2b类属参数说明是可选部分。如果需要,可使用以“GENERIC”语句来指定该设计单元的类属参数(如延时、功耗等)。实体名、端口名等均应为符合VHDL命名规则的标识符。YANGTZENORMALUNIVERSITY端口说明的一般格式为:PORT(端口名{,端口名}:端口模式数据类型;端口名{,端口名}:端口模式数据类型);端口模式用来说明数据传输通过该端口的方向。端口模式有以下几类:IN(输入):仅允许数据流进入端口。主要用于时钟输入、控制输入、单向数据输入。OUT(输出):仅允许数据流由实体内部流出端口。该模式通常用于终端计数一类的输出,不能用于反馈。BUFFER(缓冲):该模式允许数据流出该实体和作为内部反馈时用,但不允许作为双向端口使用。INOUT(双向):可以允许数据流入或流出该实体。该模式也允许用于内部反馈。如果端口模式没有指定,则该端口处于缺省模式为:IN。数据类型原则上可以是任何标准的数据类型和用户自定义类型。PORT(a,b:INSTD_LOGIC;y:OUTSTD_LOGIC);YANGTZENORMALUNIVERSITYinininoutoutbufferinoutmodemode模式及其信号源YANGTZENORMALUNIVERSITY类属参数说明的格式为:GENERIC(参数名:参数类型:=初始值);例2:加入类属说明的2输入的与门的逻辑描述ENTITYand2ISGENERIC(m:TIME:=1ns);PORT(a,b:INSTD_LOGIC;y:OUTSTD_LOGIC);ENDand2;ARCHITECTUREand2xOFand2ISSIGNALu:BIT;BEGINu=aANDb;y=uafter(m)whenu=’1’elseuafter(m);ENDand2x;YANGTZENORMALUNIVERSITY例3:四位加法器实体说明程序ENTITYadd4ISPORT(a,b:INSTD_LOGIC_VECTOR(3downto0);Ci:INSTD_LOGIC;Sum:OUTSTD_LOGIC_VECTOR(3downto0);Co:OUTSTD_LOGIC);ENDadd4;由实体说明画出四位加法器add4的电路图如下所示。add4a[3..0]b[3..0]Sum[3..0]CiCoYANGTZENORMALUNIVERSITY2.1.1.2结构体(ARCHITECTURE)结构体的一般格式如下:ARCHITECTURE结构体名OF实体名IS[结构体说明部分];BEGIN[并发处理语句];END结构体名;结构体说明是指对结构体需要使用的信号、常数、数据类型和函数进行定义和说明。并发处理语句位于BEGIN和END之间,这些语句具体地描述了构造体的行为。并发处理语句是功能描述的核心部分,也是变化最丰富的部分。并发处理语句可以使用赋值语句、进程语句、元件例化语句、块语句以及子程序等。需要注意的是,这些语句都是并发(同时)执行的,与排列顺序无关。YANGTZENORMALUNIVERSITY2.1.1.3配置(CONFIGURATION)配置的基本格式为:CONFIGURATION配置名OF实体名IS[配置说明];END配置名;配置语句描述了层与层之间的连接关系,以及实体与构造体之间的连接关系。设计者可以利用配置语句选择不同的构造体,使其与要设计的实体相对应;在仿真某一个实体时,可以利用配置选择不同的构造体进行性能对比实验,以得到性能最佳的构造体。YANGTZENORMALUNIVERSITYCONFIGURATION配置名OF实体名ISFOR选配结构体名ENDFOR;END配置名;配置语句根据不同情况,其说明语句有简有繁。最简单的缺省配置格式为:例4:加入了配置的4位等值比较器设计文件LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYcomp4ISPORT(a,b:INSTD_LOGIC_VECTOR(3downto0);y:OUTSTD_LOGIC);ENDcomp4;YANGTZENORMALUNIVERSITY--结构体1:ARCHITECTUREbehaviorOFcomp4ISBEGINComp:PROCESS(a,b)BEGINIFa=bTHENy=’1’;ELSEy=’0’;ENDIF;ENDPROCESScomp;ENDbehavior;--结构体2:ARCHITECTUREdataflowOFcomp4ISBEGINy=’1’WHEN(a=b)ELSE’0’;ENDdataflow;YANGTZENORMALUNIVERSITY--结构体3:ARCHITECTUREstructuralOFcomp4ISCOMPONENTxnor2PORT(in1,in2:INSTD_LOGIC;Out:OUTSTD_LOGIC);ENDCOMPONENT;COMPONENTand4PORT(in1,in2,in3,in4:INSTD_LOGIC;Out:OUTSTD-LOGIC);ENDCOMPONENT;SIGNALs:STD_LOGIC_VECTOR(0to3);BEGINu0:xnor2PORTMAP(a(0),b(0),s(0));u1:xnor2PORTMAP(a(1),b(1),s(1));u2:xnor2PORTMAP(a(2),b(2),s(2));u3:xnor2PORTMAP(a(3),b(3),s(3));u4:and4PORTMAP(s(0),s(1),s(2),s(3),y);ENDstructural;元件标号元件型号元件例化语句YANGTZENORMALUNIVERSITY4位等值比较器ys0b0a0b1a1b2a2b3a3s1s2s3abu0u1u3u2u4--配置:CONFIGURATIONcomp4_conOFcomp4ISFORbehaviorENDFOR;ENDcomp4_con;YANGTZENORMALUNIVERSITY2.1.1.4包集合(PACKAGE)包集合的语法结构如下:PACKAGE包集合名IS[包集合说明];包头END包集合名;PACKAGEBODY包集合名IS[包体内容];包体ENDBODY;包集合是一种使其中的类型、元件、函数和其它说明对其它设计单元可见的设计单元。与之相反,构造体中的这些说明仅仅对其自身可见。包集合包括包头和包体两部分。包头用来声明包中的类型、元件、函数和子程序;而包体则用来存放说明中的函数和子程序。不含有子程序和函数的包集合不需要包体。YANGTZENORMALUNIVERSITY例6:描述三电平逻辑的包集合PACKAGElogicISTYPEthree_level_logicIS(’0’,’1’,’Z’);--三电平逻辑CONSTANTunknown_value:three_level_logic:=’0’;FUNCTIONinvert(input:three_level_logic)RETURNthree_level_logic;ENDlogic;PACKAGEBODYlogicISFUNCTIONinvert(input:hree_level_logic)RETURNhree_level_logicISBEGINCASEinputISWHEN’0’=RETURN’1’;WHEN’1’=RETURN’0’;WHEN’Z’=RETURN’Z’;ENDCASE;ENDinvert;ENDBODY;YANGTZENORMALUNIVERSITY2.1.1.5库(LIBRARY)库是用来放置可编译的设计单元的地方,通过其目录可查询和调用。VHDL中的库大致可归纳为5种:IEEE库、STD库、ASIC矢量库、WORK库和用户定义库。IEEE库。常用的资源库。IEEE库包含经过IEEE正式认可的STD_LOGIC_1164包集合和某些公司提供的一些包集合,如STD_LOGIC_ARITH(算术运算库)、STD_LOGIC_UNSIGNED等。STD库。VHDL的标准库。库中存放有称为“standard”的标准包集合,其中定义了多种常用的数据类型,均不加说明可直接引用。STD库中还包含有称为“textio”的包集合。在使用“textio”包集合中的数据时,应先说明库和包集合名,然后才可使用该包集合中的数据。ASIC矢量库。在VHDL语言中,为了进行门级仿真,各公司可提供面向ASIC的逻辑门库。在该库中存放着与逻辑门一一对应的实体。为了使用面向ASIC的库,对库进行说明是必要的。YANGTZENORMALUNIVERSITYWORK库。WORK库是现行作业库。设计者所描述的VHDL语句不需要任何说明,将都存放在WORK库中。WORK库对所有设计都是隐含可见的,因此在使用该库时无需进行任何说明。用户定义库。用户定义库简称用户库,是由用户自己创建并定义的库。设计者可以把自己经常使用的非标准(一般是自己开发的)包集合和实体等汇集成在一起定义成一个库,作为对VHDL标准库的补充。用户定义库在使用时同样要首先进行说明。VITAL库。YANGTZENORMALUNIVERSITY库说明语句的语法形式为:LIBRARY库名;--说明使用什么库USE包集合名;--说明使用库中哪一个包集合及包集合中的项目(如过程名、函数名等)包集合名最多为三个层次,即:library-name.packge-name.item-nameLIBRARY语句和USE语句的作用范围:仅限于紧跟起后的实体和结构体。YANGTZENORMALUNIVERSITY2.1.2VHDL结构体的基本子结构在规模较大的电路设计中,整个电路将被分成若干个相对独立的模块来描述。这样,一个结构体可以用几个子结构,

1 / 157
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功