《VHDL概述与基本结构.ppt》由会员分享,可在线阅读,更多相关《VHDL概述与基本结构.ppt(60页珍藏版)》请在三一办公上搜索。
1、第4章 VHDL基础,4.1 VHDL概述,1、什么是VHDL、有何优点2、怎样用VHDL描述数字电路3、学习VHDL应了解那些知识,1、What is VHDL,Very high speed integrated Hardware Description Language(VHDL)is an industry standard hardware description languagedescription the hardware in language instead of graphiceasy to modifyeasy to maintainvery good forcompl
2、ex combinational logic BCD to 7 Segment converteraddress decodingstate machinemore than you want.,What VHDL Standard means?,The VHDL is used to describeInputs portOutputs portbehavior and functions of the circuits,The language is defined by two successive standards IEEE Std 1076-1987(called VHDL 198
3、7)IEEE Std 1076-1993(called VHDL 1993),Altera VHDL(MaxPlus II 综合器),Altera Max+Plus II support both VHDL 1987 and 1993Max+Plus II only support SUBSET of the two IEEE standardDetail of the support can be referred to Altera Max+Plus II VHDL handbook on page 89 Section 3,Why I use VHDL instead of Graphi
4、c,Easy to ModifyIt is more powerful than GraphicVHDL is a portable language becauseis device independentthe same code can be applied to Device manufactured by Company A or Company B,Graphic vs VHDL,Graphic is what you draw is what you get“tell me what hardware you want and I will give it to you”VHDL
5、 is what you write is what functional you get“tell me how your circuit should behave and the VHDL compiler will give you the hardware that does the job”but the designer can not control how the circuit implement,VHDL Synthesis vs other HDLs Synthesis,VHDL“tell me how your circuit should behave and I
6、will give you hardware that does the job”ABEL,PALASM,AHDL“tell me what hardware you want and I will give it to you”,VHDL在电子系统设计中的应用,电子系统的设计模块,VHDL在电子系统设计中的应用,电子系统设计的描述等级1、行为级2、RTL级(Register transfer level)3、逻辑门级4、版图级用VHDL可以描述以上四个等级,VHDL在电子系统设计中的应用,系统设计的描述等级-行为级,VHDL在电子系统设计中的应用,系统设计的描述等级-RTL级,VHDL在电子
7、系统设计中的应用,系统设计的描述等级-逻辑门级,VHDL在电子系统设计中的应用,系统设计的描述等级-制版级,2、怎样用VHDL描述数字电路,LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY mux21 ISPORT(a,b:IN STD_LOGIC;S:IN STD_LOGICY:OUT STD_LOGIC);END ENTITY MUX21;ARCHITECTURE behavor OF mux21 ISBEGIN y=a WHEN s=0 ELSE b;END ARCHITECTURE behavor;,IEEE库使用说明,二选一数据选择器的端
8、口说明实 体,内部逻辑关系说明结构体,示例一 二选一数据选择器(组合电路),ENTITY mux21 IS PORT(a,b:IN BIT;s:IN BIT;y:OUT BIT);END ENTITY mux21;ARCHITECTURE behavor OF mux21 IS BEGIN y=a WHEN s=0 ELSE b;END ARCHITECTURE behavor;,实体,结构体,mux21功能时序波形,示例二 锁存器(时序电路),LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY latch1 ISPORT(D:IN STD_LOGI
9、C;CLK:IN STD_LOGIC;Q:OUT STD_LOGIC);END ENTITY latch1;ARCHITECTURE behavor OF latch1 ISSIGNAL sig_save:STD_LOGIC;BEGIN PROCESS(D,CLK)BEGINIF CLK=1 THEN sig_save=D;END IF;Q=sig_save;END PROCESS;END ARCHITECTURE behavor;,IEEE库使用说明,锁存器的端口说明实 体,信号说明,进程描述说明,锁存器的时序波形,VHDL程序设计的基本结构,库、程序包(LIBRARY),实体(ENTITY
10、),结构体(ARCHTECTURE),进程(PROCESS)或其它并行语句,配置(CONFIGURATION),3、学习VHDL应了解那些知识,What is Combinatorial Logic(组合逻辑)What is Sequential Logic(时序逻辑)What is Concurrent Statement(并行语句)What is Process Statement(顺序语句),4.2 VHDL的基本结构,4.2.1 实体4.2.2 结构体4.2.3 库4.2.4 程序包4.2.5 配置,VHDL程序设计基本结构,VHDL描述的对象称为实体(ENTITY),实体代表什么几乎
11、没有限制。它可以将一个复杂的系统抽象成一个实体,可以代表像CPU那样复杂的电路,也可以代表一个电路板、一个芯片或一个门电路。如果设计时,采用自顶向下的层次化设计和划分模块,则各层的设计模块都可以作为实体。高层次实体可以调用低层次的设计实体。,VHDL设计的基本单元就是VHDL的一个基本设计实体(Design Entity)。一个基本设计实体由实体说明(Entity Declaration)和结构体(Architecture Body)两部分构成。如果把实体说明看作为一个黑盒子,则知道黑盒子的输入和输出,但不知道黑盒子里面的内容。黑盒子里面的内容由结构体来描述。例如要描述一个逻辑元件A,其基本设
12、计实体如图4.1所示。,图4.1 VHDL的一个基本设计实体,结构体包含了并发描述语句(Concurrent Statement),语句执行的顺序与并发语句出现的先后次序无关。顺序描述语句只能够出现在进程或子程序中,顺序描述语句像一般的高级语言一样,按语句出现的次序执行。一个基本单元只有一个设计实体,而结构体的个数没有限制,如图4.2所示。,图4.2 实体中的结构体,实体是一个设计实体的表层设计单元,其功能是对这个设计实体与外部电路进行接口描述。它规定了设计单元的输入/输出接口信号或引脚,是设计实体经封装后对外的一个通信界面。,4.2.1 实体(ENTITY),1.实体结构根据IEEE标准,一
13、个基本单元实体结构定义如下:ENTITY 实体名 IS【GENERIC(类属表);】【PORT(端口表);】END【ENTITY】实体名;,2、类属(GENERIC)说明,类属说明一般格式如下:GENERIC(【constant】常数名:数据类型【:=设定值】;【constant】常数名:数据类型【:=设定值】;);例如:GENERIC(delay:TIME:=20us);-说明参数delay的值为20us 在一个实体中定义的来自外部赋入类属的值可以在实体内部或与之相应的结构体中读到。对于同一个设计实体,可以通过GENERIC参数类属的说明,为它创建多个行为不同的逻辑结构。,【例4.1】ENT
14、ITY MCK IS GENERIC(WIDTH:INTEGER:=16);PORT(ADD_BUS:OUT STD_LOGIC_VECTOR(WIDTH-1 DOWNTO 0);.);在这里,GENERIC语句对实体MCK的作为地址总线的端口ADD_BUS的数据类型和宽度作了定义,即定义ADD_BUS为一个16位的位矢量。,3.端口说明,实体端口说明的一般书写格式如下:PORT(【SIGNAL】端口名:模式 数据类型;【SIGNAL】端口名:模式 数据类型);在实际中,端口描述中的数据类型主要有两类:位(BIT)和位矢量(BIT_VECTOR)。在电路图上,端口对应于器件符号的外部引脚。端口
15、名作为外部引脚的名称,端口模式用来定义外部引脚的信号流向。,四种端口模式,(1)IN:输入,只读模式。该模式主要用于输入控制信号、地址、数据和时钟等。(2)OUT:输出,单向赋值模式。该模式主要用于输出控制信号、地址和数据等。(3)INOUT:双向模式。可以读或写,便于识别信号的用途、来源和去向。(4)BUFFER:缓冲模式,实际上是双向端口。可以读或写,也可以用于反馈,只能有一个驱动源。,IN,OUT,INOUT,BUFFER,VHDL对端口的读写总规则:只有在端口为IN、INOUT 或BUFFER时,才能从该端口读数据;只有在端口为OUT、INOUT或BUFFER时,才能向该端口写数据。,
16、结构体是用于描述设计实体的内部结构以及实体端口间的逻辑关系。结构体内部构造的描述层次和描述内容一般可以用图4.3来说明。一般地,一个完整的结构体由两个基本层次组成:对数据类型、常数、信号、子程序和元件等元素的说明部分。描述实体逻辑行为的,以各种不同的描述风格表达的功能描述语句。,4.2.2 结构体(ARCHITECTURE),结构体将具体实现一个实体。每个实体可以有多个结构体,每个结构体对应着实体不同结构和算法实现方案,其间的各个结构体的地位是同等的,它们完整地实现了实体的行为,但同一结构体不能为不同的实体所拥有。结构体不能单独存在,它必须有一个界面说明,即一个实体。对于具有多个结构体的实体,
17、必须用CONFIGURATION(配置)语句指明用于综合的结构体和用于仿真的结构体。,即在综合后的可映射于硬件电路的设计实体中,一个实体只对应一个结构体。在电路中,如果实体代表一个器件符号,则结构体描述了这个符号的内部行为。当把这个符号例化成一个实际的器件安装到电路上时,则需用配置语句为这个例化的器件指定一个结构体(即指定一种实现方案),或由编译器自动选一个结构体。,结构体的语句格式如下:ARCHITECTURE 结构体名 OF 实体名 IS 说明语句;BEGIN 功能描述语句;END ARCHITECTURE 结构体名;,2结构体说明语句 结构体中的说明语句是对结构体的功能描述语句中将要用到
18、的信号(SIGNAL)、数据类型(TYPE)、常数(CONSTANT)、元件(COMPONENT)、函数(FUNCTION)和过程(PROCEDURE)等加以说明的语句。3功能描述语句结构 如图4.3所示的功能描述语句结构可以含有五种不同类型的、以并行方式工作的语句结构,而在每一语句结构的内部可能含有并行运行的逻辑描述语句或顺序运行的逻辑描述语句。,图4.3 结构体构造图,各语句结构的基本组成和功能分别是:(1)块语句是由一系列并行执行语句构成的组合体,它的功能是将结构体中的并行语句组成一个或多个模块。(2)进程语句定义顺序语句模块,用以将从外部获得的信号值,或内部的运算数据向其他的信号进行赋
19、值。(3)信号赋值语句将设计实体内的处理结果向定义的信号或界面端口进行赋值。(4)子程序调用语句用于调用一个已设计好的子程序。(5)元件例化语句对其他的设计实体作元件调用说明,并将此元件的端口与其他的元件、信号或高层次实体的界面端口进行连接。,库的作用与程序包类似,但级别高于程序包,其中存放着已经编译过的实体说明、结构体、配置说明、程序包说明和程序包体等,可以用作其他VHDL描述的资源而被引用。目前在VHDL语言中,常用的主要有以下几种库:IEEE、STD、WORK、VITAL库,4.2.3 库(LIBRARY),IEEE库是VHDL设计中最常见的资源库 IEEE标准的STD_LOGIC_11
20、64,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的标准程序包,其中定义了多种常用的数据类型,均不加说明便可直接引用。另一个程序包TEXT
21、IO(文本文件输入/输出),则需经说明后方可使用。(3)WORK库 是当前作业库,主要包含在当前的设计单元中定义的类型、函数等。,(4)VITAL库是除IEEE库外另一个广泛使用的资源库。VITAL库中的程序包都已经并到IEEE库中在FPGACPLD设计开发过程中,一般不需要VITAL库中的程序包。VHDL把设计库作为对多个项目进行组织和维护的手段。允许设计者在多个库中有选择地打开当前需要使用的库,未被打开的库则不能使用。WORK库和STD库总会被自动打开。,在VHDL设计中,库说明语句放在实体单元前面利用LIBRARY语句可以把库打开,以供后面的实体及其结构体引用。其语法形式为代码最前面的语
22、句:LIBRARY IEEE;USE IEEESTD_LOGIC_1164ALL;关键词LIBRARY指明所使用的库名,USE语句指明库中的程序包 每一个设计实体都必须有自己完整的库说明语句和USE语句,2.库的用法,第一种:USE 库名程序包名项目名;作用:向本设计实体开放指定库中的特定程序包内所选定的项目。例如:USE IEEESTD_LOGIC_1164RISING_EDGE;表明向当前设计实体开放了STD_LOGIC_1164程序包中的RISING_EDGE函数。,使用USE语句常见的有两种格式:,第二种:USE 库名程序包名ALL;作用:向本设计实体开放指定库中的特定程序包内所有的内
23、容。例如:USE IEEESTD_LOGIC_1164ALL;表明打开IEEE库中的STD_LOGIC_1164程序包,并且程序包中所有的公共资源对后面的VHDL设计实体程序全部开放。关键词“ALL”代表程序包中所有资源。,使用USE语句常见的有两种格式:,USE语句一般应在LIBRARY语句后使用。其最后一个标识符可以是保留字ALL,其含义是:打开由前面各标识符共同指定的程序包说明中的所有说明或者库中的所有单元。但是应当注意:如果使用了多个带有保留字ALL的USE语句,则有可能出现被打开的对象之间“重名”的问题。因此,设计者应谨慎使用保留字ALL。,还需要注意的是,LIBRARY语句和USE
24、语句的作用范围只限于紧跟其后的实体及其结构体。因此,如果一个程序中有一个以上的实体,则必须在每个实体的前面分别加上LIBRARY语句和USE语句,说明各实体及其结构体需要使用的库和程序包。,4.2.4 程序包(PACKAGE),程序包,常数说明,VHDL数据类型说明,元件定义,子程序,数据类型、常量以及子程序可以在实体说明部分或结构体部分加以说明。但是,这样所定义的类型、常量及子程序等的作用范围限于对应的结构体中,在其他实体或结构体中无法引用这些定义。为了使一组类型说明、常量说明或子程序说明能被许多设计实体(及其结构体)所引用,VHDL提供了程序包结构。程序包由程序包说明和程序包体组成,用于存
25、放各设计单元都能共享的数据类型、常数和子模块等,相当于C语言的H文件。,程序包的定义语句结构如下:PACKAGE 程序包名 IS 程序包首说明-程序包首END PACKAGE程序包名;PACKAGE BODY 程序包名 IS 程序包体及包体内说明-程序包体 END PACKAGE BODY程序包名;,例4.2,PACKAGE bag IS-程序包首开始 CONSTANT num1:REAL:=3.1415926;-定义常数num1 CONSTANT num2:INTEGER;-定义常数num2 FUNCTION fun(a,b,c:REAL)RETURN REAL;-定义函数fun COMPO
26、NENTcom IS-定义元件com GENERIC(t1,t2:TIME:=3 ns);-类属说明 PORT(in1,in2:STD_LOGIC);-端口说明 END COMPONENTcom;END PACKAGE bag;-程序包首结束PACKAGE BODY bag IS-程序包体开始 CONSTANT num2:INTEGER:=5;FUNCTION fun(a,b,c:REAL)RETURN REAL IS BEGIN RETURN(a+b+c)/3.0;END FUNCTION fun;END PACKAGE BODY bag;-程序包体结束,LIBRARY IEEE;-库使用说
27、明USE IEEESTD_LOGIC_1164ALL;,程序包中说明的标识符不是自动对其它设计单元可见,如果要使用程序包中的所有定义,可用USE语句。具体格式如下:USE 程序包名标识符名;USE程序包名ALL;要使用上例中的程序包中的所有定义,如下所示:LIBRARY WORK;USE WORKbagALL;WORK库是默认打开的,所以可省去LIBRARY WORK语句,只要加入相应的USE语句即可。,常用的预定义的程序包,STD_LOGIC_1164程序包,STD_LOGIC_ARITH程序包,STD_LOGIC_UNSIGNED和STD_LOGIC_SIGNED程序包,STANDARD和
28、TEXTIO程序包,在实际设计中常需要对多个设计方案进行对比和选择。这时,便需要在设计文件中增加配置部分,利用配置从多个结构体中每次选择一个,对实体进行说明。比较各次仿真的结果便可以选出性能最佳的结构体。,4.2.5 配置,配置语句的一般格式如下:CONFIGURATION 配置名 OF 实体名 IS FOR 配置说明 END FOR;END配置名;,例4.3LIBRARY IEEE;USE IEEESTD_LOGIC_1164ALL;ENTITY and1 IS PORT(x:IN STD _LOGIC;y:IN STD_LOGIC;z:OUT STD_LOGIC);END ENTITY a
29、nd1;ARCHITECTURE one OF and1 ISBEGIN z=x AND y;END ARCHITECTURE one;,ARCHITECTURE two OF and1 ISBEGIN z=0 WHEN(x=0)AND(y=0)ELSE0 WHEN(x=0)AND(y=1)ELSE0 WHEN(x=1)AND(y=0)ELSE1 WHEN(x=1)AND(y=1)ELSEEND ARCHITECTURE two;CONFIGURATION er OF and1 IS FOR two END FOR;END er;CONFIGURATION yi OF and1 IS FOR one END FOR;END yi;,VHDL中的结构关系,结构关系,