第08章 VHDL._第1页
第08章 VHDL._第2页
第08章 VHDL._第3页
第08章 VHDL._第4页
第08章 VHDL._第5页
已阅读5页,还剩84页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 设计方法设计方法 传统的电路系统设计方法:纯硬件逻辑设计传统的电路系统设计方法:纯硬件逻辑设计 试凑法试凑法存在的问题:存在的问题: 当系统规模增大,设计烦琐,设计工作量大,设当系统规模增大,设计烦琐,设计工作量大,设计周期长;计周期长; 设计电路的体积大、功耗大、可靠性较低设计电路的体积大、功耗大、可靠性较低 交流性较差交流性较差 现代电路的设计方法:硬件设计现代电路的设计方法:硬件设计+ 软件设计软件设计 从上至下的设计方法从上至下的设计方法出现出现Hardware Description Language,HDL第一节第一节 VHDL语言的基本组成语言的基本组成第二节第二节 VHDL数

2、据类型和属性数据类型和属性第三节第三节 VHDL的行为描述的行为描述第四节第四节 VHDL的结构描述的结构描述1. 掌握用掌握用VHDL语言描述电路系统的行为和结构;语言描述电路系统的行为和结构;2. 初步理解现代电路的设计方法初步理解现代电路的设计方法从上到下的设从上到下的设计方法;计方法;3. 借助软件平台使用借助软件平台使用VHDL语言进行电路系统的综语言进行电路系统的综合设计。合设计。本章的教学目标本 讲 教 学 内 容VHDLVHDL语言概述语言概述VHDLVHDL语言的基本组成语言的基本组成VHDLVHDL的数据类型的数据类型1. 语言输入法设计电路与系统的优势;语言输入法设计电路

3、与系统的优势; 2. 掌握掌握VHDL语言的基本组成;语言的基本组成;3. 掌握自建库方法和掌握自建库方法和VHDL标量数据类型描述;标量数据类型描述; 4. 初步理解现代电路的设计方法初步理解现代电路的设计方法从上到下的从上到下的设计方法。设计方法。本 讲 教 学 目 标 AHDL HIHDLTEXAS DSLLattice VerilogGataway Design Automayion VHDL美国国防部在美国国防部在80年代初提出了年代初提出了VHSIC(Very High Speed Integrated Circuit)计划,其目标之一是为下一代集成电路的)计划,其目标之一是为下一

4、代集成电路的生产,实现阶段性的工艺极限以及完成生产,实现阶段性的工艺极限以及完成10万门级以上的设计,万门级以上的设计,建立一项新的描述方法。建立一项新的描述方法。1981年提出了一种新的年提出了一种新的HDL,称之为,称之为VHSIC Hardware Description Language,简称为,简称为VHDL。IEEE标准标准VHDL 概 述一、一、 硬件描述语言硬件描述语言二、二、VHDLVHDL语言的主要优点语言的主要优点 是一种多层次的硬件描述语言,覆盖面广,描述能是一种多层次的硬件描述语言,覆盖面广,描述能力强。力强。即设计的原始描述可以是非常简练的描述,即设计的原始描述可以

5、是非常简练的描述,经过层层细化求精,最终成为可直接付诸生产的电经过层层细化求精,最终成为可直接付诸生产的电路级或版图参数描述,整个过程都可以在路级或版图参数描述,整个过程都可以在VHDL的的环境下进行。环境下进行。 VHDL 有良好的可读性有良好的可读性,既可以被计算机接受,也既可以被计算机接受,也容易被理解用容易被理解用VHDL 书写的原文件;既是程序,又书写的原文件;既是程序,又是文挡;既是技术人员之间交换信息的文件,又可是文挡;既是技术人员之间交换信息的文件,又可作为合同签约者之间的文件。作为合同签约者之间的文件。 VHDL 概 述VHDL本身的生命期长本身的生命期长。因为。因为VHDL

6、的硬件描述与工艺的硬件描述与工艺技术无关,不会因工艺变化而使描述过时。与工艺技术技术无关,不会因工艺变化而使描述过时。与工艺技术有关的参数可通过有关的参数可通过VHDL提供的属性加以描述,工艺改提供的属性加以描述,工艺改变时,只需修改相应程序中的属性参数即可。变时,只需修改相应程序中的属性参数即可。 支持大规模设计的分解和已有设计的再利用。支持大规模设计的分解和已有设计的再利用。一个大规一个大规模设计不可能一个人独立完成,它将由多人、多项目组模设计不可能一个人独立完成,它将由多人、多项目组来共同完成。来共同完成。VHDL为设计的分解和设计的再利用提供为设计的分解和设计的再利用提供了有力的支持。

