超高速集成电路硬件描述语言VHDL.ppt

上传人:m**** 文档编号:569454775 上传时间:2024-07-29 格式:PPT 页数:76 大小:361.50KB
返回 下载 相关 举报
超高速集成电路硬件描述语言VHDL.ppt_第1页
第1页 / 共76页
超高速集成电路硬件描述语言VHDL.ppt_第2页
第2页 / 共76页
超高速集成电路硬件描述语言VHDL.ppt_第3页
第3页 / 共76页
超高速集成电路硬件描述语言VHDL.ppt_第4页
第4页 / 共76页
超高速集成电路硬件描述语言VHDL.ppt_第5页
第5页 / 共76页
点击查看更多>>
资源描述

《超高速集成电路硬件描述语言VHDL.ppt》由会员分享,可在线阅读,更多相关《超高速集成电路硬件描述语言VHDL.ppt(76页珍藏版)》请在金锄头文库上搜索。

1、第一节第一节 VHDL语言的基本组成语言的基本组成第二节第二节 VHDL数据类型和属性数据类型和属性第三节第三节 VHDL的行为描述的行为描述第四节第四节 VHDL的结构描述的结构描述第八章 超高速集成电路硬件描述语言VHDL第八章 超高速集成电路硬件描述语言VHDL1. 掌握用掌握用VHDL语言描述电路系统的行为和结构;语言描述电路系统的行为和结构;2. 初步理解现代电路的设计方法初步理解现代电路的设计方法从上到下的设从上到下的设计方法;计方法;3. 借助软件平台使用借助软件平台使用VHDL语言进行电路系统的综语言进行电路系统的综合设计。合设计。 设计方法设计方法 传统的电路系统设计方法:纯

2、硬件逻辑设计传统的电路系统设计方法:纯硬件逻辑设计 试凑法试凑法存在的问题:存在的问题: 当系统规模增大,设计烦琐,设计工作量大,设计周当系统规模增大,设计烦琐,设计工作量大,设计周期长;期长; 设计电路的体积大、功耗大、可靠性较低设计电路的体积大、功耗大、可靠性较低 交流性较差交流性较差 现代电路的设计方法:硬件设计现代电路的设计方法:硬件设计+ 软件设计软件设计 从上至下的设计方法从上至下的设计方法出现出现Hardware Description Language,HDL第八章 超高速集成电路硬件描述语言VHDL AHDL HIHDLTEXAS DSLLattice VerilogGata

3、way Design Automayion VHDL美美国国国国防防部部在在80年年代代初初提提出出了了VHSIC(Very High Speed Integrated Circuit)计计划划,其其目目标标之之一一是是为为下下一一代代集集成成电电路路的的生生产产,实实现现阶阶段段性性的的工工艺艺极极限限以以及及完完成成10万万门门级级以以上上的的设设计计,建建立立一一项项新新的的描描述述方方法法。1981年年提提出出了了一一种种新新的的HDL,称称之之为为VHSIC Hardware Description Language,简称为简称为VHDL。IEEE标准标准VHDL 概 述一、一、 硬

4、件描述语言硬件描述语言第八章 超高速集成电路硬件描述语言VHDL二、二、VHDLVHDL语言的主要优点语言的主要优点 是一种多层次的硬件描述语言,覆盖面广,描述能是一种多层次的硬件描述语言,覆盖面广,描述能力强。力强。即设计的原始描述可以是非常简练的描述,即设计的原始描述可以是非常简练的描述,经过层层细化求精,最终成为可直接付诸生产的电经过层层细化求精,最终成为可直接付诸生产的电路级或版图参数描述,整个过程都可以在路级或版图参数描述,整个过程都可以在VHDL的的环境下进行。环境下进行。 VHDL 有有良好的可读性良好的可读性,即可以被计算机接受,也即可以被计算机接受,也容易被理解用容易被理解用

5、VHDL 书写的原文件,即是程序,又书写的原文件,即是程序,又是文挡,即是技术人员之间交换信息的文件,又可是文挡,即是技术人员之间交换信息的文件,又可作为合同签约者之间的文件。作为合同签约者之间的文件。 VHDL 概 述第八章 超高速集成电路硬件描述语言VHDLVHDL本身的生命期长本身的生命期长。因为。因为VHDL的硬件描述与工艺的硬件描述与工艺技术无关,不会因工艺变化而使描述过时。与工艺技术技术无关,不会因工艺变化而使描述过时。与工艺技术有关的参数可通过有关的参数可通过VHDL提供的属性加以描述,工艺改提供的属性加以描述,工艺改变时,只需修改相应程序中的属性参数即可。变时,只需修改相应程序

