VHDL语言程序的基本结构课件.ppt

上传人:rrsccc 文档编号:10347045 上传时间:2021-05-10 格式:PPT 页数:51 大小:123.50KB
返回 下载 相关 举报
VHDL语言程序的基本结构课件.ppt_第1页
第1页 / 共51页
VHDL语言程序的基本结构课件.ppt_第2页
第2页 / 共51页
VHDL语言程序的基本结构课件.ppt_第3页
第3页 / 共51页
VHDL语言程序的基本结构课件.ppt_第4页
第4页 / 共51页
VHDL语言程序的基本结构课件.ppt_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《VHDL语言程序的基本结构课件.ppt》由会员分享,可在线阅读,更多相关《VHDL语言程序的基本结构课件.ppt(51页珍藏版)》请在三一文库上搜索。

1、VHDL语言程序的基本结构,1,第2章 VHDL语言程序的基本结构,主要内容 VHDL语言设计的基本单元及其构成 : 实体 + 构造体 VHDL语言构造体的子结构描述 : 块、进程、子程序 包集合、库及配置,VHDL语言程序的基本结构,2,一个完整的VHDL语言程序通常包含5个部分: 实体(Entity) 构造体Architecture) 配置(Configuration) 包集合(Package) 库(Library),必备部分,VHDL语言程序的基本结构,3,实体: 描述所设计的系统的外部接口信号; 构造体:描述系统内部的结构和行为; 配置: 用于从库中选取所需要单元来组成系统设 计的不同

2、版本; 包集合:存放各种设计模块都能共享的数据类型、 常数和子程序等; 库: 存放已经编译的实体、构造体、包集合和 配置。 前四种是可分别编译的源设计单元,VHDL语言程序的基本结构,4,2.1 VHDL语言设计的基本单元及其构成 (实体+构造体),注意:一个电路系统的程序设计中只有一个实体,可以有多个构造体。,实体说明部分,构造体定义部分,VHDL语言程序的基本结构,5,2.1.1 实体说明,实体说明具有如下结构: ENTITY 实体名 IS 类属参数说明; 端口说明; END 实体名; 举例: ENTITY mux IS GENERIC(m:TIME:=1 ns); PORT(d0,d1,

3、sel:IN BIT; q:OUT BIT ); END mux;,VHDL语言程序的基本结构,6,类属参数说明是实体说明中的可选项,放在端口说明之前,用于指定参数; 其一般书写格式为: GENERIC 常数名:数据类型 :设定值 ,; 举例:GENETRIC(m:TIME:=1ns); 这个参数说明是指在VHDL程序中,构造体内的参数m的值为1ns。,类属参数说明,VHDL语言程序的基本结构,7,端口说明是对基本设计实体(单元)与外部接口的描 述,也可以说是对外部引脚信号的名称,数据类型和 输入、输出方向的描述; 其一般书写格式为: PORT(端口名,端口名:方向 数据类型名; 端口名,端口

4、名:方向 数据类型名); 举例: PORT(d0,d1,sel : IN BIT; q : OUT BIT; bus : OUT BIT_VECTOR(7 DOWNTO 0) );,端口说明,VHDL语言程序的基本结构,8,(1)端口名:赋予每个外部引脚名称,通常用一个或几个英文字母,或者用英文字母加数字命名之,例如:d0,d1,sel。 (2)端口方向:用来定义外部引脚的信号方向。,请注意OUT与BUFFER的区别,VHDL语言程序的基本结构,9,(3)数据类型:VHDL有10种数据类型(下一章详细介绍) BIT和BIT_VECTOR STD_LOGIC和STD_LOGIC_VECTOR,使

5、用时需要加入以下两个语句: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;,VHDL语言程序的基本结构,10,练习,试写出半加器的实体描述: 如右图所示 a,b为半加器的输入端口,s,co为输出信号,s为和信号,co为进位信号。,VHDL语言程序的基本结构,11,2.1.2 构造体,构造体(Architecture)具体指明了该设计实体的行为,定义了该设计实体的功能,规定了该设计实体的数据流程,指派了实体中内部元件的连接关系。,VHDL语言程序的基本结构,12,构造体对其基本设计单元的输入输出关系有三种描述方式 : (1) 行为描述: 对设计实体按算法的路