7、了有力的支持。 VHDL已成为已成为IEEE承认的一个工业标准承认的一个工业标准,事实上已成,事实上已成为通用硬件描述语言。为通用硬件描述语言。 二、二、VHDLVHDL语言的主要优点语言的主要优点VHDL 概 述 相同点:相同点:都是形式语言都是形式语言 不同之处:不同之处:增加了并行处理和延时、功耗参数说明等语句增加了并行处理和延时、功耗参数说明等语句三、三、VHDLVHDL语言与传统程序语言的比较语言与传统程序语言的比较VHDL 概 述第一节 VHDL的基本组成任何电路系统任何电路系统参数部分参数部分程序包程序包接口部分接口部分设计实体设计实体描述部分描述部分结构体结构体第一节 VHDL

8、的基本组成LIBRARY ieee;USE ieee.std_logic_1164.all;一、参数部分一、参数部分程序包程序包程序包程序包IEEE标准的标准程序包标准的标准程序包设计者自身设计的程序包设计者自身设计的程序包设计中的子程序设计中的子程序和公用数据类型和公用数据类型的集合的集合调用数据类型标准程序包的调用数据类型标准程序包的VHDL语言描述语言描述注意:注意:设置在设置在VHDL程序的前面,表示以后在实体或结程序的前面,表示以后在实体或结构体中要用到数据类型包中的数据类型。构体中要用到数据类型包中的数据类型。调用程序包调用程序包语句语句标标准准程程序序包包定定义义程程序序包包二、

9、接口部分二、接口部分设计实体设计实体kxora1b1c1设计实体设计实体提供设计模块的公共信息,是提供设计模块的公共信息,是VHDL设计电路的最基本部分。设计电路的最基本部分。一个模块中仅有一个设计实体一个模块中仅有一个设计实体ENTITY kxor IS PORT(a1,b1:IN std_logic; c1:OUT std_logic);END kxor;调用程序包调用程序包语句语句标标准准程程序序包包定定义义程程序序包包实体实体 及实及实体声体声明语明语句句第一节 VHDL的基本组成ENTITY kxor IS PORT(a1,b1:IN std_logic;END kxor; c1:O

10、UT std_logic);ENTITY、IS、PORT、IN、OUT和和END为关键字;为关键字;ENTITY.END之间表示实体内容;之间表示实体内容;kxor表示实体的名称,即电路的符号名;表示实体的名称,即电路的符号名;PORT端口(引脚)信息关键字,描述了信号的流向;端口(引脚)信息关键字,描述了信号的流向;IN输入模式;输入模式; OUT输出模式;输出模式;std_logic表示信号取值的类型为标准逻辑位。表示信号取值的类型为标准逻辑位。二、接口部分二、接口部分设计实体设计实体第一节 VHDL的基本组成ENTITY sel IS PORT(d0,d1,d2,d3:IN BIT; s

11、 :IN INTEGER RANGE 0 TO 3; out1 :OUT BIT);END sel;d0d1d2d3sout1sel二、接口部分二、接口部分设计实体设计实体第一节 VHDL的基本组成第一节 VHDL的基本组成三、描述部分三、描述部分结构体结构体结构体结构体描述实体硬件的互连关系、数据的传描述实体硬件的互连关系、数据的传输和变换以及动态行为。输和变换以及动态行为。一个实体可以对应多个结构体,每个结构体可以代一个实体可以对应多个结构体,每个结构体可以代表该硬件的某一方面特性,例如行为特性,结构特表该硬件的某一方面特性,例如行为特性,结构特性。性。ARCHITECTURE kxor_

12、arc OF kxor ISBEGIN c1 = (NOT a1 AND b1) OR (a1 AND NOT b1);END kxor_arc;调用程序包调用程序包语句语句标标准准程程序序包包定定义义程程序序包包实体实体 及实及实体声体声明语明语句句结结构构体体1结结构构体体2结结构构体体nLIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY kxor IS PORT(a1,b1:IN std_logic;END kxor; c1:OUT std_logic);ARCHITECTURE kxor_arc OF kxor ISBEGIN c1 = (N

13、OT a1 AND b1) OR (a1 AND NOT b1);END kxor_arc;第一节 VHDL的基本组成kxora1b1c1a1b1c1调用程序包调用程序包语句语句标标准准程程序序包包定定义义程程序序包包实体实体 及实及实体声体声明语明语句句结结构构体体1结结构构体体2结结构构体体n第二节 VHDL数据类型和属性操作目标操作目标信号信号SIGNAL变量变量VARIABLE常量常量CONSTANT文件量文件量FILE一、一、VHDLVHDL操作目标操作目标信号信号:它可以表示把元件的端口连接在一起的互连线。:它可以表示把元件的端口连接在一起的互连线。变量变量:用于对暂时数据的局部存

14、储,变量只在进程和子程序:用于对暂时数据的局部存储,变量只在进程和子程序内部定义。内部定义。常量常量:对某些特定类型数据赋予的数值。:对某些特定类型数据赋予的数值。文件量:文件量:文件的指针(文件的内部名),用于对文件的读文件的指针(文件的内部名),用于对文件的读/写写操作。操作。第二节 VHDL数据类型和属性一、一、VHDLVHDL操作目标操作目标S IGNAL clock:BIT;VARIABLE i:INTEGER:=13; CONSTANT delay:TIME:=5ns;FILE input_file:TEXT OPEN read_mode IS “STD_INPUT_FILE”;目