6、中的属性参数即可。 支持大规模设计的分解和已有设计的再利用。支持大规模设计的分解和已有设计的再利用。一个大规一个大规模设计不可能一个人独立完成,它将由多人,多项目组模设计不可能一个人独立完成,它将由多人,多项目组来共同完成。来共同完成。VHDL为设计的分解和设计的再利用提供为设计的分解和设计的再利用提供了有力的支持。了有力的支持。 VHDL已成为已成为IEEE承认的一个工业标准承认的一个工业标准,事实上已成,事实上已成为通用硬件描述语言。为通用硬件描述语言。 二、二、VHDLVHDL语言的主要优点语言的主要优点VHDL 概 述第八章 超高速集成电路硬件描述语言VHDL 相同点:相同点:都是形式

7、语言都是形式语言 不同之处:不同之处:增加了并行处理和延时、功耗参数说明等语句增加了并行处理和延时、功耗参数说明等语句三、三、VHDLVHDL语言与传统程序语言的比较语言与传统程序语言的比较VHDL 概 述第八章 超高速集成电路硬件描述语言VHDL任何电路系统任何电路系统参数部分参数部分程序包程序包接口部分接口部分设计实体设计实体描述部分描述部分结构体结构体第八章 超高速集成电路硬件描述语言VHDLLIBRARY ieee;USE ieee.std_logic_1164.all;一、参数部分一、参数部分程序包程序包程序包程序包IEEE标准的标准程序包标准的标准程序包设计者自身设计的程序包设计者

8、自身设计的程序包设设计计中中的的子子程程序序和和公公用用数数据据类类型型的集合的集合调用数据类型标准程序包的调用数据类型标准程序包的VHDL语言描述语言描述注意:注意:设置在设置在VHDL程序的前面,表示以后在实体或结程序的前面,表示以后在实体或结构体中要用到数据类型包中的数据类型。构体中要用到数据类型包中的数据类型。调用程序包调用程序包语句语句标标准准程程序序包包定定义义程程序序包包第八章 超高速集成电路硬件描述语言VHDLkxora1b1c1设计实体设计实体提供设计模块的公共信息,是提供设计模块的公共信息,是VHDL设计电路的最基本部分。设计电路的最基本部分。一个模块中仅有一个设计实体一个

9、模块中仅有一个设计实体ENTITY kxor IS PORT(a1,b1:IN std_logic; c1:OUT std_logic);END kxor;调用程序包调用程序包语句语句标标准准程程序序包包定定义义程程序序包包实体实体 及实及实体声体声明语明语句句第八章 超高速集成电路硬件描述语言VHDLENTITY kxor IS PORT(a1,b1:IN std_logic;END kxor; c1:OUT std_logic);ENTITY、IS、PORT、IN、OUT和和END为关键字;为关键字;ENTITY.END之间表示实体内容;之间表示实体内容;kxor表示实体的名称,即电路的符

10、号名;表示实体的名称,即电路的符号名;PORT端口(引脚)信息关键字,描述了信号的流向;端口(引脚)信息关键字,描述了信号的流向;IN输入模式;输入模式; OUT输出模式;输出模式;std_logic表示信号取值的类型为标准逻辑位。表示信号取值的类型为标准逻辑位。第八章 超高速集成电路硬件描述语言VHDLENTITY sel IS PORT(d0,d1,d2,d3:IN BIT; s :IN INTEGER RANGE 0 TO 3; out1 :OUT BIT);END sel;d0d1d2d3sout1sel第八章 超高速集成电路硬件描述语言VHDL结构体结构体描述实体硬件的互连关系、数据

11、的传描述实体硬件的互连关系、数据的传输和变换以及动态行为。输和变换以及动态行为。一个实体可以对应多个结构体,每个结构体可以代一个实体可以对应多个结构体,每个结构体可以代表该硬件的某一方面特性,例如行为特性,结构特表该硬件的某一方面特性,例如行为特性,结构特性。性。ARCHITECTURE kxor_arc OF kxor ISBEGIN c1 = (NOT a1 AND b1) OR (a1 AND NOT b1);END kxor_arc;调用程序包调用程序包语句语句标标准准程程序序包包定定义义程程序序包包实体实体 及实及实体声体声明语明语句句结结构构体体1结结构构体体2结结构构体体n第八章

12、 超高速集成电路硬件描述语言VHDLLIBRARY 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 = (NOT a1 AND b1) OR (a1 AND NOT b1);END kxor_arc;第八章 超高速集成电路硬件描述语言VHDLkxora1b1c1a1b1c1第八章 超高速集成电路硬件描述语言VHDL调用程序包调用程序包语句语句标标准准程程序序包包定