6、径来描述。采用进程语句顺序描述设计实体的行为和功能。 (2) 寄存器传输描述(数据流描述): 通过描述数据流程的运动路径、方向和运动结果,实现设计实体的行为和功能。 (3) 结构描述(逻辑元件连接描述): 采用并行处理语句描述设计实体内的结构组织和元件互连关系。通常用于层次式设计。,VHDL语言程序的基本结构,13,构造体的一般书写格式为: ARCHITECTURE 构造体名 OF 实体名 IS 定义语句内部信号,常数,数据类型,函数等的定义; BEGIN 并行处理语句; END 构造体名;,VHDL语言程序的基本结构,14,构造体名称由设计者自由命名,是构造体的唯一名称。OF后面的实体名称表

7、明该构造体属于哪个设计实体,有些设计实体中可能含有多个构造体。这些结构体的命名可以从不同侧面反映结构体的特色,让人一目了然。例如: ARCHITECTURE behacvioral OF mux IS 用结构体行为命名 ARCHITECTURE dataflow OF mux IS 用结构体数据流命名 ARCHITECTURE structural OF mux IS 用结构体组织结构命名 ARCHITECTURE bool OF mux IS 用结构体的数学表达方式命名 ARCHITECTURE latch OF mux IS 用结构体的功能来命名,构造体名称的命名,VHDL语言程序的基本结

8、构,15,定义语句位于ARCHITECTURE 和BEGIN之间,用于对构造体内部所使用的信号、常数、数据类型和函数进行定义。 举例:ARCHITECTURE behav OF mux IS SIGNAL tmp:BIT; BEGIN END behav; 构造体的信号定义和实体的端口说明一样,应有信号名称和数据类型定义,但不需要定义信号模式,不用说明信号方向,因为是结构体内部连接用信号。,定义语句,VHDL语言程序的基本结构,16,具体描述构造体的行为及其连接关系。 在构造体中的语句都是可以是并行执行的,语句的书写顺序不决定语句的执行顺序。 所谓“并行”,指的是这些并行语句之间没有执行顺序的

9、先后之分。,并行处理语句,VHDL语言程序的基本结构,17,构造体子结构描述的三种形式: 块(BLOCK)语句结构; 进程(PROCESS)语句结构; 子程序(SUBPROGRAM)结构。,2.2 构造体的子结构描述,VHDL语言程序的基本结构,18,2.2.1 BLOCK语句结构描述,块(BLOCK)可看作构造体中子模块,BLOCK可以把许多语句包装在一起。在VHDL语言中,电路的构造体对应整个电路图,而构造体可以由多个BLOCK块构成,每一个BLOCK块对应一张子原理图。 BLOCK语句的一般格式如下: 块结构名: BLOCK BEGIN END BLOCK 块结构名;,VHDL语言程序的

10、基本结构,19,块结构举例: ENTITY mux IS PORT(d0,d1,sel:IN BIT; q:OUT BIT); END mux; ARCHITECTURE connect OF mux IS SIGNAL tmp1,tmp2,tmp3:BIT; BEGIN Cale: BLOCK - BLOCK语句无条件执行 BEGIN tmp1=d0 AND sel; - BLOCK语句中各个语句是 -并行执行的 tmp2=d1 AND(NOT sel); tmp3=temp1 OR tmp2; q=tmp3; END BLOCK cale; END connect;,VHDL语言程序的基本

11、结构,20,卫式BLOCK(Guarded BLOCK): 可实现BLOCK的执行控制,当满足一定条件时BLOCK语句才被执行。 卫式BLOCK举例: ARCHITECTURE latch_guard OF latch IS BEGIN G1: BLOCK(clk=1) BEGIN q=GUARDED d AFTER 5 ns; qb= GUARDED NOT(d) AFTER 7 ns; END BLOCK g1; END latch_guard;,格式:BLOCK卫式布尔表达式 当卫式尔表达式为真时,BLOCK语句被执行,否则不被执行。,VHDL语言程序的基本结构,21,进程语句是并行处理