15、标的描述形式:目标的描述形式: 目标目标 : := ;第二节 VHDL数据类型和属性一、一、VHDLVHDL操作目标操作目标表达式表达式:规定目标的初始值,这是缺省部分。:规定目标的初始值,这是缺省部分。目标类型目标类型:规定目标的特征,:规定目标的特征,VHDL含有很宽范围的数据类含有很宽范围的数据类型,可以是自定义类型。型,可以是自定义类型。定义方法:定义方法:TYPE IS ;目标目标:是一个或多个代表着目标种类的字符串,多个目:是一个或多个代表着目标种类的字符串,多个目 标时用标时用“,”号分开。号分开。VHDL有大量与类型兼容的有关规则:有大量与类型兼容的有关规则:1. 赋予目标的表

16、达式数据类型必须和目标数据类型相同;赋予目标的表达式数据类型必须和目标数据类型相同;2. 许多预先确定的运算符的操作数必须具有相同的类型;许多预先确定的运算符的操作数必须具有相同的类型;3. 一个实体的类型和它连接到的形式的类型相同。一个实体的类型和它连接到的形式的类型相同。第二节 VHDL数据类型和属性一、一、VHDLVHDL操作目标操作目标VHDL中常用三类目标中常用三类目标信号、变量和常量。信号、变量和常量。 信号和变量可以赋予一系列的值,而常量一次信号和变量可以赋予一系列的值,而常量一次仅被分配一个值。仅被分配一个值。变量和信号又有不同,赋予信号的数值要到未变量和信号又有不同,赋予信号

17、的数值要到未来的某个时刻,信号才接受当前的数值,而赋来的某个时刻,信号才接受当前的数值,而赋予变量的数值,变量立即接受当前的数值。予变量的数值,变量立即接受当前的数值。变量赋值语句变量赋值语句 变量名变量名:=表达式表达式 信号赋值语句信号赋值语句 信号名信号名=表达式表达式第二节 VHDL数据类型和属性一、一、VHDLVHDL操作目标操作目标标量类型:标量类型:复合类型:复合类型:子类型:子类型:文件类型:文件类型:寻址类型:寻址类型:二、二、VHDLVHDL数据类型数据类型包括所有的简单类型:如整数、实数等。包括所有的简单类型:如整数、实数等。包括数组和记录。包括数组和记录。主要是对现有类

18、型加以限制。主要是对现有类型加以限制。在一般编辑语言中等价为指针。在一般编辑语言中等价为指针。用设计者定义的文件类型为设计者用设计者定义的文件类型为设计者提供说明的文件对象。提供说明的文件对象。VHDL有大量与类型兼容的有关规则:有大量与类型兼容的有关规则:1. 赋予目标的表达式数据类型必须和目标数据类型相同;赋予目标的表达式数据类型必须和目标数据类型相同;2. 许多预先确定的运算符的操作数必须具有相同的类型;许多预先确定的运算符的操作数必须具有相同的类型;3. 一个实体的类型和它连接到的形式的类型相同。一个实体的类型和它连接到的形式的类型相同。第二节 VHDL数据类型和属性标量数据类型标量数

19、据类型是基本的数据类型,它包括整数类型、实是基本的数据类型,它包括整数类型、实数类型、物理类型和枚举类型。数类型、物理类型和枚举类型。物理类型物理类型提供一个基本单位,然后在这个基本单位上提供一个基本单位,然后在这个基本单位上定义多个或零个次级单位,每个次级单位都定义多个或零个次级单位,每个次级单位都是基本单位的整数倍。是基本单位的整数倍。在形式上是定义括弧括起来的字符串文字表,在形式上是定义括弧括起来的字符串文字表,一个字符串文字在枚举类型定义中只能出现一个字符串文字在枚举类型定义中只能出现一次,允许同样一个字符串文字出现在不同一次,允许同样一个字符串文字出现在不同的枚举类型的字符串文字表中

