第三章 VHDL程序结构与要素课件.ppt
《第三章 VHDL程序结构与要素课件.ppt》由会员分享,可在线阅读,更多相关《第三章 VHDL程序结构与要素课件.ppt(108页珍藏版)》请在三一办公上搜索。
1、第三章 VHDL程序结构与要素,3.1 VHDL程序基本结构3.2 VHDL文字规则3.3 VHDL 基本数据对象与数据类型3.4 VHDL表达式与运算符,3.1 VHDL程序基本结构,一个VHDL程序的基本单元是设计实体,它可以是一个简单的门电路,也可以是一个复杂的数字系统。它既能作为一个电路的功能模块而单独存在和运行,也可以被其它数字系统所调用,从而成为这个系统的一部分。不管其功能复杂程度,VHDL程序的结构基本相同,一般由库、程序包、实体、结构体及配置语句构成。其中实体和结构两部分是必需的,由这二部分即可构成一个简单的VHDL程序。,为了便于程序的阅读和调试,对VHDL程序设计作如下约定
2、:(1) 语句结构描述中方括号“ ”内的内容为可选内容。(2) 对于VHDL的编译器和综合器来说,程序文字的大小写是不加区分的。关键字一般使用大写。(3) 程序中的注释使用双横线“-”。在VHDL程序的任何一行中,双横线“-”后的文字都不参加编译和综合。,VHDL程序设计约定,2选1数据选择器的VHDL程序,2选1多路选择器是典型的组合电路,以此电路的VHD表述与设计说明相关的VHDL结构、语句表述、数据规则、语法特点。,a和b分别为两个数据输入的端口名,s为通道选择控制信号输入端的端口名,y为输出端的端口名,“mux21a”是此器件的名称,【例3-1】 2选1多路选择器程序,LIBRARY
3、IEEE; -IEEE库使用说明语句USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux21 IS -实体说明部分PORT(a,b : IN STD_LOGIC;s: IN STD_LOGIC;y: OUT STD_LOGIC);END ENTITY mux21;,【例3-1】 2选1多路选择器程序,ARCHITECTURE mux21a OF mux21 IS BEGINPROCESS(a,b,s)BEGINIF s=0 THEN y=a; ELSEy=b;END IF;END PROCESS;END ARCHITECTURE mux21a;,-结构体部分,(1)以关
4、键词ENTITYentiti引导,END ENTITY mux21a结尾的语句部分,称为实体。VHDL的实体描述电路器件的外部情况及各信号端口的基本性质。图31可以认为是实体的图形表达。 (2)以关键词ARCHITECTURE引导,END ARCHITECTUR mux21a结尾的语句部分,称为结构体。结构体描述电路器件的内部逻辑功能或电路结构。图32是结构体的原理图。IEEE库使用说明语句:定义端口类型时使用了STD_LOGIC,其在IEEE.STD_LOGIC_1164.ALL中做了预定义。,一个相对完整的VHDL程序至少应包括三个基本组成部分:库、程序包使用说明,实体说明和实体对应的结构
5、体说明。1 库、程序包使用说明用于打开(调用)本设计实体将要用到的库、程序包;2 实体说明用于描述该设计实体与外界的接口信号说明,是可视部分;3结构体说明用于描述该设计实体内部工作的逻辑关系,是不可视部分。在一个实体中,可以含有一个或一个以上的结构体,而在每一个结构体中又可以含有一个或多个进程以及其他的语句。,3.1.1 实体,实体是一个设计实体的表层设计单元,其功能是对这个设计实体与外部电路进行接口描述。它规定了设计单元的输入输出接口信号或引脚,是设计实体经封装后对外的一个通信界面。这部分相当于是画原理图时的一个元件符号。,1.实体说明,实体说明单元的常用语句结构如下: ENTITY 实体名
6、 IS GENERIC(类属表); PORT(端口表); END ENTITY 实体名;实体说明单元必须以语句ENTITY 实体名IS开始,以语句END ENTITY 实体名;结束,其中的实体名是设计者自己给设计实体的命名,可作为其他设计实体对该设计实体进行调用时用。在用VHDL语言设计时,Maxplus要求存盘的文件名必须和实体名一致。,类属说明,类属说明的一般书写格式如下: GENERIC(常数名:数据类型:设定值,常数名:数据类型:设定值 .) 类属参量以关键词GENERIC引导一个类属参量表,在表中提供时间参数或总线宽度等静态信息。类属表说明用于确定设计实体和其外部环境通信的参数,传递
7、静态的信息。类属说明在所定义的环境中的地位十分接近常数,但却能从环境(如设计实体)外部动态地接受赋值,其行为又有点类似于端口PORT。,在一个实体中定义的、可以通过GENERIC参数类属的说明,为它创建多个行为不同的逻辑结构。比较常见的情况是选用类属来动态规定一个实体端口的大小,或设计实体的物理特性,或结构体中的总线宽度,或设计实体中、底层中同种元件的例化数量等。,一般在结构体中,类属的应用与常数是一样的。例如,当用实体例化一个设计实体的器件时,可以用类属表中的参数项定制这个器件,如可以将一个实体的传输延时、上升和下降延时等参数加到类属参数表中,然后根据这些参数进行定制,这对于系统仿真控制是十
8、分方便的。类属中的常数名是由设计者确定的类属常数名,数据类型通常取INTEGER或TIME等类型,设定值即为常数名所代表的数值。但需注意,综合器仅支持数据类型为整数的类属值。,【例3-2】 有类属说明的2输入与非门的实体描述。ENTITY nand2 IS GENERIC ( t_rise : TIME := 2ns ; t_fall : TIME := 1ns ) PORT( a: IN BIT; b : IN BIT; s : OUT BIT);END ENTITY nand2;,定义了二个时间,【例3-3】 n输入与非门的实体描述:ENTITY nand_n IS GENERIC ( n
9、 : INTEGER ) ; PORT( a : IN STD_LOGIC_VECTOR(n-1 DOWNTO 0); s : OUT STD_LOGIC );END ENTITY nand_n;,对于输入端口数进行了定义,其取值由类属于映射语句指定,可方便改变端口的数量。Nand_n GENERIC MAP(n=3),3端口说明(PORT),在电路图上,端口对应于元件符号的外部引脚。端口说明语句是对一个实体界面的说明,也是对端口信号名、数据类型和端口模式的描述。语句的一般格式如下: PORT(端口名,端口名:端口模式 数据类型); 或 PORT(端口名 :端口模式 数据类型; 端口名 :端口
10、模式 数据类型 . );,端口名为自己定义的端口名称,端口模式说明数据通过该端口的流动方向,数据类型说明通过该端口的数据类型如 PORT( a,b : IN STD_LOGIC;s: IN STD_LOGIC;y: OUT STD_LOGIC );,端口模式,BUFFER与INOUT的区别在于:INOUT是双向信号,既可以输入,也可以输出,而BUFFER也是实体的输出信号,但作输入用时,信号不是由外部驱动,而是从输出反馈得到,即BUFFER类的信号在输出外部电路的同时,也可以被实体本身的结构体读入,这种类型的信号常用来描述带反馈的逻辑电路,如计数器等。,3.1.2 结构体,结构体是一个实体的组
11、成部分,是对实体功能的具体描述。在电路中,如果实体代表一个器件符号,则结构体描述了这个符号的内部行为。结构体主要是描述实体的硬件结构、元件之间的互连关系、实体所完成的逻辑功能以及数据的传输变换等方面的内容。具体编写结构体时,可以从其中的某一方面来描述,也可综合各个方面来进行描述。结构体不能单独存在,它必须有一个界面说明,即一个实体。,结构体的一般语句格式,ARCHITECTURE 结构体名 OF 实体名 IS 说明语句 BEGIN 功能描述语句 END ARCHITECTURE 结构体名;其中,实体名必须是所在设计实体的名字,而结构体名可以由设计者自己选择,但当一个实体具有多个结构体时,结构体
12、的取名不可重复。,结构体说明语句,结构体中的说明语句是对结构体的功能描述语句中将要用到的信号(SIGNAL)、数据类型(TYPE)、常数(CONSTANT)、元件(COMPONENT)、函数(FUNCTION)和过程(PROCEDURE)等加以说明的语句。在一个结构体中说明和定义的数据类型、常数、元件、函数和过程只能用于这个结构体中,若希望其能用于其他的实体或结构体中,则需要将其作为程序包来处理。,ARCHITECTURE behavioral OF example_dairu IS SIGNAL a, b, c, d : BIT ; SIGNAL temp0, temp1 : STD_LOG
13、IC ;BEGIN . . .END ARCHITECTURE behavioral ;结构体的信号定义和端口说明语句相类似,应有信号的名称和数据类型的说明,但不需要定义信号的模式,因为它是内部信号。,功能描述语句,功能描述语句位于和之间;具体描述结构体的行为及其连接关系。语句结构可以含有五种不同类型的,以并行方式工作。而在每一语句结构的内部可能含有并行运行的逻辑描述语句或顺序运行的逻辑描述语句。,半加器,半加器的真值表中的A和B分别表示被加数和加数输入,S为本位和输出,C为向相邻高位的进位输出。,半加器的完整VHDL描述,例3-4 其中x、y为加数与被加数,s为和信号,c为进位信号ENTIT
14、Y half_adder IS PORT( x,y : IN BIT; s: OUT BIT; c: OUT BIT);END ENTITY half_adder;ARCHITECTURE dataflow OF half_adder IS BEGIN s = x XOR y; c = x AND y;END ARCHITECTURE dataflow;,3.1.3 描述风格,在VHDL程序中,结构体具体描述了设计实体的行为和逻辑功能,对于相同的逻辑功能可以有不同的描述方式或实现方案。这些不同的描述方式或者说是建模方法,被称为描述风格,VHDL中一般有种常用的描述风格:行为描述、数据流描述、结
15、构描述、混合描述。,.行为描述,如果程序的结构体只描述了所期望电路的功能或行为,即电路输入、输出间的转换行为,而没有包含任务实现这些功能的硬件信息,这种描述风格称为行为描述。行为描述是一种高层次的描述方式,设计者只需要关注设计实体即功能单元正确的行为描述,无需关心硬件电路的结构形式,即编程与硬件无关,类似于高级编程语言的编程方式。将VHDL的行为描述语句转换为门级电路由VHDL开发工具自动完成,是综合器的任务。不同的综合器对于相同的行为描述,有时会综合出的结果有较大的差别。,选数据选择器的行为描述程序,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTIT
16、Y mux21 ISPORT(a,b,s : IN STD_LOGIC; y: OUT STD_LOGIC );END ENTITY mux21;ARCHITECTURE behav OF mux21 IS BEGIN PROCESS(a,b,s) BEGIN IF s=0 THEN y=a; ELSE y=b; END IF; END PROCESS;END ARCHITECTURE behav;,2. 数据流描述,数据流描述也称为RTL(寄存器传输级)描述行为,类似于布尔方程,它既表示某种行为,又隐含结构信息,主要是指非结构化的并行描述语句。这种描述方式主要是反映数据经过一定的逻辑运算后在
17、输入、输出间的传递,可以清楚地看到数据的流动方向、路径和结果。,2选1多路选择器数据流描述程序,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux21 IS PORT(a,b,s : IN STD_LOGIC; y: OUT STD_LOGIC );END ENTITY mux21;ARCHITECTURE dataflow OF mux21 IS BEGIN y=(a AND (NOT s) OR (b AND s);END ARCHITECTURE dataflow;,3.结构描述,结构描述主要心元件或已完成的功能模块为基础,应用于采用
18、元件例化的VHDL程序设计中。通过描述元件及它们之间的相互连接关系,可以将各种子模块连接成更为复杂的功能模块或系统。在结构描述中,元件间的连接是通过定义的端口界面来实现的,主要描述端口及其互联关系,因此,结构描述电能提高设计的效率,因为它可以将已有的设计成果方便的应用新的设计中,且结构清晰。,2选1多路选择器结构描述程序,-二输入与门LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;ENTITY and21 IS PORT(i0,i1 : IN STD_LOGIC; q: OUT STD_LOGIC );END ENTITY and21;ARCHITECTUR
19、E one OF and21 IS BEGIN q=i0 AND i1; END ARCHITECTURE one;,-二输入或门LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;ENTITY or21 IS PORT(i0,i1 : IN STD_LOGIC; q: OUT STD_LOGIC );END ENTITY or21;ARCHITECTURE one OF or21 IS BEGIN q=i0 OR i1; END ARCHITECTURE one;,-非门LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;ENT
20、ITY inv21 IS PORT(i0 : IN STD_LOGIC; q: OUT STD_LOGIC );END ENTITY inv21;ARCHITECTURE one OF inv21 IS BEGIN q= (NOT i0); END ARCHITECTURE one;,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux21 IS PORT(a,b,s : IN STD_LOGIC; y: OUT STD_LOGIC );END ENTITY mux21;ARCHITECTURE struct OF mux21 IS COMP
21、ONENT and21PORT (i0,i1 : IN STD_LOGIC; q: OUT STD_LOGIC); END COMPONENT;COMPONENT or21PORT (i0,i1 : IN STD_LOGIC; q: OUT STD_LOGIC);END COMPONENT;COMPONENT inv21 PORT (i0: IN STD_LOGIC; q: OUT STD_LOGIC); END COMPONENT;SIGNAL tmp1,tmp2,tmp3:STD_LOGIC;BEGIN u1: and21 PORT MAP (b, s,tmp1); u2: inv21 P
22、ORT MAP(s,tmp2); u3: and21 PORT MAP (a,tmp2,tmp3); u4: or21 PORT MAP(tmp1,tmp3,y);END ARCHITECTURE struct;,4. 混合描述,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY xor21 IS PORT(i0,i1:IN STD_LOGIC; q: OUT STD_LOGIC);END ENTITY xor21;ARCHITECTURE behav OF xor21 IS BEGIN q=i0 XOR i1; END ARCHITECTURE b
23、ehav;,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY half_adder IS PORT(a,b:IN STD_LOGIC; c,s: OUT STD_LOGIC);END ENTITY half_adder;ARCHITECTURE mix OF half_adder ISCOMPONENT xor21 IS PORT(i0,i1:IN STD_LOGIC; q:OUT STD_LOGIC); END COMPONENT; BEGIN c = a AND b; u1: xor21 PORT MAP(a,b,s); END ARCHITE
24、CTURE mix;,3.2 VHDL文字规则,VHDL文字主要包括数值和标识符。数值型文字主要有数值型、字符串型、位串型。1数值型文字 数字型文字的值有多种表达方式,现列举如下:(1) 整数型文字:整数文字都是十进制的数,如: 5,678,0,156E2(=15600), 45_234_287(=45234287) 数字间的下划线仅仅是为了提高文字的可读性,相当于一个空的间隔符,而没有其他的意义,因而不影响文字本身的数值,(2) 实数文字:实数文字也都是十进制的数,但必须带有小数点,如: 188.993, 88_670_551.453_909(=88670551.453909), 1.0,4
25、4.99E-2(=0.4499),1.335,0.0(3) 以数制基数表示的文字:用这种方式表示的数由五个部分组成。第一部分,用十进制数标明数制进位的基数;第二部分,数制隔离符号“#”;第三部分,表达的文字;第四部分,指数隔离符号“#”;第五部分,用十进制表示的指数部分,这一部分的数如果是0可以省去不写。,例如:10#170# -(十进制数表示,等于170)2#1111_1110# -(二进制数表示,等于254)16#F.01#E+2 -(十六进制数表示,等于16#F01, 3841.00),(4) 物理量文字(VHDL综合器不接受此类文字)。如:60s(60秒),100m(100米),k(千
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三章 VHDL程序结构与要素课件 第三 VHDL 程序结构 要素 课件
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-1921878.html