12、语句,即各个进程是同时处理的,在一个结构体中多个Process语句是同时并发运行的。,2.2.2 PROCESS语句结构描述,VHDL语言程序的基本结构,22,PROCESS语句的书写格式如下: 进程名:PROCESS敏感信号表 变量说明语句: BEGIN 顺序说明语句 END PROCESS 进程名;,VHDL语言程序的基本结构,23,当进程的敏感信号参数表中的任一敏感信号发生变化时,进程被激活,开始从上而下按顺序执行进程中的顺序语句,当最后一条语句执行完毕,进程挂起,等待下一次敏感信号的变化。从系统上电开始,这个过程周而复始的进行。,PROCESS语句的执行过程,VHDL语言程序的基本结构

13、,24,举例: ENTITY mux IS PORT(d0,d1,sel:IN BIT; q:OUT BIT); END mux; ARCHITECTURE connect OF mux IS BEGIN cale:PROCESS(d0,d1,sel) VARIABLE tmp1,tmp2,tmp3:BIT; BEGIN tmp1:=d0 AND sel; tmp2:=d1 AND (NOT sel); tmp3:=tmp1 OR temp2; q= tmp3; END PROCESS; END connect;,敏感信号: 只要有一个发生变化(如由“0”变成“1”或由“1”变为“0”)都将启

14、动PROCESS语句。,VHDL语言程序的基本结构,25,(1) 进程内部的所有语句都是顺序执行的。 (2) 多进程之间,是并行执行的,并可访问构造体或实体中所定义的信号。 (3) 进程的启动是由进程标识符Process后的敏感信号来触发,也可用WAIT语句等待一个触发条件的成立。 (4) 各进程之间的通信是由信号来传递的。,PROCESS语句的特点,VHDL语言程序的基本结构,26,使用WAIT语句的PROCESS书写格式如下: 进程名:PROCESS 变量说明语句: BEGIN WAIT UNTIL (激活进程的条件) 顺序说明语句 END PROCESS 进程名;,VHDL语言程序的基本

15、结构,27,子程序是主程序调用它以后,能将处理结果返回给主程序的模块。子程序可以反复调用。调用时,首先要初始化,执行结束后,子程序就终止。子程序内部的值不能保持,子程序返回,才能被再次调用。 子程序(subprogram)分两类: 过程(PROCEDURE)和函数(FUNCTION)。,2.2.3 SUBPROGRAM语句结构描述,VHDL语言程序的基本结构,28,过程语句的一般书写格式为: PROCEDURE 过程名(参数1;参数2;) IS 定义语句; -变量等定义 BEGIN 顺序处理语句 -过程语句 END 过程名; 举例: 用过程实现:把位矢量转换为整数类型。,VHDL语言程序的基本

16、结构,29,PROCEDURE Bitvector_to_integer (z: IN STD_LOGIC_VECTER; X_flag: OUT Boolean; q: INOUT INTEGER) IS BEGIN q := 0; X_falg := FALSE; FOR i IN Z RANGE LOOP q := q * 2; IF (Z(i) = 1) THEN q := q + 1; ELSE IF (Z(i) /= 0 ) THEN X_flag := TRUE; ENDIF; END LOOP; END Bitvector_to_integer;,VHDL语言程序的基本结构,3

17、0,函数语句的一般书写格式为: FUNCTION 函数名(参数1;参数2;) RETURN 数据类型名 IS 定义语句; BEGIN 顺序处理语句 RETURN 返回变量名; END 函数名;,VHDL语言程序的基本结构,31,举例: FUNCTION vector_to_int(S : STD_LOGIC_VECTER(7 downto 0)) RETURN INTEGER IS BEGIN VARIABLE result : INTEGER := 0; FOR i IN 0 TO 7 LOOP Result :=result * 2; IF S(i)=1 THEN Result :=res