13、定义义程程序序包包实体实体 及实及实体声体声明语明语句句结结构构体体1结结构构体体2结结构构体体n第八章 超高速集成电路硬件描述语言VHDL操作目标操作目标信号信号SIGNAL变量变量VARIABLE常量常量CONSTANT文件量文件量FILE一、一、VHDLVHDL操作目标操作目标第八章 超高速集成电路硬件描述语言VHDL信号信号:它可以表示把元件的端口连接在一起的互连线。:它可以表示把元件的端口连接在一起的互连线。变量变量:用于对暂时数据的局部存储,变量只在进程和子程序:用于对暂时数据的局部存储,变量只在进程和子程序内部定义。内部定义。常量常量:对某些特定类型数据赋予的数值。:对某些特定类

14、型数据赋予的数值。文件量:文件量:文件的指针(文件的内部名),用于对文件的读文件的指针(文件的内部名),用于对文件的读/写写操作。操作。一、一、VHDLVHDL操作目标操作目标第八章 超高速集成电路硬件描述语言VHDLS IGNAL clock:BIT;VARIABLE i:INTEGER:=13; CONSTANT delay:TIME:=5ns;FILE input_file:TEXT OPEN read_mode IS “STD_INPUT_FILE”;目标的描述形式:目标的描述形式: 目标目标 : := ;一、一、VHDLVHDL操作目标操作目标第八章 超高速集成电路硬件描述语言VHD

15、L表达式表达式:规定目标的初始值,这是缺省部分。:规定目标的初始值,这是缺省部分。目目标标类类型型:规规定定目目标标的的特特征征,VHDL含含有有很很宽宽范范围围的的数数据据类类型型,可可以以是是自自定定义义类类型型。定定义义方方法法:TYPE IS ;目目标标:是是一一个个或或多多个个代代表表着着目目标标种种类类的的字字符符串串,多多个个目目 标时用标时用“,”号分开。号分开。VHDL有大量与类型兼容的有关规则:有大量与类型兼容的有关规则:1. 赋予目标的表达式数据类型必须和目标数据类型相同;赋予目标的表达式数据类型必须和目标数据类型相同;2. 许多预先确定的运算符的操作数必须具有相同的类型

16、;许多预先确定的运算符的操作数必须具有相同的类型;3. 一个实体的类型和它连接到的形式的类型相同。一个实体的类型和它连接到的形式的类型相同。一、一、VHDLVHDL操作目标操作目标第八章 超高速集成电路硬件描述语言VHDLVHDL中常用三类目标中常用三类目标信号、变量和常量。信号、变量和常量。 信号和变量可以赋予一系列的值,而常量一次信号和变量可以赋予一系列的值,而常量一次仅被分配一个值。仅被分配一个值。变量和信号又有不同,赋予信号的数值要到未变量和信号又有不同,赋予信号的数值要到未来的某个时刻,信号才接受当前的数值,而赋来的某个时刻,信号才接受当前的数值,而赋予变量的数值,变量立即接受当前的

17、数值。予变量的数值,变量立即接受当前的数值。变量赋值语句变量赋值语句 变量名变量名:=表达式表达式 信号赋值语句信号赋值语句 信号名信号名=表达式表达式一、一、VHDLVHDL操作目标操作目标第八章 超高速集成电路硬件描述语言VHDL标量类型:标量类型:复合类型:复合类型:子类型:子类型:文件类型:文件类型:寻址类型:寻址类型:二、二、VHDLVHDL数据类型数据类型包括所有的简单类型:如整数、实数等。包括所有的简单类型:如整数、实数等。包括数组和记录。包括数组和记录。主要是对现有类型加以限制。主要是对现有类型加以限制。在一般编辑语言中等价为指针。在一般编辑语言中等价为指针。用设计者定义的文件

18、类型为设计者用设计者定义的文件类型为设计者提供说明的文件对象。提供说明的文件对象。VHDL有大量与类型兼容的有关规则:有大量与类型兼容的有关规则:1. 赋予目标的表达式数据类型必须和目标数据类型相同;赋予目标的表达式数据类型必须和目标数据类型相同;2. 许多预先确定的运算符的操作数必须具有相同的类型;许多预先确定的运算符的操作数必须具有相同的类型;3. 一个实体的类型和它连接到的形式的类型相同。一个实体的类型和它连接到的形式的类型相同。第八章 超高速集成电路硬件描述语言VHDL标量数据类型标量数据类型是基本的数据类型,它包括整数类型、实是基本的数据类型,它包括整数类型、实数类型、物理类型和枚举

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

