数字系统设计与EDA技术 第2版 教学课件 ppt 作者 于润伟 第5章 VHDL语言的并行语句

上传人:E**** 文档编号:89503410 上传时间:2019-05-26 格式:PPT 页数:32 大小:2.67MB
返回 下载 相关 举报
数字系统设计与EDA技术 第2版 教学课件 ppt 作者 于润伟 第5章 VHDL语言的并行语句_第1页
第1页 / 共32页
数字系统设计与EDA技术 第2版 教学课件 ppt 作者 于润伟 第5章 VHDL语言的并行语句_第2页
第2页 / 共32页
数字系统设计与EDA技术 第2版 教学课件 ppt 作者 于润伟 第5章 VHDL语言的并行语句_第3页
第3页 / 共32页
数字系统设计与EDA技术 第2版 教学课件 ppt 作者 于润伟 第5章 VHDL语言的并行语句_第4页
第4页 / 共32页
数字系统设计与EDA技术 第2版 教学课件 ppt 作者 于润伟 第5章 VHDL语言的并行语句_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《数字系统设计与EDA技术 第2版 教学课件 ppt 作者 于润伟 第5章 VHDL语言的并行语句》由会员分享,可在线阅读,更多相关《数字系统设计与EDA技术 第2版 教学课件 ppt 作者 于润伟 第5章 VHDL语言的并行语句(32页珍藏版)》请在金锄头文库上搜索。

1、数字系统设计与EDA技术,主编:于润伟,本章要点 VHDL程序的结构 VHDL的数据结构 VHDL的并行语句 编码器的设计,第5章 VHDL语言的并行语句,-库和程序包部分 LIBRARY IEEE; -IEEE库 USE IEEE.STD_LOGIC_1164.ALL;-调用IEEE库中STD_LOGIC_1164程序包 -实体部分 ENTITY notA IS -实体名为 notA PORT ( -端口说明 a:IN STD_LOGIC; -定义端口类型和数据类型 y:OUT STD_LOGIC); END notA; -实体结束 -结构体部分 ARCHITECTURE inv OF no

2、tA IS -结构体名为 inv BEGIN y = NOT a; -将a取反后赋值给输出端口y END inv; -结构体结束,5.1 VHDL程序的结构,1库 LIBRARY 库名 ; 常用的库有IEEE库、STD库和WORK库。 2程序包 调用程序包的通用模式为:USE 库名.程序包名.ALL; 例如调用STD_LOGIC_1164程序包中的项目需要使用以下语句: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;,5.1.1 库和程序包,5.1.2 VHDL的实体,实体的格式如下: ENTITY 实体名 IS GENERIC(类属说明) PORT(端口

3、说明) END ENTITY 实体名; 1类属说明 GENERIC(常数名1:数据类型1:= 设定值1; ; 常数名n:数据类型n:= 设定值n); 2端口说明 PORT(端口信号名1:端口模式1 数据类型1; ; 端口信号名n:端口模式n 数据类型n);,5.1.3 VHDL的结构体,一个实体中可以有一个结构体,也可以有多个结构体,但各个结构体不应有重名, 其格式如下: ARCHITECTURE 结构体名 OF 实体名 IS 结构体说明部分; BEGIN 功能描述语句; END ARCHITECTURE 结构体名;,5.2.1 标识符 (1)由26个英文字母、数字09及下划线“_”组成。 (

4、2)第一个字符必须以字母开头。 (3)下划线不能连用,最后一个字符不能是下划线。 (4)对大小写字母不敏感(英文字母不区分大小写)。,5.2 VHDL的数据结构,1常量 CONSTANT 常量名,常量名:数据类型:= 表达式; 2变量 VARIABLE 变量名,变量名:数据类型 约束条件 := 表达式; 3信号 SIGNAL 信号名,信号名:数据类型 约束条件 := 表达式;,5.2.2 数据对象,1STANDARD程序包中预定义的数据类型 (1)整数类型(INTEGER) (2)自然数(NATURAL)和正整数(POSITIVE)类型。 (3)实数(REAL)类型。 (4)位(BIT)类型。

