VHDL概述与基本结构.ppt_第1页
VHDL概述与基本结构.ppt_第2页
VHDL概述与基本结构.ppt_第3页
VHDL概述与基本结构.ppt_第4页
VHDL概述与基本结构.ppt_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章VHDL基础,4.1VHDL概述,1、什么是VHDL、有何优点2、怎样用VHDL描述数字电路3、学习VHDL应了解那些知识,1、WhatisVHDL,VeryhighspeedintegratedHardwareDescriptionLanguage(VHDL)isanindustrystandardhardwaredescriptionlanguagedescriptionthehardwareinlanguageinsteadofgraphiceasytomodifyeasytomaintainverygoodforcomplexcombinationallogicBCDto7Segmentconverteraddressdecodingstatemachinemorethanyouwant.,WhatVHDLStandardmeans?,TheVHDLisusedtodescribeInputsportOutputsportbehaviorandfunctionsofthecircuits,ThelanguageisdefinedbytwosuccessivestandardsIEEEStd1076-1987(calledVHDL1987)IEEEStd1076-1993(calledVHDL1993),AlteraVHDL(MaxPlusII综合器),AlteraMax+PlusIIsupportbothVHDL1987and1993Max+PlusIIonlysupportSUBSETofthetwoIEEEstandardDetailofthesupportcanbereferredtoAlteraMax+PlusIIVHDLhandbookonpage89Section3,WhyIuseVHDLinsteadofGraphic,EasytoModifyItismorepowerfulthanGraphicVHDLisaportablelanguagebecauseisdeviceindependentthesamecodecanbeappliedtoDevicemanufacturedbyCompanyAorCompanyB,GraphicvsVHDL,Graphiciswhatyoudrawiswhatyouget“tellmewhathardwareyouwantandIwillgiveittoyou”VHDLiswhatyouwriteiswhatfunctionalyouget“tellmehowyourcircuitshouldbehaveandtheVHDLcompilerwillgiveyouthehardwarethatdoesthejob”butthedesignercannotcontrolhowthecircuitimplement,VHDLSynthesisvsotherHDLsSynthesis,VHDL“tellmehowyourcircuitshouldbehaveandIwillgiveyouhardwarethatdoesthejob”ABEL,PALASM,AHDL“tellmewhathardwareyouwantandIwillgiveittoyou”,VHDL在电子系统设计中的应用,电子系统的设计模块,VHDL在电子系统设计中的应用,电子系统设计的描述等级1、行为级2、RTL级(Registertransferlevel)3、逻辑门级4、版图级用VHDL可以描述以上四个等级,VHDL在电子系统设计中的应用,系统设计的描述等级-行为级,VHDL在电子系统设计中的应用,系统设计的描述等级-RTL级,VHDL在电子系统设计中的应用,系统设计的描述等级-逻辑门级,VHDL在电子系统设计中的应用,系统设计的描述等级-制版级,2、怎样用VHDL描述数字电路,LIBRARYieee;USEieee.std_logic_1164.all;ENTITYmux21ISPORT(a,b:INSTD_LOGIC;S:INSTD_LOGICY:OUTSTD_LOGIC);ENDENTITYMUX21;ARCHITECTUREbehavorOFmux21ISBEGINy=aWHENs=0ELSEb;ENDARCHITECTUREbehavor;,IEEE库使用说明,二选一数据选择器的端口说明实体,内部逻辑关系说明结构体,示例一二选一数据选择器(组合电路),ENTITYmux21ISPORT(a,b:INBIT;s:INBIT;y:OUTBIT);ENDENTITYmux21;ARCHITECTUREbehavorOFmux21ISBEGINy=aWHENs=0ELSEb;ENDARCHITECTUREbehavor;,实体,结构体,mux21功能时序波形,示例二锁存器(时序电路),LIBRARYieee;USEieee.std_logic_1164.all;ENTITYlatch1ISPORT(D:INSTD_LOGIC;CLK:INSTD_LOGIC;Q:OUTSTD_LOGIC);ENDENTITYlatch1;ARCHITECTUREbehavorOFlatch1ISSIGNALsig_save:STD_LOGIC;BEGINPROCESS(D,CLK)BEGINIFCLK=1THENsig_save=D;ENDIF;Q=sig_save;ENDPROCESS;ENDARCHITECTUREbehavor;,IEEE库使用说明,锁存器的端口说明实体,信号说明,进程描述说明,锁存器的时序波形,VHDL程序设计的基本结构,库、程序包(LIBRARY),实体(ENTITY),结构体(ARCHTECTURE),进程(PROCESS)或其它并行语句,配置(CONFIGURATION),3、学习VHDL应了解那些知识,WhatisCombinatorialLogic(组合逻辑)WhatisSequentialLogic(时序逻辑)WhatisConcurrentStatement(并行语句)WhatisProcessStatement(顺序语句),4.2VHDL的基本结构,4.2.1实体4.2.2结构体4.2.3库4.2.4程序包4.2.5配置,VHDL程序设计基本结构,VHDL描述的对象称为实体(ENTITY),实体代表什么几乎没有限制。它可以将一个复杂的系统抽象成一个实体,可以代表像CPU那样复杂的电路,也可以代表一个电路板、一个芯片或一个门电路。如果设计时,采用自顶向下的层次化设计和划分模块,则各层的设计模块都可以作为实体。高层次实体可以调用低层次的设计实体。,VHDL设计的基本单元就是VHDL的一个基本设计实体(DesignEntity)。一个基本设计实体由实体说明(EntityDeclaration)和结构体(ArchitectureBody)两部分构成。如果把实体说明看作为一个黑盒子,则知道黑盒子的输入和输出,但不知道黑盒子里面的内容。黑盒子里面的内容由结构体来描述。例如要描述一个逻辑元件A,其基本设计实体如图4.1所示。,图4.1VHDL的一个基本设计实体,结构体包含了并发描述语句(ConcurrentStatement),语句执行的顺序与并发语句出现的先后次序无关。顺序描述语句只能够出现在进程或子程序中,顺序描述语句像一般的高级语言一样,按语句出现的次序执行。一个基本单元只有一个设计实体,而结构体的个数没有限制,如图4.2所示。,图4.2实体中的结构体,实体是一个设计实体的表层设计单元,其功能是对这个设计实体与外部电路进行接口描述。它规定了设计单元的输入/输出接口信号或引脚,是设计实体经封装后对外的一个通信界面。,4.2.1实体(ENTITY),1.实体结构根据IEEE标准,一个基本单元实体结构定义如下:ENTITY实体名IS【GENERIC(类属表);】【PORT(端口表);】END【ENTITY】实体名;,2、类属(GENERIC)说明,类属说明一般格式如下:GENERIC(【constant】常数名:数据类型【:=设定值】;【constant】常数名:数据类型【:=设定值】;);例如:GENERIC(delay:TIME:=20us);-说明参数delay的值为20us在一个实体中定义的来自外部赋入类属的值可以在实体内部或与之相应的结构体中读到。对于同一个设计实体,可以通过GENERIC参数类属的说明,为它创建多个行为不同的逻辑结构。,【例4.1】ENTITYMCKISGENERIC(WIDTH:INTEGER:=16);PORT(ADD_BUS:OUTSTD_LOGIC_VECTOR(WIDTH-1DOWNTO0);.);在这里,GENERIC语句对实体MCK的作为地址总线的端口ADD_BUS的数据类型和宽度作了定义,即定义ADD_BUS为一个16位的位矢量。,3.端口说明,实体端口说明的一般书写格式如下:PORT(【SIGNAL】端口名:模式数据类型;【SIGNAL】端口名:模式数据类型);在实际中,端口描述中的数据类型主要有两类:位(BIT)和位矢量(BIT_VECTOR)。在电路图上,端口对应于器件符号的外部引脚。端口名作为外部引脚的名称,端口模式用来定义外部引脚的信号流向。,四种端口模式,(1)IN:输入,只读模式。该模式主要用于输入控制信号、地址、数据和时钟等。(2)OUT:输出,单向赋值模式。该模式主要用于输出控制信号、地址和数据等。(3)INOUT:双向模式。可以读或写,便于识别信号的用途、来源和去向。(4)BUFFER:缓冲模式,实际上是双向端口。可以读或写,也可以用于反馈,只能有一个驱动源。,IN,OUT,INOUT,BUFFER,VHDL对端口的读写总规则:只有在端口为IN、INOUT或BUFFER时,才能从该端口读数据;只有在端口为OUT、INOUT或BUFFER时,才能向该端口写数据。,结构体是用于描述设计实体的内部结构以及实体端口间的逻辑关系。结构体内部构造的描述层次和描述内容一般可以用图4.3来说明。一般地,一个完整的结构体由两个基本层次组成:对数据类型、常数、信号、子程序和元件等元素的说明部分。描述实体逻辑行为的,以各种不同的描述风格表达的功能描述语句。,4.2.2结构体(ARCHITECTURE),结构体将具体实现一个实体。每个实体可以有多个结构体,每个结构体对应着实体不同结构和算法实现方案,其间的各个结构体的地位是同等的,它们完整地实现了实体的行为,但同一结构体不能为不同的实体所拥有。结构体不能单独存在,它必须有一个界面说明,即一个实体。对于具有多个结构体的实体,必须用CONFIGURATION(配置)语句指明用于综合的结构体和用于仿真的结构体。,即在综合后的可映射于硬件电路的设计实体中,一个实体只对应一个结构体。在电路中,如果实体代表一个器件符号,则结构体描述了这个符号的内部行为。当把这个符号例化成一个实际的器件安装到电路上时,则需用配置语句为这个例化的器件指定一个结构体(即指定一种实现方案),或由编译器自动选一个结构体。,结构体的语句格式如下:ARCHITECTURE结构体名OF实体名IS说明语句;BEGIN功能描述语句;ENDARCHITECTURE结构体名;,2结构体说明语句结构体中的说明语句是对结构体的功能描述语句中将要用到的信号(SIGNAL)、数据类型(TYPE)、常数(CONSTANT)、元件(COMPONENT)、函数(FUNCTION)和过程(PROCEDURE)等加以说明的语句。3功能描述语句结构如图4.3所示的功能描述语句结构可以含有五种不同类型的、以并行方式工作的语句结构,而在每一语句结构的内部可能含有并行运行的逻辑描述语句或顺序运行的逻辑描述语句。,图4.3结构体构造图,各语句结构的基本组成和功能分别是:(1)块语句是由一系列并行执行语句构成的组合体,它的功能是将结构体中的并行语句组成一个或多个模块。(2)进程语句定义顺序语句模块,用以将从外部获得的信号值,或内部的运算数据向其他的信号进行赋值。(3)信号赋值语句将设计实体内的处理结果向定义的信号或界面端口进行赋值。(4)子程序调用语句用于调用一个已设计好的子程序。(5)元件例化语句对其他的设计实体作元件调用说明,并将此元件的端口与其他的元件、信号或高层次实体的界面端口进行连接。,库的作用与程序包类似,但级别高于程序包,其中存放着已经编译过的实体说明、结构体、配置说明、程序包说明和程序包体等,可以用作其他VHDL描述的资源而被引用。目前在VHDL语言中,常用的主要有以下几种库:IEEE、STD、WORK、VITAL库,4.2.3库(LIBRARY),IEEE库是VHDL设计中最常见的资源库IEEE标准的STD_LOGIC_1164,NUMERIC_BIT和NUMERIC_STD程序包和其它一些支持工业标准的程序包一般的Synopsys公司的STD_LOGIC_ARITH、STD_LOGIC_SIGNED和STD_LOGIC_UNSIGNED程序包最常用,也并入了IEEE库。IEEE库中的四个程序包STD_LOGIC_1164、STD_LOGIC_ARITH、STD_LOGIC_SIGNED和STD_LOGIC_UNSIGNED对于一般的设计已经足够,(1)IEEE库,(2)STD库是VHDL的标准库,含有称为STANDARD的标准程序包,其中定义了多种常用的数据类型,均不加说明便可直接引用。另一个程序包TEXTIO(文本文件输入/输出),则需经说明后方可使用。(3)WORK库是当前作业库,主要包含在当前的设计单元中定义的类型、函数等。,(4)VITAL库是除IEEE库外另一个广泛使用的资源库。VITAL库中的程序包都已经并到IEEE库中在FPGACPLD设计开发过程中,一般不需要VITAL库中的程序包。VHDL把设计库作为对多个项目进行组织和维护的手段。允许设计者在多个库中有选择地打开当前需要使用的库,未被打开的库则不能使用。WORK库和STD库总会被自动打开。,在VHDL设计中,库说明语句放在实体单元前面利用LIBRARY语句可以把库打开,以供后面的实体及其结构体引用。其语法形式为代码最前面的语句:LIBRARYIEEE;USEIEEESTD_LOGIC_1164ALL;关键词LIBRARY指明所使用的库名,USE语句指明库中的程序包每一个设计实体都必须有自己完整的库说明语句和USE语句,2.库的用法,第一种:USE库名程序包名项目名;作用:向本设计实体开放指定库中的特定程序包内所选定的项目。例如:USEIEEESTD_LOGIC_1164RISING_EDGE;表明向当前设计实体开放了STD_LOGIC_1164程序包中的RISING_EDGE函数。,使用USE语句常见的有两种格式:,第二种:USE库名程序包名ALL;作用:向本设计实体开放指定库中的特定程序包内所有的内容。例如:USEIEEESTD_LOGIC_1164ALL;表明打开IEEE库中的STD_LOGIC_1164程序包,并且程序包中所有的公共资源对后面的VHDL设计实体程序全部开放。关键词“ALL”代表程序包中所有资源。,使用USE语句常见的有两种格式:,USE语句一般应在LIBRARY语句后使用。其最后一个标识符可以是保留字ALL,其含义是:打开由前面各标识符共同指定的程序包说明中的所有说明或者库中的所有单元。但是应当注意:如果使用了多个带有保留字ALL的USE语句,则有可能出现被打开的对象之间“重名”的问题。因此,设计者应谨慎使用保留字ALL。,还需要注意的是,LIBRARY语句和USE语句的作用范围只限于紧跟其后的实体及其结构体。因此,如果一个程序中有一个以上的实体,则必须在每个实体的前面分别加上LIBRARY语句和USE语句,说明各实体及其结构体需要使用的库和程序包。,4.2.4程序包(PACKAGE),程序包,常数说明,VHDL数据类型说明,元件定义,子程序,数据类型、常量以及子程序可以在实体说明部分或结构体部分加以说明。但是,这样所定义的类型、常量及子程序等的作用范围限于对应的结构体中,在其他实体或结构体中无法引用这些定义。为了使一组类型说明、常量说明或子程序说明能被许多设计实体(及其结构体)所引用,VHDL提供了程序包结构。程序包由程序包说明和程序包体组成,用于存放各设计单元都能共享的数据类型、常数和子模块等,相当于C语言的H文件。,程序包的定义语句结构如下:PACKAGE程序包名IS程序包首说明-程序包首ENDPACKAGE程序包名;PACKAGEBODY程序包名IS程序包体及包体内说明-程序包体ENDPACKAGEBODY程序包名;,例4.2,PACKAGEbagIS-程序包首开始CONSTANTnum1:REAL:=3.1415926;-定义常数num1CONSTANTnum2:INTEGER;-定义常数num2FUNCTIONfun(a,b,c:REAL)RETURNREAL;-定义函数funCOMPONENTcomIS-定义元件comGENERIC(t1,t2:TIME:=3ns);-类属说明PORT(in1,in2:STD_LOGIC);-端口说明ENDCOMPONENTcom;ENDPACKAGEbag;-程序包首结束PACKAGEBODYbagIS-程序包体开始CONSTANTnum2:INTEGER:=5;FUNCTIONfun(a,b,c:REAL)RETURNREALISBEGINRETURN(a+b+c)/3.0;ENDFUNCTIONfun;ENDPACKAGEBODYbag;-程序包体结束,LIBRARYIEEE;-库使用说明USEIEEESTD_LOGIC_1164ALL;,程序包中说明的标识符不是自动对其它设计单

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论