20、HDL数据类型数据类型TYPE current IS RANGE 0 TO 1000000000; UNITS na; ua=1000 na; ma=1000 ua; a=1000 ma; END UNITS; ENTITY scale1 IS PORT(out1:OUT current; load1:IN load; END scale1; PACKAGE scale ISTYPE load IS(small,med,big); END scale; USE work .scale.all; 第八章 超高速集成电路硬件描述语言VHDLARCHITECTURE scale1_arc OF sc

21、ale1 IS BEGIN out1 = 100 ua WHEN (load1= small) ELSE1 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_meal:OUT meal);END meals;ARCHITECTURE meals_ar

22、c 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 . all;第八章 超高速集成电路硬件描述语言VHDL调用程序包调用程序包语句语句标标准准程程序序包包定定义义程程序序包包实体实体 及实及实体声体声明语明语句句结结构构体体1结结构构体体2结结构构体体n第八章 超高速集成电路硬件描述语言VHDLkxora1b1c1a1b1c1从从上上到到下

23、下的的设设计计方方法法第八章 超高速集成电路硬件描述语言VHDL数组类型数组类型相同类型相同类型的标量元素组成,数组可以是一维二的标量元素组成,数组可以是一维二维或多维。可以是限定的也可是非限定的。维或多维。可以是限定的也可是非限定的。记录类型记录类型把把物理、整数、实数、枚举元素归成一个目物理、整数、实数、枚举元素归成一个目标组,记录的每个元素由它的字段名访问。标组,记录的每个元素由它的字段名访问。元素类型可以元素类型可以相同也可不同相同也可不同。(二)复合数据类型二)复合数据类型二、二、VHDLVHDL数据类型数据类型第八章 超高速集成电路硬件描述语言VHDLTYPE matrix IS

24、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);(二)复合数据类型二)复合数据类型二、二、VHDLVHDL数据类型数据类型用用VHDL设计一维数组实现设计一维数组实现164的的ROM程序。程序。LIBRARY ieee;U

25、SE 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 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

26、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 PROCESS(cs,x1,x2,x3,x4) VARIABLE n:NATURAL RANGE 0 TO 15; CONSTANT rom0:std_logic_vector(0 TO 15):= “01010