18、ult+1; END IF; END LOOP; RETURN result; END vector_to_int;,VHDL语言程序的基本结构,32,子过程中的语句都是顺序执行的。 过程能返回多个变量,函数只能返回一个变量。 函数的参数都是输入参数。 过程的参数有输入、输出和双向参数。 函数有顺序函数、并行函数。 过程有顺序过程、并行过程。 顺序函数、顺序过程存在于进程之中。 并行函数、并行过程在进程外部或在另一个子程序之外。 过程在构造体或进程中以分散的形式存在。 函数常在赋值语句或表达式中使用。,VHDL语言程序的基本结构,33,库(library)是经编译后的数据的集合,它存放包集合定

19、义、实体定义、构造体定义和配置定义。 因此,库的好处就在于使设计者可以共享已经编译过的设计结果。在VHDL语言中可以存在多个不同的库,但是库和库之间是独立的,不能互相嵌套。,2.3.1 库,2.3 包集合、库及配置,VHDL语言程序的基本结构,34,IEEE库 STD库 面向ASIC的库 WORK库 用户定义的库,库的种类,VHDL语言程序的基本结构,35,IEEE库: 一些硬件厂商,如EDA工具专业公司、IC设计中心,都已经设计完成许多标准、通用的元件并放入库中。有些库被IEEE标准化组织认可,成为IEEE库,其中含有的部分包集合为: Std_logic_1164 包集合 Numeric_B

20、it 包集合 Numeric_Std 包集合 Math_Real 包集合 Math_Complex 包集合 Vital_Timing 包集合 Vital_Primitives 包集合,VHDL语言程序的基本结构,36,STD库: STD库为所有的设计单元所共享、隐含定义、默认和” 可见”。 STD库中有两个包集合:STANDARD和 TEXTIO。这两个包集合都是VHDL语言编译工具的组成部分,只要用VHDL语言设计项目,这两个包集合就是必需的工具。要调用 STANDARD中的数据可以不按标准格式说明,但在使用TEXTIO包集合中的数据时,应先说明库和包集合名。,VHDL语言程序的基本结构,3

21、7,面向ASIC的库: 库中存放着与逻辑门一一对应的实体,在使用该库前,应先进行说明。 WORK库: 现行作业库,WORK库用于保存当前正在进行的设计,是项目开发过程中各种VHDL工具处理设计文件的地方。 用户定义的库: 用户将为自身设计需要所开发的共用包集合和实体等汇集在一起定义成的库。,VHDL语言程序的基本结构,38,库的说明: LIBRARY 库名; USE 库名. 包集合名. 包集合中的项目名; 例如: LIBRARY IEEE; -声明使用IEEE库 USE IEEE.STD_LOGIC_1164.ALL; -声明使用IEEE库中STD_LOGIC_1164包集合的所有项目 5类库

22、除WORK库和STD库之外,其它三类库在使用前都首先要作说明,库的使用,VHDL语言程序的基本结构,39,库说明的作用范围: 库说明语句的作用范围从一个实体说明开始到它所属的构造体、配置为止。 当一个源程序中出现两个以上的实体时,两条作为使用库的说明语句应在每个实体说明语句前重复书写。,VHDL语言程序的基本结构,40,包集合用来罗列VHDL语言中所要用到的信号定义、常数定义、数据类型、元件语句、函数定义和过程定义等,它是一个可编译的设计单元,也是库结构中的一个层次。 包集合的使用 USE IEEE.STD_LOGIC_1164.ALL;,2.3.2 包集合,包集合的概念及使用,VHDL语言程

23、序的基本结构,41,包集合由两部分组成: 包集合标题和包集合体。 包集合标题为包集合定义接口,声明包中的数据类型、元件、函数。 包集合体规定程序的实际功能,它是一个可选项。 包集合可以只有一个包集合标题说明,因为在包集合标题中允许使用数据赋值和有实质性的操作语句。,包集合的结构,VHDL语言程序的基本结构,42,包集合的一般格式: PACKAGE 包集合名 IS 说明语句; END 包集合名; PACKAGE BODY 包集合名 IS 说明语句; END 包集合名;,VHDL语言程序的基本结构,43,包集合体的设计举例,LIBRARY STD; USE STD.STD_LOGIC.ALL; P