20、,的枚举类型的字符串文字表中,枚举类型枚举类型(一)标量数据类型(一)标量数据类型二、二、VHDLVHDL数据类型数据类型第二节 VHDL数据类型和属性TYPE current IS RANGE 0 TO 1000000000; UNITS na; ua=1000 na; ma=1000 ua; a=1000 ma; END UNITS; PACKAGE scale ISTYPE load IS(small,med,big); END scale; ENTITY scale1 IS PORT(out1:OUT current; load1:IN load; END scale1; USE wo

21、rk .scale.all; ARCHITECTURE scale1_arc OF scale1 IS BEGIN out1 = 100 ua WHEN (load1= small) ELSE 1 ma WHEN (load1= med) ELSE 10 ma WHEN (load1= big) ELSE 100 ua; END scale1_arc; PACKAGE meals_pkg IS TYPE meal IS(breakfast,lunch,dinner);END meals_pkg;ENTITY meals IS PORT(previous_meal:IN meal; next_m

22、eal:OUT meal);END meals;USE work . meals_pkg . all;ENTITY meals IS PORT(previous_meal:IN meal; next_meal:OUT meal);END meals;ARCHITECTURE meals_arc OF meals ISBEGIN WITH previous_meal SELECT next_meal = breakfast WHEN dinner, lunch WHEN breakfast, dinner WHEN lunch;END meals_arc;USE work . meals_pkg

23、 . all;调用程序包调用程序包语句语句标标准准程程序序包包定定义义程程序序包包实体实体 及实及实体声体声明语明语句句结结构构体体1结结构构体体2结结构构体体n从上到下的设计方法从上到下的设计方法kxora1b1c1a1b1c11. 语言输入法设计电路与系统的优势;语言输入法设计电路与系统的优势; 2. 掌握掌握VHDL语言的基本组成语言的基本组成3. 掌握自建库方法和掌握自建库方法和VHDL标量数据类型描述;标量数据类型描述; 4. 初步理解现代电路的设计方法初步理解现代电路的设计方法从上到下的从上到下的设计方法。设计方法。本 讲 教 学 目 标本讲的教学内容VHDL数据类型及属性数据类型

24、及属性VHDL语言的行为描述语言的行为描述本讲的教学目标1. 理解理解VHDL复合数据类型和属性复合数据类型和属性; 2. 掌握掌握VHDL语言的并行行为描述语言的并行行为描述; 3. 掌握掌握VHDL语言的进程行为描述语言的进程行为描述. 数组类型数组类型相同类型相同类型的标量元素组成,数组可以是一维二的标量元素组成,数组可以是一维二维或多维。可以是限定的也可是非限定的。维或多维。可以是限定的也可是非限定的。记录类型记录类型把物理、整数、实数、枚举元素归成一个目把物理、整数、实数、枚举元素归成一个目标组,记录的每个元素由它的字段名访问。标组,记录的每个元素由它的字段名访问。元素类型可以元素类

25、型可以相同也可不同相同也可不同。(二)复合数据类型二)复合数据类型二、二、VHDLVHDL数据类型数据类型第二节 VHDL数据类型和属性TYPE matrix IS ARRAY(row,column) OF std_logic;TYPE r_ma IS ARRAY( 1 TO 10, 1 TO 40) OF std_logic; TYPE word IS ARRAY(15 DOWNTO 0) OF BIT;TYPE column IS RANGE 1 TO 40; TYPE row IS RANGE 1 TO 10;CONSTANT ROM : BIT_VECTOR(0 TO 15);(二)复

26、合数据类型二)复合数据类型二、二、VHDLVHDL数据类型数据类型第二节 VHDL数据类型和属性用用VHDL设计一维设计一维数组实现数组实现164的的ROM程序。程序。LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY rom IS PORT(cs,x1,x2,x3,x4:IN std_logic; d0,d1,d2,d3:OUT std_logic);END rom;ROMCSX1X2X3X4d0d1d2d30 0 0 01 0 0 00 1 0 01 1 0 00 0 1 01 0 1 00 1 1 01 1 1 00 0 0 11 0 0 10

27、 1 0 11 1 0 10 0 1 11 0 1 10 1 1 11 1 1 1x3 x2x1x0d0 d1 d2 d30 0 0 00 0 0 10 0 1 00 0 1 10 1 0 00 1 0 10 1 1 00 1 1 11 0 0 01 0 0 11 0 1 01 0 1 11 1 0 01 1 0 11 1 1 01 1 1 1ROM存储表存储表rom0 rom1 rom2 rom3问题一问题一 如何定义存储表?如何定义存储表?问题二问题二 如何根据地址取出存储内容?如何根据地址取出存储内容?ARCHITECTURE rom_arc OF rom IS BEGIN PROCES

28、S(cs,x1,x2,x3,x4) VARIABLE n:NATURAL RANGE 0 TO 15; CONSTANT rom0:std_logic_vector(0 TO 15):= “0101010101010101”; CONSTANT rom1:std_logic_vector(0 TO 15):= “0011001100110011”; CONSTANT rom2:std_logic_vector(0 TO 15):= “0000111100001111”; CONSTANT rom3:std_logic_vector(0 TO 15):= “0000000011111111”;L

29、IBRARY ieee;USE ieee.std_logic_1164.all;ENTITY rom IS PORT(cs,x1,x2,x3,x4:IN std_logic; d0,d1,d2,d3:OUT std_logic);END rom;BEGIN IF cs= 1 THEN n:=0; IF x1 = 1 THEN n:= n+1; END IF; IF x2 = 1 THEN n:= n+2; END IF; IF x3 = 1 THEN n:= n+4; END IF; IF x4 = 1 THEN n:= n+8; END IF; d0 = rom0(n) AFTER 10 n