27、10101010101”; 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”;LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY rom IS PORT(cs,x1,x2,x3,x4:IN std_logic; d0,d1,d2,d3:

28、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 ns; d1 = rom1(n) AFTER 10 ns; d2 = rom2(n) AFTER 10 ns; d3 = rom3(n) AFTER 10 ns; ELSE d0 = Z AFTER 1

29、0 ns; d1 = Z AFTER 10 ns; d2 = Z AFTER 10 ns; d3 = Z AFTER 10 ns; END IF; END PROCESS; END rom_arc;判断地址判断地址取内容取内容第八章 超高速集成电路硬件描述语言VHDL在在 结结 构构 体体 说说 明明 区区 ( ARCHITECTURE和和BEGIN之之间间)被被说说明明的的目目标标,仅仅可可以以在在此此结结构构体体中中引引用用或或在在结结构构体体中中的的任任何何进进程程语语句句中中被引用,称此目标为局部信号。被引用,称此目标为局部信号。如果一个目标在如果一个目标在实体说明部分实体说明部分被说

30、明,那么在被说明,那么在本实体和本实体内部的任何结构体和任何进程本实体和本实体内部的任何结构体和任何进程中都可以引用在实体中说明的目标,称为全局中都可以引用在实体中说明的目标,称为全局信号。信号。全局信号全局信号局部信号局部信号二、二、VHDLVHDL数据类型数据类型(三)(三) 数据类型的全局化和局部化数据类型的全局化和局部化第八章 超高速集成电路硬件描述语言VHDL程序包程序包实实 体体结构体结构体进进 程程子程序子程序信号信号常量常量变量变量VHDL模块模块被被说明的目标说明的目标?第八章 超高速集成电路硬件描述语言VHDLVHDL中目标类型规定在不同的模块中可以被说明。中目标类型规定在

31、不同的模块中可以被说明。标量类型、复合类型、子类型标量类型、复合类型、子类型可在所有的模块中说明可在所有的模块中说明。文件类型文件类型:子程序和进程语句说明区。:子程序和进程语句说明区。寻址类型寻址类型:进程语句说明区。:进程语句说明区。目标类型与目标类型与VHDL模块的对应关系模块的对应关系二、二、VHDLVHDL数据类型数据类型(三)(三) 数据类型的全局化和局部化数据类型的全局化和局部化第八章 超高速集成电路硬件描述语言VHDLVHDL的属性的属性信号类属性信号类属性函数类属性函数类属性值类属性值类属性类型类属性类型类属性范围类属性范围类属性三、三、VHDLVHDL的属性的属性第八章 超

32、高速集成电路硬件描述语言VHDLTYPE 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-returns 32-returns 63-returns 32三、三、

33、VHDLVHDL的属性的属性第八章 超高速集成电路硬件描述语言VHDLTYPE 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用用来来检检查查一一个个信信号号的的变变化化,并并且且变变化化刚刚刚刚发

34、发生生,既既推推断出在信号上发生了一个跳变。断出在信号上发生了一个跳变。(二)(二) 函数信号属性函数信号属性 函数信号属性用来返回有关信号行为功能的信息,它反函数信号属性用来返回有关信号行为功能的信息,它反映一个信号是否正好有值的变化或事件的发生映一个信号是否正好有值的变化或事件的发生. 如时钟事件:如时钟事件:clkEVENT,这个属性为这个属性为“EVENT”,对对检查时钟边沿触发是很有效的。检查时钟边沿触发是很有效的。IF clk= 1 AND clkEVENT THEN q = d;END IF;三、三、VHDLVHDL的属性的属性第八章 超高速集成电路硬件描述语言VHDL行为描述:

35、行为描述:在在VHDL中,描述电路逻辑的程序。中,描述电路逻辑的程序。 三个行为即可以是相互独立,成为单一的行为三个行为即可以是相互独立,成为单一的行为描述体,又可以相互联系,成为混合描述体,如进描述体,又可以相互联系,成为混合描述体,如进程行为描述行为程行为描述行为之间之间是并行行为,进程行为体的是并行行为,进程行为体的内内部部是顺序行为。是顺序行为。并行行为描述并行行为描述 进程行为描述进程行为描述 顺序行为描述顺序行为描述第三节 VHDL的行为描述第八章 超高速集成电路硬件描述语言VHDL 在典型的编程语言如在典型的编程语言如C或或Pascal中,每个赋值语句按规中,每个赋值语句按规定的

36、次序,一个接在另一个之后顺序执行,执行的次序由定的次序,一个接在另一个之后顺序执行,执行的次序由源文件决定。源文件决定。 在在VHDL中,结构体的内部没有规定语句的次序,执行中,结构体的内部没有规定语句的次序,执行的次序仅由对语句中的的次序仅由对语句中的敏感信号敏感信号发生的事件决定,且语句发生的事件决定,且语句是同时执行,产生其并行型。是同时执行,产生其并行型。一、一、VHDLVHDL的并行行为的并行行为第八章 超高速集成电路硬件描述语言VHDL1. 并行赋值语句并行赋值语句的一般格式如下:的一般格式如下:信号:信号: 信号名信号名 = 表达式表达式变量:变量: 变量名变量名 := 表达式表

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

38、T BIT);END exe;ARCHITECTURE exe_arc1 OF exe ISBEGIN b1 = a1 AND b2; b2 = NOT a1 OR a2;END exe_arc1;ARCHITECTURE exe_arc2 OF exe ISBEGIN b2 = NOT a1 OR a2; b1 = a1 AND b2;END exe_arc2;a1a2b1b2第八章 超高速集成电路硬件描述语言VHDL2. 选择信号赋值语句选择信号赋值语句 每一个赋值语句都需要给出一个表达式,同时给出与每一个赋值语句都需要给出一个表达式,同时给出与该表达式的每个可能值相关联的信号该表达式的每

39、个可能值相关联的信号 选择信号赋值语句的一般形式如下:选择信号赋值语句的一般形式如下: WITH SELECT = WHEN , WHEN , WHEN ;一、一、VHDLVHDL的并行行为的并行行为第八章 超高速集成电路硬件描述语言VHDLARCHITECTURE sels_arc OF sels ISBEGIN WITH s 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 T

40、O 3; out1 :OUT BIT);END sels;d0d1d2d3sout1selsLIBRARY ieee; USE ieee.std_logic_1164.all;ENTITY mux4 IS PORT(I0,I1,I2,I3,A,B:IN std_logic; Q :OUT std_logic);END mux4;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 AFTE

41、R 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 3 ;END mux4_arc;I0I1I2I3AQMUX4B第八章 超高速集成电路硬件描述语言VHDL顺序行为:执行的顺序是一个接在另一个之后严格执行。顺序行为:执行的顺序是一个接在另一个之后严格执行。顺序行为的语句存在于顺序行为的语句存在于VHDL程序中的程序中的进程行为进程行为之中。之中。进程行为之间是并行行为语句进程行为之间是并行行为语句

