您好,欢迎访问三七文档
EDA课程综述---------------VHDL语句设计结构与要素课程名称在系统编程技术任课教师谭敏班级09电气(2)班姓名李梦梦学号0905072042日期20125月26号前言在计算机技术的推动下,20世纪末,电子技术获得了飞速的发展,而电子技术发展的根基是微电子技术的进步,它表现在大规模集成电路加工技术,即半导体工艺技术的发展上。表征半导体工艺水平的线宽已经达到60nm以下,并还在不断地缩小,在硅片单位面积上集成了更多的晶体管,集成电路设计在不断地向超大规模、极低功耗和超高速的方向发展;专用集成电路ASIC的成本不断降低,在功能上,现代的集成电路已能实现SOC的功能。与此同时随着电子技术的发展,与之相对应的语言也应运而生,这便是VHDL语言正文VHDL的英文全名是Very-High-SpeedIntegratedCircuitHardwareDescriptionLanguage,主要用于描述数字结构的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。归纳起来,VHDL语言主要具有以下优点:(1)VHDL语言功能强大,设计方式多样(2)VHDL语言具有强大的硬件描述能力(3)VHDL语言具有很强的移植能力(4)VHDL语言的设计描述与器件无关(5)VHDL语言程序易于共享和复用VHDL语言采用基于库(library)的设计方法。在设计过程中,设计人员可以建立各种可再次利用的模块,一个大规模的硬件电路的设计不可能从门级电路开始一步步地进行设计,而是一些模块的累加。这些模块可以预先设计或者使用以前设计中的存档模块,将这些模块存放在库中,就可以在以后的设计中进行复用。由于VHDL语言是一种描述、模拟、综合、优化和布线的标准硬件描述语言,因此它可以使设计成果在设计人员之间方便地进行交流和共享,从而减小硬件电路设计的工作量,缩短开发周期。一个完整的VHDL语言程序通常包含:实体(Entity)、构造体(Architecture)、配置(Configuration)、包集合(Package)、库(Library)5个部分。前四种是可分别编译的源设计单元。实体:用于描述所设计的系统的外部接口信号;构造体(或称结构体):用于描述系统内部的结构和行为;包集合:存放各设计模块都能共享的数据类型、常数和子程序等;配置:用于从库中选取所需单元来组成系统设计的不同版本;库:存放已经编译的实体、构造体、包集合和配置。库可由用户生成或由ASIC芯片制造商提供。1、实体语句结构:实体说明单元的一般语句结构:ENTITY实体名IS[GENERIC(类属表);][PORT(端口表);]ENDENTITY实体名;2、PORT(端口)说明:由于PORT说明语句是对一个设计实体界面的说明及对设计实体与外部电路的接口通道的说明,其中包括对每一接口的输入输出模式和数据类型的定义。其格式如下:PORT(端口名:端口模式数据类型;{端口名:端口模式数据类型});其中的端口名是设计者为实体的每一个对外通道所取的名字,端口模式是指这些通道上的数据流动方式。数据类型是指端口上流动的数据的表达格式或取值类型,VHDL要求只有相同数据类型的端口信号和操作数才能相互作用3、结构体:结构体的组成部分是:•对数据类型、常数、信号、子程序和元件等元素的说明部分。•描述实体逻辑行为的、以各种不同的描述风格表达的功能描述语句。•以元件例化语句为特征的外部元件(设计实体)端口间的连接。在一个结构体中说明和定义的数据类型、常数、元件、函数和过程只能用于这个结构体中。如果希望这些定义也能用于其它的实体或结构体中,需要将其作为程序包来处理。结构体的一般语言格式:ARCHITECTURE结构体名OF实体名IS[说明语句]BEGIN[功能描述语句]ENDARCHITECTURE结构体名;结构体中包含四类功能描述语句:进程语句:定义顺序语句模块。信号赋值语句:将设计实体内的处理结果向定义的信号或界面端口进行赋值。子程序调用语句:用以调用过程或函数,并将获得的结果赋值于信号。元件例化语句:对其它的设计实体作元件调用说明,并将此元件的端口与其它的元件、信号或高层次实体的界面端口进行连接。4、子程序(SUBPROGRAM)子程序是一个VHDL程序模块,它只能使用顺序语句,其应用目的是能更有效地完成重复性工作,使用方式只能通过子程序调用及与子程序的界面端口进行通信。子程序可在程序包、结构体和进程中定义(一般放在程序包中)。VHDL子程序允许有许多重名的子程序,但这些子程序的参数类型及返回值数据类型是不同的。子程序有两种类型,即过程和函数。5、过程(PROCEDURE)1、过程的语句格式是:PROCEDURE过程名(参数表)--过程首PROCEDURE过程名(参数表)IS[说明部分]BIGIN--过程体,可独立存在和使用顺序语句;ENDPROCEDURE过程名;2、过程首:不是必须的,在进程或结构体中不必定义,在程序包中必须定义。过程首由过程名和参数表组成。参数表可以对常数、变量和信号三类数据对象目标作出说明,并用关键词IN、OUT和INOUT定义这些参数的工作模式,即信息的流向(如果没有指定模式,则默认为IN)。以下是三个过程首的定义示例:PROCEDUREpro1(VARIABLEa,b:INOUTREAL);PROCEDUREpro2(CONSTANTa1:ININTEGER;VARIABLEb1:OUTINTEGER);PROCEDUREpro3(SIGNALsig:INOUTBIT);3、过程体过程体是由顺序语句组成,过程的调用即启动了对过程体的顺序的执行。与函数一样,过程体中的说明部分只是局部的,其中的各种定义只能适用于过程体内部。过程体的顺序语句部分可以包含任何顺序执行的语句。在不同的调用环境中,可以有两种不同的语句方式对过程进行调用,即顺序语句方式或并行语句方式。对于前者,在一般的顺序语句自然执行过程中,一个过程被执行,则属于顺序语句方式(因为这是它只相当于一条顺序语句的执行);对于后者,一个过程相当于一个小的进程,当这个过程处于并行语句环境中时,其过程体定义的任一IN或INOUT的目标参量(即数据对象:变量、常数、信号)发生改变时,则启动过程的调用,这时的调用是属于并行语句方式的。【例】PROCEDUREprg1(VARIABLEvalue:INOUTBIT_VECTOR(0TO7))ISBEGINCASEvalueISWHEN0000=value:0101;WHEN0101=value:0000;WHENOTHERS=value:1111;ENDCASE;ENDPROCEDUREprg1;这个过程对具有双向模式变量的值value作了一个数据转换运算。6、重载过程(OVERLOADEDPROCEDURE)两个或两个以上有相同的过程名和互不相同的参数数量及数据类型的过程称为重载过程。类似于重载函数,重载过程也是靠参量类型来辨别究竟调用哪一个过程。过程结构中的语句是顺序执行的,过程的调用是将所定义的过程名作为一条语句来执行(而函数的调用是将所定义的函数作为语句中的一个因子,如一个操作符或一个赋值数据对象或信号等)。7、VHDL库、程序包和配置库:库是存放已经编译的实体、构造体、包集合和配置的数据的集合。大致分为IEEE库、STD库、WORK库、VITAL库、用户定义库:在VHDL语言中,库的说明语句总是放在实体单元前面,VHDL允许在一个设计实体中同时打开多个不同的库,但库之间必须相互独立。库语句一般必须与USE语句同用。库语句的关键词LIBRARY指明所使用的库名;USE语句指明库中的程序包。程序包:已在设计实体中定义的数据类型、子程序或数据对象对于其它设计实体是不可用的(或者说是不可见的),为了使已定义的常数、数据类型、元件调用说明以及子程序能被更多其它的设计实体方便地访问和共享,可以将它们收集在一个VHDL程序包中。(多个程序包可以并入一个VHDL库中)。它对于大系统开发、多个或多组开发人员同步工作显得尤为重要。配置:配置主要为顶层设计实体指定结构体,或为参与例化的元件实体指定所希望的结构体,以层次方式来对元件例化作结构配置。配置语句的一般格式如下:CONFIGURATION配置名OF实体名IS配置说明END配置名;8、VHDL操作符:与传统的程序设计语言一样,VHDL各种表达式中的基本元素也是由不同类型的运算符相连而成的。这里所说的基本元素称为操作数(Operands),运算符称为操作符(Operators)。操作数和操作符相结合就成了描述VHDL算术或逻辑运算的表达式;其中,操作数是各种运算的对象,而操作符规定运算的方式。在VHDL中有四类操作符,即逻辑操作符、关系操作符、算术操作符和符号操作符,此外还有重载操作符。前三类操作符是完成逻辑和算术运算的最基本的操作符单元,重载操作符是对基本操作符作了重新定义的函数型操作符。总结:VHDL语言是电子系统硬件行为描述,结构描述,数据流描述的语言.。其能够成为标准化的硬件描述语言并获得广泛应用,它自身必然具有很多其他硬件描述语言所不具备的优点。在学习EDA技术的过程中,第一次接触了这种语言,至课程结束之时其实也只懂了些皮毛,离自己随心所欲的设计想要的东西还相差甚远。通过课本与网上的资料,我对VHDL语言做了下系统的概括,虽然技术层面的含量并不高,但让我仔仔细细地又看了下课本上的相关内容,遗补了一些内容。和学习C语言一样VHDL语言也有着极强的逻辑性,没有长期的磨合无法做到驾轻就熟,但是只要自己想要不断进步,随心写出程序怕也不是难事。参考文献:王金明,《数字系统设计与VerilogHDL》(第2版),电子工业出版社潘松黄继业,《EDA技术实用教程》(第二版),科学出版社
本文标题:eda课程综述
链接地址:https://www.777doc.com/doc-2911087 .html