EDA实用技术 第2版 普通高等教育“十一五”国家级规划教材 教学课件 ppt 作者 宋嘉玉 第4章 硬件描述语言VHDL

上传人:E**** 文档编号:89348224 上传时间:2019-05-23 格式:PPT 页数:183 大小:1.05MB
返回 下载 相关 举报
EDA实用技术 第2版  普通高等教育“十一五”国家级规划教材  教学课件 ppt 作者  宋嘉玉 第4章  硬件描述语言VHDL_第1页
第1页 / 共183页
EDA实用技术 第2版  普通高等教育“十一五”国家级规划教材  教学课件 ppt 作者  宋嘉玉 第4章  硬件描述语言VHDL_第2页
第2页 / 共183页
EDA实用技术 第2版  普通高等教育“十一五”国家级规划教材  教学课件 ppt 作者  宋嘉玉 第4章  硬件描述语言VHDL_第3页
第3页 / 共183页
EDA实用技术 第2版  普通高等教育“十一五”国家级规划教材  教学课件 ppt 作者  宋嘉玉 第4章  硬件描述语言VHDL_第4页
第4页 / 共183页
EDA实用技术 第2版  普通高等教育“十一五”国家级规划教材  教学课件 ppt 作者  宋嘉玉 第4章  硬件描述语言VHDL_第5页
第5页 / 共183页
点击查看更多>>
资源描述

《EDA实用技术 第2版 普通高等教育“十一五”国家级规划教材 教学课件 ppt 作者 宋嘉玉 第4章 硬件描述语言VHDL》由会员分享,可在线阅读,更多相关《EDA实用技术 第2版 普通高等教育“十一五”国家级规划教材 教学课件 ppt 作者 宋嘉玉 第4章 硬件描述语言VHDL(183页珍藏版)》请在金锄头文库上搜索。

1、第4章 硬件描述语言VHDL,4.1 概述 4.2 VHDL的基本结构,4.2.1 库(Library) 4.2.2 实体(ENTITY) 4.2.3 结构体(ARCHITECTURE),一个完整的VHDL程序(或称为设计实体)结构如图4.1所示。 一个基本的VHDL程序至少应包括3个基本组成部分:库、程序包说明(Library、Use);实体说明(Entity)和对应的结构体说明(Architecture)。,图4.1 VHDL的程序结构图,库是专门存放预编译程序包(Package)的地方,这样,它们就可以在其他设计中被调用。 程序包(Packages)是数据类型(Data Type)和函数

2、(Functon)、或是公共元件(Components)的集合。 库的使用方法是:在每个设计的开头声明选用的库名,用USE语句声明所选中的逻辑单元。 一经声明,该库中的元件对本设计是可见的。 库可以是VHDL的标准库,也可以是由用户根据需要自定义的库。,4.2.1 库(Library),库的一般格式为 Library 库名; USE 库名.逻辑体名; 例如: Library IEEE; -选用IEEE标准库 USE IEEE.std_logic_1164.ALL; -程序包名 USE IEEE.std_logic_unsigned.ALL; -ALL表示使用库/程序包中的所有定义 USE IE

3、EE.std_logic_arith.ALL; 在VHDL中,两短横(-)是注释符,其有效范围是 从注释符开始至行尾结束,所有被注释过的字符都不参与编译和综合。 黑体字母表示关键字(Keyword),不能用作标识符。,实体用来描述设计的输入/输出信号。 实体类似于原理图中的符号(Symbol),并不描述模块的具体功能。 实体的一般格式为: ENTITY 实体名 IS GENERIC (类属参数说明); PORT(端口说明); END 实体名; 注意:实体名可由设计者根据标识符的规则自由命名,但必须与VHDL程序的文件名相同。方括号中的项表示可以省略。,4.2.2 实体(ENTITY),1类属参

4、数说明,类属参数说明主要用于指定参数。 类属说明的一般格式为: GENERIC (常数名:数据类型:设定值; 常数名:数据类型:设定值); 例如:GENERIC (wide:int:=32; -说明宽度为32 tmp:int:=5ns); -说明延迟为5ns,2端口说明,每一个输入/输出信号称为端口,用于将外部环境的动态信息传递给实体的具体元件。 对实体的每个端口必须定义,每个端口表必须确定端口名、端口模式(MODE)及数据类型(TYPE)。 端口说明的一般格式为: PORT(端口名:端口模式 数据类型; 端口名:端口模式 数据类型);,(1)端口名:每个外部引脚的名称,在实体中必须是唯一的。

