《VHDL编程基础》PPT课件.ppt
《《VHDL编程基础》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《VHDL编程基础》PPT课件.ppt(67页珍藏版)》请在三一办公上搜索。
1、VHDL 编 程 基 础,目 录,3.1 概述 3.2 VHDL设计实体的基本结构 3.3 VHDL语言要素 3.4 VHDL顺序语句 3.5 VHDL并行语句 3.6 VHDL的库和程序包 3.7 VHDL设计流程,3.1 概 述 3.1.1 VHDL语言简介 VHDL是超高速集成电路硬件描述语言(Very High Speed Integrated Circuit Hardware Description language)。是标准化程度最高的硬件描述语言。目前流行的EDA工具软件全部支持VHDL,VHDL是现代电子设计师必须掌握的硬件设计计算机语言。(1)逻辑描述层次:一般的硬件描述语言
2、可以在三个层次上进行电路描述,层次由高到低依次可分为行为级、RTL级(寄存器转换级)和门电路级。VHDL语言是一种高级描述语言,适用于行为级和RTL级的描述,最适于描述电路的行为;(2)设计要求:VHDL进行电子系统设计时可以不了解电路的结构细节,设计者所做的工作较少;Verilog和ABEL语言进行电子系统设计时需了解电路的结构细节,设计者需做大量的工作。,3.1.3 VHDL程序设计约定为了便于程序的阅读和调试,对VHDL程序设计特作如下约定:(1)语句结构描述中方括号“”内的内容为可选内容。(2)对于VHDL的编译器和综合器来说,程序文字的大小写是不加区分的。(3)程序中的注释使用双横线
3、“-”。在VHDL程序的任何一行中,双横线“-”后的文字都不参加编译和综合。(4)为了便于程序的阅读与调试,书写和输入程序时,使用层次缩进格式,同一层次的对齐,低层次的较高层次的缩进两个字符。(5)考虑到MAX+plusII要求源程序文件的名字与实体名必须一致,因此为了使同一个VHDL源程序文件能适应各个EDA开发软件上的使用要求,建议各个源程序文件的命名均与其实体名一致。,3.2 VHDL设计实体的基本结构 通过VHDL描述一个二输入或门的实例,来说明VHDL的基本结构。例1 一个二输入或门的VHDL程序如下:LIBRARY IEEE;-IEEE库的使用说明USE IEEE.STD_LOGI
4、C_1164.ALL;-实体描述器件的输入、输出端口和数据类型用的程序包ENTITY OR2 IS-实体OR2的说明 PORT(A,B:STD_LOGIC;-端口声明,A、B是标准逻辑位类型的输入端口 C:OUT STD_LOGIC);-声明C是标准逻辑位类型的输出端口END ENTITY OR2;ARCHITECTURE ONE OF OR2 IS-实体OR2的结构体ONE 的说明 BEGIN C=A OR B;-二输入或门逻辑功能描述END ARCHITECTURE ONE;或门程序包含了VHDL的库、程序包、实体说明和结构体几个主要部分。语句C=A OR B为或门电路的逻辑描述,其他都作
5、为或门对外部端口的描述,设计实体定义了或门外部界面后,其他的设计就可以直接调用这个或门实体。,VHDL程序设计举例1设计思路 以全加器为例例2 全加器可以由两个1位的半加器构成。1位半加器的端口信号A 和B分别是2位相加的二进制输入信号,SO是相加和的输出信号,CO是进位输出信号,左边的门电路结构构成了右边的半加器H_ADDER。,图中,全加器 F_ADDER内部的功能结构是由3个逻辑器件构成的,即由两个半加器U1、U2和一个或门U3连接而成。,1 位全加器逻辑原理图,2.VHDL源程序1)或门的逻辑描述LIBRARY IEEE;-IEEE库的使用说明 USE IEEE.STD_LOGIC_1
6、164.ALL;-实体描述器件的输入、输出端口和数据类型用的程序包ENTITY or2 IS-实体or2的说明 PORT(a,b:IN STD_LOGIC;-端口声明,a、b是标准逻辑位类型的输入端口 c:OUT STD_LOGIC);-声明c是标准逻辑位类型的输出端口END ENTITY or2;ARCHITECTURE art1 OF or2 IS-实体or2的结构体art1的说明 BEGIN c=a OR b;END ARCHITECTURE art1;,2)半加器的逻辑描述 LIBRARY IEEE;-IEEE库的使用说明 USE IEEE.STD_LOGIC_1164.ALL;ENT
7、ITY h_adder IS-实体h_adder的说明 PORT(a,b:IN STD_LOGIC;co,so:OUT STD_LOGIC);END ENTITY h_adder;ARCHITECTURE art2 OF h_adder IS-实体h_adder的结构体art2的说明 BEGIN so=(a OR b)AND(a NAND b);co=NOT(a NAND b);END ARCHITECTURE art2;,3)全加器的逻辑描述LIBRARY IEEE;-IEEE库的使用说明USE IEEE.STD_LOGIC_1164.ALL;ENTITY f_adder IS-实体f_ad
8、der的说明 PORT(ain,bin,cin:IN STD_LOGIC;-端口声明,方向、数据类型名 cout,sum:OUT STD_LOGIC);END ENTITY f_adder;ARCHITECTURE art3 OF f_adder IS-实体F_ADDER的结构体ART3的说明 COMPONENT h_adder-元件调用声明,将h_adder作为元件连接到指定端口 PORT(a,b:IN STD_LOGIC;-端口声明 co,so:OUT STD_LOGIC);END COMPONENT h_adder;,COMPONENT or2 PORT(a,b:IN STD_LOGIC
9、;c:OUT STD_LOGIC);END COMPONENT or2;SIGNAL d,e,f:STD_LOGIC;-定义中间信号转存点 BEGIN-元件连接说明 U1:h_adder PORT MAP(a=ain,b=bin,co=d,so=e);-名称映射法 U2:h_adder PORT MAP(a=e,b=cin,co=f,so=sum);-名字关联方式 U3:or2 PORT MAP(a=d,b=f,c=cout);END ARCHITECTURE art3;,3.说明及分析(1)整个设计包括三个设计实体,分别为or2、h_adder和f_adder,其中实体f_adder为顶层实
10、体。三个设计实体均包括三个组成部分:库、程序包使用说明,实体说明和结构体说明。这三个设计实体既可以作为一个整体进行编译、综合与存档,也可以各自进行独立编译、独立综合与存档,或被其他的电路系统所调用。(2)实体 or2定义了或门or2的引脚信号a、b(输入)和c(输出),结构体art1描述了输入与输出信号间的逻辑关系,将输入信号a、b相或后传给输出信号端c,由此实体和结构体描述一个完整的或门元件。,(3)实体h_adder及对应的结构体art2描述了一个半加器。是由一个与非门、一个非门、一个或门和一个与门连接而成的,其逻辑关系来自于半加器真值表。在VHDL中,逻辑算符NAND、NOT、OR和AN
11、D分别代表“与非”、“非”、“或”和“与”4种逻辑运算关系。(4)在全加器接口逻辑VHDL描述中,1位二进制全加器f_adder的原理图,实体f_adder定义了引脚的端口信号属性和数据类型。其中,ain和bin分别为两个输入的相加位,cin为低位进位输入,cout 为进位输出,sum为1位和输出。其对应的结构体art3的功能是利用COMPONENT声明语句和COMPONENT例化语句将上面由两个实体or2和h_adder描述的独立器件,按照图3.2全加器内部逻辑原理图中的接线方式连接起来。,(5)在结构体art3中,COMPONENTEND COMPONENT 语句结构对所要调用的或门和半加
12、器两元件作了声明(COMPONENT DECLARATION),并由SIGNAL语句定义了三个信号d、e和f,作为中间信号转存点,以利于几个器件间的信号连接。“PORT MAP()”语句称为元件例化语句(COMPONENT INSTANTIATION)。所谓例化,在电路板上,相当于往上装配元器件;在逻辑原理图上,相当于从元件库中取了一个元件符号放在电路原理图上,并对此符号的各引脚进行连线。例化也可理解为元件映射或元件连接,MAP是映射的意思。例如,语句“U2:h_adder PORT MAP(a=e,b=cin,co=f,so=sum)”表示将实体h_adder描述的元件U2的引脚信号a、b、
13、co和so分别连向外部信号e、cin、f和sum。符号“=”表示信号连接。,(6)实体f_adder引导的逻辑描述也是由三个主要部分构成的,即库、实体和结构体。从表面上看来,库的部分仅包含一个IEEE标准库和打开的程序包。但实际上,从结构体的描述中可以看出,其对外部的逻辑有调用的操作,这类似于对库或程序包中的内容作了调用。因此,库结构部分还应将上面的或门和半加器的VHDL描述包括进去,作为工作库中的两个待调用的元件。由此可见,库结构也是VHDL程序的重要组成部分。,3.2.2 VHDL程序的基本结构 完整的VHDL程序(设计实体)具有固定的结构。应包括三个基本组成部分:库、程序包使用说明,实体
14、说明和实体对应的结构体说明。库、程序包使用说明用于打开本设计实体将要用到的库、程序包;实体说明用于描述该设计实体与外界的接口信号说明,是可视部分;结构体说明用于描述该设计实体内部工作的逻辑关系。在一个实体中,可以含有一个或一个以上的结构体,而在每一个结构体中又可以含有一个或多个进程以及其他的语句。实体还可以有配置说明语句。配置说明语句主要用于以层次化的方式对特定的设计实体进行元件例化,或是为实体选定某个特定的结构体。,VHDL程序设计基本结构,3.2.2 VHDL程序的基本结构,库、程序包 根据VHDL语法规则,在VHDL程序中使用的文字、数据对象、数据类型都需要预先定义。为了方便用VHDL编
15、程,IEEE将预定义的数据类型、元件调用声明(Declaration)及一些常用子程序收集在一起,形成程序包,供VHDL设计实体共享和调用。若干个程序包则形成库,常用的库是IEEE标准库。因此,在每个设计实体开始都有打开库或程序包的语句。例如 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;表示设计实体中被描述器件的输入、输出端口和数据类型将要用到IEEE标准库中的STD_LOGIC_1164程序包。,3.2.3 实体(ENTITY)实体(ENTITY)是设计实体中的重要组成部分,是一个完整的、独立的语言模块。它相当于电路中的一个器件或电路原理图上的一个元件符
16、号。实体由实体声明和结构体组成。实体声明部分指定了设计单元的输入输出端口或引脚,是设计实体经封装后对外的一个通信界面,是外界可以看到的部分。结构体用来描述设计实体的逻辑结构和逻辑功能。由VHDL语句构成,是外界看不到的部分。一个实体可以拥有一个或多个结构体。,1实体语句结构实体声明部分的常用语句结构如下:ENTITY 实体名 IS GENERIC(类属表);PORT(端口表);END ENTITY 实体名;实体声明单元必须以语句“ENTITY 实体名IS”开始,以语句“END ENTITY 实体名;”结束,实体名是设计者自己给设计实体的命名,可作为其他 设计实体对该设计实体进行调用时用。中间在
17、方括号内的语句描述,在特定的情况下并非是必须的。,2类属(GENERIC)说明语句 类属(GENERIC)参数声明必须放在端口声明之前,用于指定如矢量位数、器件延迟时间等参数。类属声明的一般书写格式如下:GENERIC(常数名;数据类型:设定值;常数名:数据类型:设定值);例:GENERIC(m:TIME=1.0ns);-m是一个值为1.0ns的时间参数 Temp1=d0 AND sel AFTER m;-表示d0 AND sel经1.0ns延迟后才送到Temp1,【例3.2.2】2输入与门的实体描述。ENTITY and2 IS GENERIC(RISEW:TIME:=1ns;FALLW:T
18、IME:=1ns);PORT(a1:IN STD_LOGIC;a0:IN STD_LOGIC;z0:OUT STD_LOGIC);END ENTITY and2;这是一个准备作为2输入与门的设计实体的实体描述,在类属说明中定义参数RISEW为上沿宽度,FALLW为下沿宽度,它们分别为1ns,这两个参数用于仿真模块的设计。,3PORT端口说明 端口声明语句是描述器件的外部接口信号的声明,相当于器件的引脚声明。实体端口声明的一般书写格式如下:PORT(端口名:方向 数据类型;端口名:方向 数据类型);例如 PORT(a,b:IN STD_LOGIC;-声明a,b是标准逻辑位类型的输入端口 s:IN
19、 STD_LOGIC;-声明s是标准逻辑位类型的输入端口 y:OUT STD_LOGIC);-声明y是标准逻辑位类型的输出端口,端口名是实体每一个对外通道的名字;端口方向模式是通道上数据流动的方式,如输入或输出等;数据类型是端口上流动数据的表达格式。VHDL对语句中的所有操作数的数据类型都有严格的规定。一个实体通常有一个或多个端口,端口类似于原理图部件符号上的管脚。实体与外界交流的信息必须通过端口通道流入或流出。IEEE 定义了4种常用的端口模式:IN-输入的引脚,OUT-输出的引脚,BUFFER-带输出缓冲器并可以回读的引脚(与TRI引脚不同),INOUT-双向引脚(即BIDIR引脚)。此模
20、式的端口是普通输出端口(OUT)加入三态输出缓冲器和输入缓冲器构成的。端口描述中的数据类型主要有两类:位(BIT)和位矢量(BIT_VECTOR)。若端口的数据类型定义为BIT,则其信号值是一个1位的二进制数,取值只能是0或1;若端口数据类型定义为BIT_VECTOR,则其信号值是一组二进制。,端口模式(方向)说明,端口模式符号图,3.2.4 结构体(ARCHITECTURE)结构体是用于描述设计实体的内部结构以及实体端口间的逻辑关系,在电路上相当于器件的内部电路结构。一个完整的结构体由两个基本层次组成:对数据类型、常数、信号、子程序和元件等元素的信号声明部分。描述实体逻辑行为的,以各种不同的
21、描述风格表达的功能描述语句。,结构体构造图,1.结构体的一般语句格式 结构体的语句格式如下:ARCHITECTURE 结构体名 OF 实体名 IS 信号声明语句;-为内部信号名称及类型声明 BEGIN 功能描述语句 END ARCHITECTURE 结构体名;其中,实体名必须是所在设计实体的名字,而结构体名可以由设计者自己选择,但当一个实体具有多个结构体时,结构体的取名不可重复。例如 设a、b是或非门的输入端口,z是输出端口,y是结构体内部信号,则用VHDL描述的两输入端或非门的结构体为:ARCHITECTURE nor1 OF templ IS SIGNAL y:STD_LOGIC;BEGI
22、N y=a OR b;-结构体功能描述语句 z=NOT y;END ARCHITECTURE nor1;,2结构体说明语句 结构体中的说明语句是对结构体的功能描述语句中将要用到的信号(SIGNAL)、数据类型(TYPE)、常数(CONSTANT)、元件(COMPONENT)、函数(FUNCTION)和过程(PROCEDURE)等加以说明的语句。但在一个结构体中说明和定义的数据类型、常数、元件、函数和过程只能用于这个结构体中,若希望其能用于其他的实体或结构体中,则需要将其作为程序包来处理。,3功能描述语句结构 功能描述语句结构含有五种不同类型,以并行方式工作。在每一语句结构的内部可能含有并行运行
23、的逻辑描述语句或顺序运行的逻辑描述语句。各语句结构的基本组成和功能分别是:(1)块语句(BLOCK)是由一系列并行执行语句构成的组合体,它的功能是将结构体中的并行语句组成一个或多个模块。(2)进程语句(PROCESS)定义顺序语句模块,用以将从外部获得的信号值,或内部的运算数据向其他的信号进行赋值。(3)信号赋值语句(赋值目标=表达式;)将设计实体内的处理结果向定义的信号或界面端口进行赋值。(4)子程序调用语句用于调用一个已设计好的子程序。子程序有过程(PROCEDURE)和函数(FUNCTION)两种类型。(5)元件例化(COMPONENT)语句对其他的设计实体作元件调用说明,并将此元件的端
24、口与其他的元件、信号或高层次实体的界面端口进行连接。,例1:半加器的描述LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;-IEEE库使用声明ENTITY h_adder ISPORT(a,b:IN STD_LOGIC;-实体端口声明 so,co:OUT STD_LOGIC);END h_adder;ARCHITECTURE ONE OF h_adder IS BEGIN so=a XOR b;-结构体功能描述语句 co=a AND b;END ARCHITECTURE ONE;,例2:2选1数据选择器的描述LIBRARY IEEE;USE IEEE.STD_L
25、OGIC_1164.ALL;ENTITY mux21 ISPORT(a,b:IN STD_LOGIC;s:IN STD_LOGIC;y:OUT STD_LOGIC);END mux21;ARCHITECTURE ONE OF mux21 IS BEGIN y=a WHEN s=0 ELSE b;END ARCHITECTURE ONE;,例3:锁存器的描述LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY latch1 ISPORT(d:IN STD_LOGIC;ena:IN STD_LOGIC;q:OUT STD_LOGIC);END latch1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VHDL编程基础 VHDL 编程 基础 PPT 课件
链接地址:https://www.31ppt.com/p-5577294.html