30、s; d1 = rom1(n) AFTER 10 ns; d2 = rom2(n) AFTER 10 ns; d3 = rom3(n) AFTER 10 ns; ELSE d0 = Z AFTER 10 ns; d1 = Z AFTER 10 ns; d2 = Z AFTER 10 ns; d3 = Z AFTER 10 ns; END IF; END PROCESS; END rom_arc;判断地址判断地址取内容取内容在在结构体说明区结构体说明区(ARCHITECTURE和和BEGIN之间)被说明的目标,仅可以在此结之间)被说明的目标,仅可以在此结构体中引用或在结构体中的任何进程语句中构体

31、中引用或在结构体中的任何进程语句中被引用,称此目标为局部信号。被引用,称此目标为局部信号。如果一个目标在如果一个目标在实体说明部分实体说明部分被说明,那么在被说明,那么在本实体和本实体内部的任何结构体和任何进程本实体和本实体内部的任何结构体和任何进程中都可以引用在实体中说明的目标,称为全局中都可以引用在实体中说明的目标,称为全局信号。信号。全局信号全局信号局部信号局部信号二、二、VHDLVHDL数据类型数据类型第二节 VHDL数据类型和属性(三)(三) 数据类型的全局化和局部化数据类型的全局化和局部化程序包程序包实实 体体结构体结构体进进 程程子程序子程序信号信号常量常量变量变量VHDL模块模

32、块被说明的目标被说明的目标?VHDL中目标类型规定在不同的模块中可以被说明。中目标类型规定在不同的模块中可以被说明。标量类型、复合类型、子类型标量类型、复合类型、子类型可在所有的模块中说明可在所有的模块中说明。文件类型文件类型:子程序和进程语句说明区。:子程序和进程语句说明区。寻址类型寻址类型:进程语句说明区。:进程语句说明区。目标类型与目标类型与VHDL模块的对应关系模块的对应关系二、二、VHDLVHDL数据类型数据类型第二节 VHDL数据类型和属性(三)(三) 数据类型的全局化和局部化数据类型的全局化和局部化VHDL的属性的属性信号类属性信号类属性函数类属性函数类属性值类属性值类属性类型类

33、属性类型类属性范围类属性范围类属性三、三、VHDLVHDL的属性的属性第二节 VHDL数据类型和属性TYPE bit IS ARRAY(63 DOWNTO 32) OF BIT; VARIABLE left_range,right_range,uprange,lowrange:INTEGER;BEGIN left_range:= bitLEFT; right_range:= bitRIGHT; uprange:= bitHIGH; lowrange:= bitLOW; (一)值类属性(一)值类属性 值类属性用于返回数组的边界或长度。值类属性用于返回数组的边界或长度。-returns 63-re

34、turns 32-returns 63-returns 32三、三、VHDLVHDL的属性的属性第二节 VHDL数据类型和属性TYPE bit IS ARRAY(0 TO 7) OF BIT;TYPE bit1 IS ARRAY(8 TO 31) OF BIT; VARIABLE len1,len2:INTEGER;BEGIN len1:=bitLENGTH; len2:=bit1LENGTH; 返回数组范围的总长度返回数组范围的总长度-return 8-return 24(一)值类属性(一)值类属性三、三、VHDLVHDL的属性的属性第二节 VHDL数据类型和属性用来检查一个信号的变化,并且

35、变化刚刚发生,既推用来检查一个信号的变化,并且变化刚刚发生,既推断出在信号上发生了一个跳变。断出在信号上发生了一个跳变。(二)(二) 函数信号属性函数信号属性 函数信号属性用来返回有关信号行为功能的信息,它反函数信号属性用来返回有关信号行为功能的信息,它反映一个信号是否正好有值的变化或事件的发生映一个信号是否正好有值的变化或事件的发生. 如时钟事件:如时钟事件:clkEVENT,这个属性为,这个属性为“EVENT”,对,对检查时钟边沿触发是很有效的。检查时钟边沿触发是很有效的。IF clk= 1 AND clkEVENT THEN q = d;END IF;三、三、VHDLVHDL的属性的属性

36、第二节 VHDL数据类型和属性行为描述:行为描述:在在VHDL中,描述电路逻辑的程序。中,描述电路逻辑的程序。 三个行为既可以是相互独立,成为单一的行为三个行为既可以是相互独立,成为单一的行为描述体,又可以相互联系,成为混合描述体,如进描述体,又可以相互联系,成为混合描述体,如进程行为描述行为程行为描述行为之间之间是并行行为,进程行为体的是并行行为,进程行为体的内内部部是顺序行为。是顺序行为。并行行为描述并行行为描述 进程行为描述进程行为描述 顺序行为描述顺序行为描述第三节 VHDL的行为描述 在典型的编程语言如在典型的编程语言如C或或Pascal中,每个赋值语句按规中,每个赋值语句按规定的次

37、序,一个接在另一个之后顺序执行,执行的次序由定的次序,一个接在另一个之后顺序执行,执行的次序由源文件决定。源文件决定。 在在VHDL中,结构体的内部没有规定语句的次序,执行中,结构体的内部没有规定语句的次序,执行的次序仅由对语句中的的次序仅由对语句中的敏感信号敏感信号发生的事件决定,且语句发生的事件决定,且语句是同时执行,产生其并行型。是同时执行,产生其并行型。一、一、VHDLVHDL的并行行为的并行行为第三节 VHDL的行为描述1. 并行赋值语句并行赋值语句的一般格式如下:的一般格式如下:信号:信号: 信号名信号名 = 表达式表达式变量:变量: 变量名变量名 := 表达式表达式作用:将表达式