42、进程行为语句进程行为语句的一般形式如下的一般形式如下: :PROCESS BEGIN WAIT ON ; WAIT UNTIL ; WAIT FOR ; END PROCESS;二、二、VHDLVHDL的进程行为的进程行为第八章 超高速集成电路硬件描述语言VHDL进程行为的说明区定义该进程所需要的局部数据环境、它进程行为的说明区定义该进程所需要的局部数据环境、它包括包括子程序说明、属性说明子程序说明、属性说明和和变量说明变量说明等等变量说明的一般形式为变量说明的一般形式为VARIABLE : ;下面进程说明区中说明了变量下面进程说明区中说明了变量count,进程也可对变量赋值。进程也可对变量赋

43、值。 PROCESS VARIABLE count:INTEGER:= 0; BEGIN count:= count+1; WAIT FOR 1000 ns; END PROCESS;二、二、VHDLVHDL的进程行为的进程行为 整个实体模块中的每个进程行为语句,可以在任何时候被整个实体模块中的每个进程行为语句,可以在任何时候被激活,所有被激活的进程是并行执行的激活,所有被激活的进程是并行执行的 下面举一个三八通用译码器程序的例子,说明进程语句下面举一个三八通用译码器程序的例子,说明进程语句如何工作。如何工作。LIBRARY ieee; USE ieee.std_logic_1164.all;

44、 USE ieee.std_logic_arith.all; ENTITY decoder IS PORT(sel : IN UNSIGNED(2 DOWNTO 0); dout : OUT UNSIGNED(7 DOWNTO 0); END decoder;ARCHITECTURE 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)

45、 AFTER 5 ns; END CASE; END PROCESS; END decoder_arc;sel1 dout = (0,0,0,0,0,0,0,1) AFTER 5 ns;下例是另一种激活进程的方式:下例是另一种激活进程的方式:ENTITY reg IS PORT(d,clk:IN BIT; q1,q2:OUT BIT); END reg; ARCHITECTURE reg_arc OF reg IS BEGIN PROCESS BEGIN WAIT UNTIL clk= 1; q1 = d; END PROCESS; PROCESS BEGIN WAIT UNTIL clk=

46、0; q2 = d; END PROCESS; END reg_arc;进程行为语句之间是进程行为语句之间是并行关系,进程行为并行关系,进程行为语句内部是顺序关系。语句内部是顺序关系。VHDL的每个结构的每个结构体中可以有多个进程体中可以有多个进程行为语句。行为语句。它的关键之处是:它的关键之处是:第八章 超高速集成电路硬件描述语言VHDL 并行行为并行行为:结构体的内部没有规定语句的次序,执行的:结构体的内部没有规定语句的次序,执行的次序仅由对语句中的次序仅由对语句中的敏感信号敏感信号发生的事件决定,且语句是发生的事件决定,且语句是同时执行,产生其并行型。常用的语句:选择信号赋值语同时执行,

47、产生其并行型。常用的语句:选择信号赋值语句。句。小 结 进程行为进程行为:行为描述的基本单元,只有当进程所需的敏:行为描述的基本单元,只有当进程所需的敏感信号或敏感条件满足是,进程才被激活。进程中语句的执感信号或敏感条件满足是,进程才被激活。进程中语句的执行是顺序执行的,进程之间是并行的。行是顺序执行的,进程之间是并行的。第八章 超高速集成电路硬件描述语言VHDL给定一个复杂模块该怎样描述?给定一个复杂模块该怎样描述? U0halfsubI1I2temp_Ttemp_c1 U1halfsubC_INFTtemp_c2U2C_OUT如:如图所示的全减器。如:如图所示的全减器。第八章 超高速集成电

48、路硬件描述语言VHDL顺序行为语句可分为两大类:顺序行为语句可分为两大类: 条件控制类条件控制类 循环控制类循环控制类 在这两类中选出六种在这两类中选出六种 IF、CASE、FOR、WHILE.LOOP、EXIT和和ASSERT进行讨论进行讨论三、三、VHDLVHDL的的顺序行为顺序行为第八章 超高速集成电路硬件描述语言VHDL IF THEN ; ELSIF THEN ; ELSIF THEN ; ELSE ; END IF;1. IF语句语句IF语句的一般形式为:语句的一般形式为:三、三、VHDLVHDL的的顺序行为顺序行为ARCHITECTURE alarm_arc OF alarm I