24、ACKAGE math IS TYPE st16 IS ARRAY(0 TO 15) OF STD_LOGIC; FUNCTION add(a,b: IN st16) RETURN st16; FUNCTION sub(a,b: IN st16) RETURN st16; END math; PACKAGE BODY math IS FUNCTION vect_to_int(S:st16) RETURN INTEGER IS END vect_to_int ;,VHDL语言程序的基本结构,44,FUNCTION int_to_st16(s:INTEGER) RETURN st16 IS END

25、 int_to_st16; FUNCTION add(a,b:IN st16) RETURN st16 IS END add; FUNCTION sub(a,b: IN st16) RETURN st16 IS END sub; END math;,VHDL语言程序的基本结构,45,配置 (configuration)语句用于描述层与层之间的连接关系和实体与结构体之间的连接关系。 设计者可以利用配置语句为实体选择不同的结构体。 在仿真设计中,利用配置来选择不同的构造体,进行性能对比实验来得到性能最佳的设计目标。,2.3.3 配置,VHDL语言程序的基本结构,46,配置语句的基本书写格式: CO

26、NFIGURATION 配置名 OF 实体名 IS 语句说明; END 配置名;,VHDL语言程序的基本结构,47,缺省配置格式的书写形式为: CONFIGURATION 配置名 OF 实体名 IS FOR 选配构造体名 END FOR; END 配置名; 缺省配置用于选则不含有块(Block)语句和元件(COMPONENT)安装语句的设计程序。 缺省配置将指定配置名、要做配置的实体和构造体,这样,选择不同构造体来组成设计实体可以达到不同的设计目的。,缺省配置,VHDL语言程序的基本结构,48,LIBRARY STD; USE STD.STD_LOGIC.ALL; ENTITY counter

27、 IS END counter; ARCHITECTURE count_255 OF counter IS -8位计数器 END count_255; ARCHITECTURE count_64k OF counter IS -16位计数器 END count_64k; CONFIGURATION small-count OF counter IS - 计数器缺省配置是 - 结构体count_255 FOR count_255 END FOR; END small_count; CONFIGURATION big_count OF counter IS -计数器第二次缺省配置 -是结构体cou

28、nt_64k FOR count_64K END FOR; END big_count;,举例:,VHDL语言程序的基本结构,49,在结构描述方法中,若构造体中采用标准库中的元件(例化元件)进行设计,可以省时、省力提高效率。在构造体中采用库中的例化元件进行设计的方法叫元件配置,设计一个构造体放入库中,形成标准元件的方法叫元件例化。这是两个相反的过程。 为实体写元件配置说明的2种基本形式: (1) 低层的配置,为每个元件指定底层的配置; (2) 实体-构造体对形式,为每个元件指定实体-构造体对。,元件配置,VHDL语言程序的基本结构,50,低层元件配置说明的书写格式为: FOR 元件例化标号:

29、元件名 USE CONFIGURTION 库名.配置名; END FOR; 举例: CONFIGURATION decode_llcon OF decode IS FOR structural FOR I1:inv USE CONFIGURATION WORK.invcon; END FOR; FOR I2:inv USE CONFIGURATION WORK.invcon; END FOR; FOR ALL : and3 USE CONFIGURATION WORK.and3con; END FOR; END FOR; END decode_1lcon;,VHDL语言程序的基本结构,51,实

30、体-构造体对元件配置,其语法书写格式为: FOR 例化标号: 元件名 USE ENTITY库名.实体名(结构体名) END FOR; 举例: CONFIGURATION decode_eacon OF decode IS FOR structural FOR I1 : inv USE ENTITY WORK.inv(behave); END FOR; FOR OTHERS : inv USE ENTITY WORK.inv(behave); END FOR; FOR A1 : and3 USE ENTITY WORK.and3(behave); END FOR; FOR OTHERS : and3 USE ENTITY WORK.and3(BEHAVE); END FOR; END structural; END decode_eacon;,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1