5、 (2)端口模式:用来决定信号的流动方向。 端口模式共有输入(IN)、输出(OUT)、双向(INOUT)和缓冲(BUFFER)4种类型,其默认(缺省)模式为输入模式。各模式说明如表4.1所示。,表4.1 端口模式说明,注意:OUT与BUFFER都可以定义输出端口,但它们之间是有区别的。,(3)端口类型 即端口名的数据类型。 在VHDL语言中有多种数据类型,但在逻辑电路中一般只用到以下几种:BIT和BIT_VECTOR、STD_LOGIC和STD_LOGIC_VETOR 。 当使用标准逻辑和标准逻辑序列这两种数据类型时,在程序中必须写出库说明语句和程序包说明语句。,【例4.1】 全加器的端口如图

6、4.2所示,则其端口的VHDL语言描述如下。 ENTITY Full_adder IS PORT( a,b,c: IN BIT ; sum,carry: OUT BIT ); END Full_adder; 注意:存盘的文件名为Full_adder.VHD。,图4.2 全加器的端口图,结构体用来描述设计的具体内容。 此时可将实体视为“黑盒子”(Black Box),即只知道其外貌却不明确其内部逻辑。 结构体则具体描述实体的功能以及如何实现这些功能。结构体是设计描述的核心。,4.2.3 结构体(ARCHITECTURE),结构体的一般格式为: ARCHITECTURE 结构体名 OF 实体名 I

7、S 定义语句; BEGIN 功能描述语句; END 结构体名; 结构体定义语句可定义类型、信号、元件和子程序等信息。 这些信息可理解结构体的内部信息或数据,只在结构体内部有效。,BEGIN语句指明了功能描述语句的开始。 功能描述语句主要描述实体的硬件结构,包括元件间的互相联系,实体完成的逻辑功能、数据传输变换等。 结构体不能离开实体而单独存在,即使该实体是空实体。一个实体可同时具备多个结构体。 实体具体使用哪个结构体,可通过配置语句来实现。,【例4.2】 全加器的结构体描述。 ARCHITECTURE adder OF Full_adder IS BEGIN sum=a XOR b XOR c

8、; carry=(a AND b) OR (b AND c) OR (a AND c); END adder; 注意:结构体名由设计者根据标识符规则自由命名。,4.3 VHDL的基本知识,4.3.1 标识符(Identifiers) 4.3.2 关键字(Keyword) 4.3.3 数据对象(Data Objects) 4.3.4 数据类型(Ddtd Types) 4.3.5 运算符 4.3.6 属性(Attributes),标识符用来为常量、变量、信号、端口、子程序或参数等命名。 由英文字母、数字、下划线组成,并必须遵守以下规则。 (1)标识符的第一个字符必须是字母。 (2)英文字母不区分大

9、小写,也可大小写混用。 (3)最后一个字符不能是下划线,且不允许连续出现两个下划线。 (4)关键字(保留字)不能用作标识符。 (5)标识符最长可以是32个字符。,4.3.1 标识符(Identifiers),关键字(保留字)是VHDL语言中具有特别意义的单词,只能用作固定的用途,用作标识符时会发生编译错误。VHDL语言常用的关键字如图4.3所示。,4.3.2 关键字(Keyword),图4.3 VHDL语言中的关键字,VHDL的数据对象主要有常量、变量、信号和文件4种类型,必须“先说明,后使用”。 VHDL语言中的数据对象如表4.2所示。,4.3.3 数据对象(Data Objects),表4

10、.2 VHDL语言中的数据对象,在实际使用中,应注意变量与信号的区别。 虽然VHDL仿真器允许变量和信号设置初始值,但VHDL综合器并不会把这些信息综合进去。 这是因为实际的PLD芯片上电后,并不能确保其初始状态的取向,因此对于时序仿真来说,设置的初始值在综合时是没有实际意义的。,VHDL有多种数据类型,要求设计中出现的每一个量都必须有确定的数据类型。 VHDL的数据类型可分为4大类:标量型、复合型、寻址型、文件型。 这4个类型中的每一个又包括许多种类型,如表4.3所示。,4.3.4 数据类型(Ddtd Types),表4.3 数据类型,在VHDL语言中,数据类型是相当严格的,不同类型的数据是