49、SBEGIN 用用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,ala

50、rm_en :IN std_logic; fire_alarm,burg_alarm,water_alarm:OUT std_logic);END alarm;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) THEN burg_alarm = 1; ELSE burg_alarm = 0; END IF;IF (water

51、= 1) AND (en= 0) THEN water_alarm = 1; ELSE water_alarm = 0; END IF; END PROCESS; END alarm_arc;第八章 超高速集成电路硬件描述语言VHDL2. CASE 语句语句CASE语句的一般形式:语句的一般形式:CASE IS WHEN ; WHEN | ; WHEN ; WHEN OTHERS ;END CASE;三、三、VHDLVHDL的的顺序行为顺序行为第八章 超高速集成电路硬件描述语言VHDL(1) 关键字关键字WHEN的数量不作限制,但不容许两的数量不作限制,但不容许两个语句用一个值;个语句用一个值

52、;(2) 所有所有WHEN后面的值在后面的值在CASE语句中合起来语句中合起来的值域中的全部;的值域中的全部;(3) WHEN的次序可以任意排定的次序可以任意排定 每当单个表达式的值在多个起作用的项中选择时,用每当单个表达式的值在多个起作用的项中选择时,用CASE语句语句是较合适的,它根据所给表达式的值域,语句语句是较合适的,它根据所给表达式的值域,选择选择“=”后面的执行语句。后面的执行语句。2. CASE 语句语句三、三、VHDLVHDL的的顺序行为顺序行为第八章 超高速集成电路硬件描述语言VHDL3. FOR语句语句 FOR循环语句的一般形式为:循环语句的一般形式为: :FOR IN L

53、OOP ; END LOOP ;FOR i IN 1 TO 3 LOOP a(i):= i*i;END LOOP;循环语句变量为循环语句变量为i,循环范围为循环范围为“1 TO 3”,语句部分是乘方。语句部分是乘方。三、三、VHDLVHDL的的顺序行为顺序行为第八章 超高速集成电路硬件描述语言VHDL4. WHILE.LOOP语句语句 WHILE.LOOP循环语句的一般形式为:循环语句的一般形式为: :WHILE LOOP ; END LOOP ; 循环的条件是布尔表达式,在每次执行循环前检查条件循环的条件是布尔表达式,在每次执行循环前检查条件为真时执行循环,为假时结束循环。为真时执行循环,为

54、假时结束循环。 WHILE (X 10) LOOP X:= X1;END LOOP;三、三、VHDLVHDL的的顺序行为顺序行为第八章 超高速集成电路硬件描述语言VHDL5. 断言语句断言语句ASSERT ASSERT语语句句等等价价于于一一个个进进程程语语句句,它它不不作作任任何何操操作作,仅仅用用于于判判断断某某个个条条件件是是否否成成立立,当当条条件件为为真真,该该语语句句任任何何事事都不做;如果为假,则报告一串信息给设计者。都不做;如果为假,则报告一串信息给设计者。RS触发器触发器当当r 和和s 同时等于同时等于1时,时,触发器处于不定状态触发器处于不定状态 ENTITY RSFF I

55、S PORT(r,s:IN BIT; q,not_q:OUT BIT);END RSFF;三、三、VHDLVHDL的的顺序行为顺序行为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:= last_state ; ELSIF r= 1 AND s= 0 THE

56、N last_state:= 0; ELSE - r= 0 AND s= 1 last_state:= 1; END IF; q = last_state AFTER 10 ns; not_q = NOT(last_state) AFTER 20 ns; END PROCESS; END RSFF_arc;第八章 超高速集成电路硬件描述语言VHDL给定一个复杂模块该怎样描述?给定一个复杂模块该怎样描述? U0halfsubI1I2temp_Ttemp_c1 U1halfsubC_INFTtemp_c2U2C_OUT如:如图所示的全减器。如:如图所示的全减器。第八章 超高速集成电路硬件描述语言V

57、HDL信号信号可被看作两个元件之间数据传输的通路,可被看作两个元件之间数据传输的通路,实体实体主要描述元件、端口与信号。主要描述元件、端口与信号。元件元件是硬件的描述,即门、芯片或者电路板。是硬件的描述,即门、芯片或者电路板。端口端口是元件与外界的连接点,数据通过端口进入或流出元件。是元件与外界的连接点,数据通过端口进入或流出元件。信号信号则是作为硬件连线的一种抽象描述,它即能保持变化则是作为硬件连线的一种抽象描述,它即能保持变化的数据,又可以连接各个子元件。的数据,又可以连接各个子元件。第八章 超高速集成电路硬件描述语言VHDL 对一个硬件的对一个硬件的结构进行描述结构进行描述,就是要描述它