5、 (5)位向量(BIT_VECTOR)类型。,5.2.3 数据类型,(6)布尔(BOOLEAN)类型。 (7)字符(CHARACTER)类型。 (8)字符串(STRING)类型 (9)时间(TIME)类型。 (10)错误等级(SEVERITY LEVEL)类型。,(1)标准逻辑位(STD_LOGIC)数据类型。 (2)标准逻辑位向量(STD_LOGIC_VECTOR)数据类型。 (3)无符号(UNSIGNED)数据类型。 (4)有符号(SIGNED)数据类型。,2IEEE库中预定义的数据类型,(1)枚举类型(ENUMERATED) TYPE 数据类型名 IS(取值1,取值2,); (2)数组类

6、型(ARRAY)。 TYPE 数据类型名 IS ARRAY 数组下标范围 OF 数组元素的数据类型; (3)用户自定义子类型 SUBTYPE 子数据类型名 IS 数据类型名 RANGE 数据范围;,3用户自定义数据类型,例如把INTEGER数据类型的信号A转换为STD_LOGIC_VECTOR数据类型的信号B,程序如下: SIGNAL A:INTEGER RANGER 0 TO 15; -定义信号A SIGNAL B:STD _LOGIC_VECTOR(3 DOWNTO 0); -定义信号B B=CONV_STD_LOGIC_VECTOR(A); -调用转换函数 注意:使用数据类型转换函CON

7、V_STD_LOGIC_VECTOR,需要调用IEEE库中的STD_LOGIC_ARITH程序包。,5.2.4 数据类型间的转换,(1)逻辑运算符。 (2)关系运算符。 (3)移位运算符。 (4)符号运算符。 (5)连接运算符。 (6)算术运算符。,5.2.5 VHDL的运算符,5.3.1 信号赋值语句 1简单信号赋值语句 信号 = 表达式; 2条件信号赋值语句 信号 = 表达式1 WHEN 赋值条件1 ELSE 表达式2 WHEN 赋值条件2 ELSE 表达式n;,5.3 VHDL的并行语句,执行该语句时首先要进行条件判断,然后再进行信号赋值操作。当条件1满足时,就将表达式1的值赋给目标信号

8、;当条件2满足时,就将表达式2的值赋给目标信号;当所有的条件都不满足时,就将表达式n的值赋给目标信号。 (1)只有当条件满足时,才能将该条件前面的表达式值赋给目标信号。 (2)对条件进行判断是有顺序的,位置靠前的条件具有较高的优级,只有不满足本条件的时候才判断下一个条件。 (3)条件表达式的结果为布尔类型。 (4)最后一个表达式后面不含有WHEN子句。 (5)条件信号赋值语句允许条件重叠,但位置在后面的条件不会被执行。,WITH 选择表达式 SELECT 目标信号 = 信号表达式1 WHEN 选择条件1, 信号表达式2 WHEN 选择条件2, , 信号表达式n WHEN 选择条件n; 先对选择

9、条件表达式进行判断,当选择条件表达式的值符合某一选择条件时,就将该条件前面的信号表达式赋给目标信号。例如,当选择条件表达式的值符合条件1时,就将信号表达式1赋给目标信号;当选择条件表达式的值符合选择条件n时,就将信号表达式n赋给目标信号。,3选择信号赋值语句,(1)只有当选择条件表达式的值符合某一选择条件时,才将该选择条件前面的信号表达式赋给目标信号。 (2)每一个信号表达式后面都含有WHEN子句。 (3)由于选择信号赋值语句是并发执行的,所以不能够在进程中使用。 (4)对选择条件的测试是同时进行的,语句将对所有的选择条件进行判断,而没有优先级之分。这时如果选择条件重叠,就有可能出现两个或两个

10、以上的信号表达式赋给同一目标信号,这样就会引起信号冲突,因此不允许有选择条件重叠的情况。 (5)选择条件不允许出现涵盖不全的情况。如果选择条件不能涵盖选择条件表达式的所有值,就有可能出现选择条件表达式的值找不到与之符合的选择条件,这时编译将会给出错误信息。,块语句是一种并行语句的组合方式,可以使程序更加有层次、更加清晰。在物理意义上,一个块语句对应一个子电路;在逻辑电路图上,一个块语句对应一个子电路图。块语句的格式如下: 块标号:BLOCK 说明语句; BEGIN 并行语句; ; END BLOCK 块标号; 块标号是块的名称,块说明语句与结构体的说明语句相同,用来定义块内局部信号、数据类型、