38、的信号值分配给对象,也就是说每当表达作用:将表达式的信号值分配给对象,也就是说每当表达式的信号值变化时执行该语句。式的信号值变化时执行该语句。注意:每个表达式都至少有一个敏感信号,每当敏感信注意:每个表达式都至少有一个敏感信号,每当敏感信号改变其值时,赋值语句就执行,号改变其值时,赋值语句就执行,一、一、VHDLVHDL的并行行为的并行行为第三节 VHDL的行为描述 在所有的并行语句中,两个以上的并行赋值语句在字在所有的并行语句中,两个以上的并行赋值语句在字面上的顺序并不表明它们的执行顺序面上的顺序并不表明它们的执行顺序.ENTITY exe IS PORT(a1,a2:IN BIT; b1,

39、b2:OUT BIT);END exe;ARCHITECTURE exe_arc1 OF exe ISBEGIN b1 = a1 AND b2; b2 = NOT a1 OR a2;END exe_arc1;a1a2b1b2第三节 VHDL的行为描述 也可以将结构体写成如下形式也可以将结构体写成如下形式,虽然语句顺序不同虽然语句顺序不同,但描但描述的是同一功能电路述的是同一功能电路.ENTITY exe IS PORT(a1,a2:IN BIT; b1,b2:OUT BIT);END exe;ARCHITECTURE exe_arc2 OF exe ISBEGIN b2 = NOT a1 OR

40、 a2; b1 = a1 AND b2;END exe_arc2;a1a2b1b2第三节 VHDL的行为描述2. 选择信号赋值语句选择信号赋值语句 每一个赋值语句都需要给出一个表达式,同时给出与每一个赋值语句都需要给出一个表达式,同时给出与该表达式的每个可能值相关联的信号该表达式的每个可能值相关联的信号 选择信号赋值语句的一般形式如下:选择信号赋值语句的一般形式如下: WITH SELECT = WHEN , WHEN , WHEN ;一、一、VHDLVHDL的并行行为的并行行为第三节 VHDL的行为描述ARCHITECTURE sels_arc OF sels ISBEGIN WITH s

41、SELECT out1 = d0 WHEN 0, d1 WHEN 1, d2 WHEN 2, d3 WHEN 3; END sels_arc;ENTITY sels IS PORT(d0,d1,d2,d3:IN BIT; s :IN INTEGER RANGE 0 TO 3; out1 :OUT BIT);END sels;d0d1d2d3sout1sels第三节 VHDL的行为描述LIBRARY ieee; USE ieee.std_logic_1164.all;ENTITY mux4 IS PORT(I0,I1,I2,I3,A,B:IN std_logic; Q :OUT std_logi

42、c);END mux4;I0I1I2I3AQMUX4B第三节 VHDL的行为描述ARCHITECTURE mux4_arc OF mux4 IS SIGNAL sel :INTEGER ;BEGIN Q = I0 AFTER 10 ns WHEN sel= 0 ELSE I1 AFTER 10 ns WHEN sel= 1 ELSE I2 AFTER 10 ns WHEN sel= 2 ELSE I3 AFTER 10 ns ; sel = 0 WHEN A= 0 AND B= 0 ELSE 1 WHEN A= 1 AND B= 0 ELSE 2 WHEN A= 0 AND B= 1 ELSE

43、 3 ;END mux4_arc;I0I1I2I3AQMUX4B第三节 VHDL的行为描述顺序行为:执行的顺序是一个接在另一个之后严格执行。顺序行为:执行的顺序是一个接在另一个之后严格执行。顺序行为的语句存在于顺序行为的语句存在于VHDL程序中的程序中的进程行为进程行为之中。之中。进程行为之间是并行行为语句进程行为之间是并行行为语句进程行为语句进程行为语句的一般形式如下的一般形式如下: :PROCESS BEGIN WAIT ON ; WAIT UNTIL ; WAIT FOR ; END PROCESS;二、二、VHDLVHDL的进程行为的进程行为第三节 VHDL的行为描述进程行为的说明区定

44、义该进程所需要的局部数据环境、它进程行为的说明区定义该进程所需要的局部数据环境、它包括包括子程序说明、属性说明子程序说明、属性说明和和变量说明变量说明等等变量说明的一般形式为变量说明的一般形式为VARIABLE : ;下面进程说明区中说明了变量下面进程说明区中说明了变量count,进程也可对变量赋值。,进程也可对变量赋值。 PROCESS VARIABLE count:INTEGER:= 0; BEGIN count:= count+1; WAIT FOR 1000 ns; END PROCESS;二、二、VHDLVHDL的进程行为的进程行为第三节 VHDL的行为描述 整个实体模块中的每个进程