58、由哪些,就是要描述它由哪些子元件组成,以及各个子元件之间的互连关系。子元件组成,以及各个子元件之间的互连关系。 结构描述比行为描述更加具体化,即,结构描述与结构描述比行为描述更加具体化,即,结构描述与硬件之间的关系要比行为描述与硬件之间的关系更明显。硬件之间的关系要比行为描述与硬件之间的关系更明显。 行为描述的基本单元是进程语句。行为描述的基本单元是进程语句。 结构描述的基本单元则是结构描述的基本单元则是“调用元件语句调用元件语句”。用用VHDL结构描述设计一全减器,全减器可由两个结构描述设计一全减器,全减器可由两个半减器和一个或门组成。半减器和一个或门组成。 U0halfsubI1I2tem

59、p_Ttemp_c1 U1halfsubC_INFTtemp_c2U2C_OUT首先用首先用VHDL的行为描述设计半减器:的行为描述设计半减器:ENTITY halfsub IS PORT(A,B:IN BIT; T,C:OUT BIT);END halfsub;PROCESS(A,B) BEGIN T= A XOR B AFTER 10 ns; C = (NOT A) AND B AFTER 10 ns;END PROCESS;ARCHITECTURE halfsub_arc OF halfsub ISBEGINEND halfsub_arc;下面再将或门的下面再将或门的VHDL程序描述如下

60、:程序描述如下:ARCHITECTURE orgate_arc OF orgate IS BEGIN O1= A1 OR B1;END orgate_arc; 下面将两个半减器,一个或门的端口,通过定义一下面将两个半减器,一个或门的端口,通过定义一些中间信号将其连接起来形成些中间信号将其连接起来形成VHDL的结构描述。的结构描述。ENTITY orgate IS PORT(A1,B1:IN BIT; O1:OUT BIT);END orgate;在下面举的全减器例子里可以看到定义了中间信号在下面举的全减器例子里可以看到定义了中间信号 temp_T,temp_c1和和temp_c2ENTITY

61、fullsub IS PORT(I1,I2,C_IN:IN BIT; FT,C_OUT:OUT BIT);END fullsub;ARCHITECTURE fullsub_arc OF fullsub IS SIGNAL temp_T,temp_c1,temp_c2:BIT; COMPONENT halfsub PORT(A,B:IN BIT; T,C:OUT BIT); END COMPONENT;COMPONENT orgate PORT(A1,B1:IN BIT; O1:OUT BIT); END COMPONENT; U0halfsubI1I2temp_Ttemp_c1 U1halfs

62、ubC_INFTtemp_c2U2C_OUT 用三个元件调用语句定义这三个连接关系。用三个元件调用语句定义这三个连接关系。BEGIN U0:halfsub PORT MAP(I1,I2,temp_T,temp_c1);U1:halfsub PORT MAP(temp_T,C_IN,FT,temp_c2);U2:orgate PORT MAP(temp_c1,temp_c2,C_OUT);END fullsub_arc; U0halfsubI1I2temp_Ttemp_c1 U1halfsubC_INFTtemp_c2U2C_OUT 图中虚线框各元件之间图中虚线框各元件之间的连线命名。的连线命名

63、。temp_T将第一将第一个半减器的差位输出连到第个半减器的差位输出连到第二个半减器的输入端。信号二个半减器的输入端。信号temp_c1将第一个半减器的将第一个半减器的借位输出连至借位输出连至“或或”门的一门的一个输入端,信号个输入端,信号temp_c2将将第二个半减器的借位输出连第二个半减器的借位输出连至至“或或”门的另一个输入端。门的另一个输入端。第八章 超高速集成电路硬件描述语言VHDL第一节第一节 VHDL语言的基本组成语言的基本组成第二节第二节 VHDL数据类型和属性数据类型和属性第三节第三节 VHDL的行为描述的行为描述第四节第四节 VHDL的结构描述的结构描述第八章 超高速集成电路硬件描述语言VHDL1. 掌握用掌握用VHDL语言描述电路系统的行为和结构;语言描述电路系统的行为和结构;2. 初步理解现代电路的设计方法初步理解现代电路的设计方法从上到下的设从上到下的设计方法;计方法;3. 借助软件平台使用借助软件平台使用VHDL语言进行电路系统的综语言进行电路系统的综合设计。合设计。第八章 超高速集成电路硬件描述语言VHDL作作 业业8-1 8-3 8-48-7 8-12 8-148-16 8-17 8-18

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

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