11、不能进行运算和直接代入的,因此必须对数据进行相应的类型转换。 类型变换函数通常由VHDL语言的程序包提供,如表 4.4所示。,表4.4 数据类型变换函数,VHDL语言定义了丰富的运算操作符,主要有关系运算符、算术运算符、逻辑运算符、赋值运算符、关联运算符和其他运算符等,如表4.5所示。,4.3.5 运算符,表4.5 VHDL的各种运算操作符,在所有的运算符中,乘方(*)、取绝对值(abs)和非(not)的优先级最高,其次是乘、除、取模、求余,然后依次是正负号、连接符、移位运算符、关系运算符、逻辑运算符。 注意:矢量赋值用双引号,单比特常量用单引号。,属性是关于实体、结构体、类型、信号等的特性。

12、 一个对象可以同时具有多个属性,利用属性可以使程序更加简明。 属性的一般格式为: 项目名属性标识符 VHDL语言预定义了大量可供用户使用的属性,如表4.6所示。,4.3.6 属性(Attributes),表4.6 几种常用属性,4.4 VHDL语言的基本语句,4.4.1 顺序(Sequential)语句 4.4.2 并行(Concurrent)语句,顺序语句与并行语句是VHDL语言中的两大基本语句系列。,顺序语句用以定义进程、过程和函数语句所执行的算法,为算法描述提供方便,它只能出现在进程和子程序中。 同一般的高级语言一样,顺序语句是按出现的次序被执行的。 顺序语句主要有信号赋值语句、变量赋值

13、语句、IF语句、CASE语句、LOOP语句、NEXT语句、EXIT语句、NULL语句和WAIT语句等。,4.4.1 顺序(Sequential)语句,1IF语句,IF语句是根据所指定的条件来确定执行哪些语句,通常有以下3种类型。,(1)用作门阀控制时的IF语句书写格式为: IF (条件) THEN 顺序处理语句; END IF; (2)用作二选择控制时的IF语句书写格式为: IF (条件) THEN 顺序处理语句1; ELSE 顺序处理语句2; END IF;,(3)用作多选择控制时的IF语句书写格式为: IF 条件1 THEN 顺序处理语句1; ELSIF 条件2 THEN 顺序处理语句2;

14、 ELSIF 条件N-1 THEN 顺序处理语句N-1; ELSE 顺序处理语句N; END IF; 以上IF语句3种类型中的任一种,如果指定的条件为判断真(TRUE),则执行THEN后面的顺序处理语句;如果条件判断为假(FALSE),则执行ELSE后面的顺序处理语句。,【例4.3】 使用IF语句描述图4.4所示的2选1电路。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux2 IS PORT(a,b,en:IN BIT; c:OUT BIT ); END mux2; ARCHITECTURE aa OF mux2 IS BEGIN图4

15、.4 2选1电路 PROCESS(a,b) BEGIN c=b; IF (en=1) THEN c=a; END IF; END PROCESS; END aa;,从上面的程序可以观察到,VHDL程序多采用缩进式形式。 保存时文件名与实体名(为了增强程序的可读性,实体名多取描述“电路名称的英文+数字”)必须一致,后缀用vhd。 在上例中保存时的文件名用“mux2.vhd”。,图4.4 2选1电路,2CASE语句,CASE语句用来描述总线或编码、译码的行为。 它是VHDL提供的另一种形式的条件控制语句。 CASE语句与IF语句的相同之处在于:它们都是根据某个条件在多个语句中进行选择;不同之处在于

16、:CASE语句是根据某个表达式的值来选择执行的,而IF语句是根据条件的真、假来选择执行的。,CASE语句的一般格式为: CASE 表达式 IS WHEN 条件表达式1=顺序处理语句1; WHEN 条件表达式2=顺序处理语句2; END CASE; 此外,条件表达式还可有如下的表示形式: WHEN 值=顺序处理语句; -单个值 WHEN 值 | 值 | 值 | 值=顺序处理语句;-多个值的“或” WHEN 值 TO 值=顺序处理语句; -一个取值范围 WHEN OTHERS=顺序处理语句; -其他所有的缺省值,当CASE和IS之间的表达式的取值满足指定的条件表达式的值时,程序将执行后面跟的,由=指定的顺序处理语句。 在CASE语句中的选择必须是唯一的,即计算表达式所得的值必须且只能是CASE语句中的一支。 CASE语句中支的个数没有限制,各分支的次序也可以任意排列,但关键字OTHERS(表示其他可能的取值)的分支例外,一个CASE语句最多只能有一个

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

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

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