45、行为语句,可以在任何时候被整个实体模块中的每个进程行为语句,可以在任何时候被激活,所有被激活的进程是并行执行的激活,所有被激活的进程是并行执行的下面举一个三八通用译码器程序的例子,说明进程语句下面举一个三八通用译码器程序的例子,说明进程语句如何工作。如何工作。LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;ENTITY decoder IS PORT(sel : IN UNSIGNED(2 DOWNTO 0); dout : OUT UNSIGNED(7 DOWNTO 0); END decoder;A

46、RCHITECTURE decoder_arc OF decoder IS SIGNAL sel1 :INTEGER; BEGIN PROCESS(sel) BEGIN第三节 VHDL的行为描述 WHEN 1 = dout dout dout dout dout dout dout = (1,0,0,0,0,0,0,0) AFTER 5 ns; END CASE; END PROCESS; END decoder_arc;sel1 dout = (0,0,0,0,0,0,0,1) AFTER 5 ns;第三节 VHDL的行为描述下例是另一种激活进程的方式:下例是另一种激活进程的方式:ENTIT

47、Y reg IS PORT(d,clk:IN BIT; q1,q2:OUT BIT); END reg; ARCHITECTURE reg_arc OF reg IS BEGIN第三节 VHDL的行为描述ARCHITECTURE reg_arc OF reg IS BEGIN PROCESS BEGIN WAIT UNTIL clk= 1; q1 = d; END PROCESS; PROCESS BEGIN WAIT UNTIL clk= 0; q2 = d; END PROCESS; END reg_arc;进程行为语句之间是进程行为语句之间是并行关系,进程行为并行关系,进程行为语句内部是

48、顺序关系。语句内部是顺序关系。VHDL的每个结构的每个结构体中可以有多个进程体中可以有多个进程行为语句。行为语句。它的关键之处是:它的关键之处是:第三节 VHDL的行为描述 并行行为并行行为:结构体的内部没有规定语句的次序,执行的:结构体的内部没有规定语句的次序,执行的次序仅由对语句中的次序仅由对语句中的敏感信号敏感信号发生的事件决定,且语句是发生的事件决定,且语句是同时执行,产生其并行型。常用的语句:选择信号赋值语同时执行,产生其并行型。常用的语句:选择信号赋值语句。句。小 结 进程行为进程行为:行为描述的基本单元,只有当进程所需的敏:行为描述的基本单元,只有当进程所需的敏感信号或敏感条件满

49、足是,进程才被激活。进程中语句的执感信号或敏感条件满足是,进程才被激活。进程中语句的执行是顺序执行的,进程之间是并行的。行是顺序执行的,进程之间是并行的。给定一个复杂模块该怎样描述?给定一个复杂模块该怎样描述? U0halfsubI1I2temp_Ttemp_c1 U1halfsubC_INFTtemp_c2U2C_OUT如:如图所示的全减器。如:如图所示的全减器。本讲的教学内容VHDLVHDL顺序行为描述顺序行为描述VHDLVHDL语言的结构描述语言的结构描述VHDLVHDL综合设计综合设计本讲的教学目标1. 理解理解VHDL顺序行为描述方法顺序行为描述方法; 2. 掌握掌握VHDL语言的结

50、构描述方法语言的结构描述方法; ; 3. 掌握掌握VHDL综合设计综合设计 .顺序行为语句可分为两大类:顺序行为语句可分为两大类: 条件控制类条件控制类 循环控制类循环控制类 在这两类中选出六种在这两类中选出六种 IF、CASE、FOR、WHILE.LOOP、EXIT和和ASSERT进行讨论进行讨论三、三、VHDLVHDL的顺序行为的顺序行为第三节 VHDL的行为描述 IF THEN ; ELSIF THEN ; ELSIF THEN ; ELSE ; END IF;1. IF语句语句IF语句的一般形式为:语句的一般形式为:三、三、VHDLVHDL的顺序行为的顺序行为第三节 VHDL的行为描述

51、 用用VHDL设计一家用告警系统的控制逻辑,它有来自传设计一家用告警系统的控制逻辑,它有来自传感器的三个输入信号感器的三个输入信号smoke、door、water和准备传输到告和准备传输到告警设备的三个输出触发信号警设备的三个输出触发信号fire_alarm、burg_alarm、water_alarm以及使能信号以及使能信号en和和alarm_en。VHDL程序描述如下:程序描述如下:LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY alarm IS PORT(smoke,door,water:IN std_logic; en,alarm_en

52、:IN std_logic; fire_alarm,burg_alarm,water_alarm:OUT std_logic);END alarm;第三节 VHDL的行为描述ARCHITECTURE alarm_arc OF alarm ISBEGIN第三节 VHDL的行为描述PROCESS(smoke,door,water,en,alarm_en) BEGIN IF (smoke= 1) AND (en= 0) THEN fire_alarm = 1; ELSE fire_alarm = 0; END IF;IF (door= 1) AND (en= 0) AND (alarm_en= 0)

53、 THEN burg_alarm = 1; ELSE burg_alarm = 0; END IF;IF (water= 1) AND (en= 0) THEN water_alarm = 1; ELSE water_alarm = 0; END IF; END PROCESS; END alarm_arc;第三节 VHDL的行为描述2. CASE 语句语句CASE语句的一般形式:语句的一般形式:CASE IS WHEN ; WHEN | ; WHEN ; WHEN OTHERS ;END CASE;三、三、VHDLVHDL的顺序行为的顺序行为第三节 VHDL的行为描述(1) 关键字关键字WH

54、EN的数量不作限制,但不容许两的数量不作限制,但不容许两个语句用一个值;个语句用一个值;(2) 所有所有WHEN后面的值在后面的值在CASE语句中合起来语句中合起来的值域中的全部;的值域中的全部;(3) WHEN的次序可以任意排定的次序可以任意排定 每当单个表达式的值在多个起作用的项中选择时,用每当单个表达式的值在多个起作用的项中选择时,用CASE语句语句是较合适的,它根据所给表达式的值域,语句语句是较合适的,它根据所给表达式的值域,选择选择“=”后面的执行语句。后面的执行语句。2. CASE 语句语句三、三、VHDLVHDL的顺序行为的顺序行为第三节 VHDL的行为描述3. FOR语句语句

55、FOR循环语句的一般形式为:循环语句的一般形式为: :FOR IN LOOP ; END LOOP ;FOR i IN 1 TO 3 LOOP a(i):= i*i;END LOOP;循环语句变量为循环语句变量为i,循环范围为,循环范围为“1 TO 3”,语句部分是乘方。,语句部分是乘方。三、三、VHDLVHDL的顺序行为的顺序行为第三节 VHDL的行为描述4. WHILE.LOOP语句语句 WHILE.LOOP循环语句的一般形式为:循环语句的一般形式为: :WHILE LOOP ; END LOOP ; 循环的条件是布尔表达式,在每次执行循环前检查条件循环的条件是布尔表达式,在每次执行循环前

56、检查条件为真时执行循环,为假时结束循环。为真时执行循环,为假时结束循环。 WHILE (X 10) LOOP X:= X1;END LOOP;三、三、VHDLVHDL的顺序行为的顺序行为第三节 VHDL的行为描述5. 断言语句断言语句ASSERT ASSERT语句等价于一个进程语句,它不作任何操作,语句等价于一个进程语句,它不作任何操作,仅用于判断某个条件是否成立,当条件为真,该语句任何事仅用于判断某个条件是否成立,当条件为真,该语句任何事都不做;如果为假,则报告一串信息给设计者。都不做;如果为假,则报告一串信息给设计者。RS触发器触发器当当r 和和s 同时等于同时等于1时,时,触发器处于不定

57、状态触发器处于不定状态 ENTITY RSFF IS PORT(r,s:IN BIT; q,not_q:OUT BIT);END RSFF;三、三、VHDLVHDL的顺序行为的顺序行为第三节 VHDL的行为描述ARCHITECTURE RSFF_arc OF RSFF IS BEGIN PROCESS(r,s) VARIABLE last_state:BIT:= 0; BEGIN ASSERT NOT(r= 1 AND s= 1) REPORT “Both r AND s equal to 1” SEVERITY error; IF r= 0 AND s= 0 THEN last_state:

58、= last_state ; ELSIF r= 1 AND s= 0 THEN last_state:= 0; ELSE - r= 0 AND s= 1 last_state:= 1; END IF; 第三节 VHDL的行为描述 q = last_state AFTER 10 ns; not_q = NOT(last_state) AFTER 20 ns; END PROCESS; END RSFF_arc;第三节 VHDL的行为描述?是否可以结束了?是否可以结束了?给定一个复杂模块该怎样描述?给定一个复杂模块该怎样描述? U0halfsubI1I2temp_Ttemp_c1 U1halfsu

59、bC_INFTtemp_c2U2C_OUT如:如图所示的全减器。如:如图所示的全减器。第八章 超高速集成电路硬件描述语言VHDL第四节 VHDL的结构描述实体实体主要描述元件、端口与信号。主要描述元件、端口与信号。元件元件是硬件的描述,即门、芯片或者电路板。是硬件的描述,即门、芯片或者电路板。端口端口是元件与外界的连接点,数据通过端口进入或流出元件。是元件与外界的连接点,数据通过端口进入或流出元件。信号信号则是作为硬件连线的一种抽象描述,它既能保持变化则是作为硬件连线的一种抽象描述,它既能保持变化的数据,又可以连接各个子元件。的数据,又可以连接各个子元件。信号信号可被看作两个元件之间数据传输的通路。可被看作两个元件之间数据传输的通路。 对一个硬件的对一个硬件的结构进行描述结构进行描述,就是要描述它由哪些,就是要描述它由哪些子元件组成,以及各个子元件之间的互连关系。子元件组成,以及各个子元件之间的互连关系。 结构描

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论