11、元件和子程序,在块内并行语句区可以使用所有的并行语句。,5.3.2 块语句,一个结构体内可以包含多个进程语句,多个进程之间是同时执行的。进程语句本身是并行语句,但每个进程的内部则由一系列顺序语句构成。进程语句的格式如下: 进程名:PROCESS(敏感信号表) 进程说明; -说明用于该进程的常数,变量和子程序 BEGIN 变量和信号赋值语句; 顺序语句; END PROCESS 进程名;,5.3.3 进程语句,进程语句的主要特点归纳如下: (1)同一结构体中的各个进程之间是并发执行的,并且都可以使用实体说明和结构体中所定义的信号;而同一进程中的描述语句则是顺序执行的,并且在进程中只能设置顺序语句

12、。 (2)为启动进程,进程的结构中必须至少包含一个敏感信号。 (3)一个结构体中的各个进程之间可以通过信号或共享变量来进行通信,但任一进程的进程说明部分不允许定义信号和共享变量。 (4)进程语句是VHDL中的重要的建模语句,进程语句不但可以被综合器所支持,而且进程的建模方式直接影响仿真和综合的结果。,1元件声明语句(COMPONENT)格式如下: COMPONENT 元件名 PORT 元件端口说明 (与该元件源程序实体中的PORT部分相同) END COMPONENT; 2元件例化语句(PORT MAP)格式如下: 例化名:元件名 PORT MAP(元件端口对应关系列表);,5.3.4 元件例

13、化语句,(1)位置映射。就是被调用元件端口说明中信号的书写顺序及位置和PORT MAP语句中实际信号的书写顺序及位置一一对应。例如某元件的端口说明为:PORT(a,b:IN BIT;c:OUT BIT);调用该元件时可使用:com1:u1 PORT MAP(n1,n2,m);显然n1对应a,n2对应b,m对应c,com1是例化名,u1是元件名。 (2)名称映射。就是将库中已有的模块的端口名称赋予设计中的信号名。上例可改为:com1:u1 PORT MAP(a = n1,b = n2,c = m);,信号之间有位置映射和名称映射两种映射(关联)方式:,1FOR工作模式的生成语句 FOR工作模式常

14、常用来进行重复结构的描述,格式如下: 生成标号: FOR 循环变量 IN 取值范围 GENERATE 并行语句; END GENERATE 生成标号; 2IF工作模式的生成语句 IF工作模式的生成语句常用来描述带有条件选择的结构。格式如下: 生成标号: IF 条件 GENERATE 并行语句; END GENERATE 生成标号;,5.3.5 生成语句,在一些场合,需要用特定的符号或数码表示特定的对象,例如一个班级中的每个同学都有不重复的学号,每个电话用户都有一个特定的号码等。在数字电路中,需要将具有某种特定含义的信号变成代码,利用代码表示具有特定含义对象的过程,称为编码。能够完成编码功能的器

15、件,称为编码器(Encoder)。编码器分为普通编码器和优先级编码器两类。,5.4 编码器的设计,普通编码器在某一时刻只能对一个输入信号进行编码,即只能有一个输入端有效,当信号高电平有效时,则应只有一个输入信号为高电平,其余输入信号均为低电平。一般来说,由于n位二进制代码可以表示2n种不同的状态,所以,2n个输入信号只需要n个输出就完成编码工作。,5.4.1 8-3普通编码器,8-3线普通编码器电路具有8个输入端,3个输出端(23=8),属于二进制编码器。用X7X0表示8路输入,Y2Y0表示3路输出。原则上对输入信号的编码是任意的,常用的编码方式是按照二进制的顺序由小到大进行编码。,电路设计,LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY ENCODE IS PORT(X : IN std_logic_VECTOR(7 DOWNTO 0); Y : BUFFER std_logic_VECTOR(2 DOWNTO 0); END ENCODE; ARCHITECTURE A OF ENCODE IS BEGIN WITH X SELECT,参考程序:,Y=“000“ WHEN “00000001“, “001“ WHEN “00000010“, “010“ WHEN “

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号