第三章组合逻辑电路_第1页
第三章组合逻辑电路_第2页
第三章组合逻辑电路_第3页
第三章组合逻辑电路_第4页
第三章组合逻辑电路_第5页
已阅读5页,还剩99页未读 继续免费阅读

下载本文档

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

文档简介

1、第三章 组合逻辑电路第一节第一节 组合电路的分析和设计组合电路的分析和设计第二节第二节 组合逻辑电路中的竞争与冒险组合逻辑电路中的竞争与冒险 第三节第三节 超高速集成电路硬件描述语言超高速集成电路硬件描述语言VHDL VHDL 第四节第四节 组合逻辑电路模块及其应用组合逻辑电路模块及其应用 小结小结相关知识回顾:逻辑运算逻辑运算逻辑门逻辑门与与或或非非异或异或同或同或非门非门与门与门或门或门与非门与非门或非门或非门异或门异或门同或门同或门本章任务:1.1.组合逻辑电路组合逻辑电路的分析与设计的分析与设计2.2.常用常用组合逻辑模块组合逻辑模块的使用的使用由逻辑由逻辑门组成门组成第三章 组合逻辑

2、电路(2) 学习常用中规模集成模块学习常用中规模集成模块(3) 了解电路中的竞争和冒险现象了解电路中的竞争和冒险现象本章重点(1)(1)掌握掌握分析分析和和设计设计的基本方法的基本方法加法器加法器 比较器比较器译码器译码器 编码器编码器选择器选择器 分配器分配器本章基本内容(1)(1)电路分析与设计经典的方法电路分析与设计经典的方法(2)(2)常用组合逻辑模块的灵活应用常用组合逻辑模块的灵活应用 组合电路的分析组合电路的分析 组合电路的设计组合电路的设计第一节第一节 组合电路的分析和设计组合电路的分析和设计组合电路组合电路一、组合电路一、组合电路输入:输入:逻辑关系:逻辑关系:Fi = fi

3、(X1、X2、Xn) ) i = (1 = (1、2 2、m) )特点:特点:电路由电路由逻辑门逻辑门构成;构成;不含记忆元件;不含记忆元件;输出输出无反馈无反馈到输入的回路;到输入的回路;输出与电路输出与电路原来状态无关。原来状态无关。输出:输出:X1、X2、XnF1、F2、FmX1X2Xn组合网络组合网络组合电路方框图组合电路方框图F1F2Fm二、组合电路的分析二、组合电路的分析分析已知逻辑电路功能分析已知逻辑电路功能步骤步骤:输出函数输出函数表达式表达式描述电路描述电路功能功能已知组已知组合电路合电路简化函数简化函数真值表真值表A B C F0 0 0 00 0 1 00 1 0 00

4、1 1 11 0 0 01 0 1 11 1 0 11 1 1 1真值表真值表 因此该电路为因此该电路为少数服从多数少数服从多数电路,电路,称表决电路。称表决电路。解:(解:(1)由电路图得逻辑表达式)由电路图得逻辑表达式(2)由逻辑表达式得真值表)由逻辑表达式得真值表ACBCABACBCABF (3)功能分析:)功能分析:多数输入变量为多数输入变量为1,输出,输出F为为1;多数输入变量为多数输入变量为0,输出,输出 F为为0。例例1 1:试分析右图所示逻辑电路的功能试分析右图所示逻辑电路的功能。&ABCF解:(解:(1)由电路图得)由电路图得 表达式表达式01012123233BBG

5、BBGBBGBG(2)列出)列出 真值表真值表例例2 2:试分析下图所示逻辑电路的功能。试分析下图所示逻辑电路的功能。=1G2B2=1G1B1=1G0B0G3B3自然二进制码自然二进制码格雷码格雷码 B3B2B1B0 G3 G2 G1 G0 0 0 0 00 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 1 0 0 1 1 0 0 1 0 0 1 0 0 0 1 1 0 0 1 0 1 0 1 1 1 0 1 1 0 0 1 0 1 0 1 1 1 0 1 0 0 1 0 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 1 0 1 1 1 1 1 0

6、1 1 1 1 1 0 1 1 0 0 1 0 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 0 0 1 1 1 1 1 1 0 0 0(2)列出)列出 真值表真值表(1)由电路图得表达式)由电路图得表达式 本电路是自然二进制码本电路是自然二进制码至格雷码的转换电路至格雷码的转换电路。(3) 分析功能分析功能01012123233BBGBBGBBGBG注意:利用此式时对码位序号大于(注意:利用此式时对码位序号大于(n-1)的位应按)的位应按0处理,处理,如本例码位的最大序号如本例码位的最大序号i = 3,故,故B4应为应为0,才能得到正确的,才能得到正确的结果。结果。 推广到一般

7、推广到一般,将,将n位自然二进制码转换成位自然二进制码转换成n位格位格雷码雷码: Gi = Bi Bi+1 (i = 0、1、2、 n-1)01012123233BBGBBGBBGBG自然二进制码至格雷码的转换自然二进制码至格雷码的转换三、组合电路的设计三、组合电路的设计步骤:步骤:根据要求设计出实际逻辑电路根据要求设计出实际逻辑电路形式变换形式变换根据设计所用根据设计所用芯片要求芯片要求选择所需选择所需门电路门电路根据设根据设计要求计要求分析题意,将设计分析题意,将设计要求转化为逻辑关要求转化为逻辑关系,这一步为设计系,这一步为设计组合逻辑电路的关键组合逻辑电路的关键确定输入、输出、确定输入

8、、输出、列出真值表列出真值表写出表达式写出表达式并简化并简化画逻辑电路图画逻辑电路图例例3 3:半加器的设计半加器的设计(1)半加器真值表)半加器真值表(2)输出函数)输出函数(3)逻辑图)逻辑图 输入输入 输出输出被加数被加数A 加数加数B 和和S 进位进位C 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1ABCBABABAS(4 4)逻辑符号)逻辑符号&ABC=1SCOSCAB半加器逻半加器逻辑符号辑符号 由表达式知,由表达式知,若无特别要求,用若无特别要求,用一个异或门和一个一个异或门和一个与门即可实现半加与门即可实现半加器电路。电路图为:器电路。电路图为:分析:

9、半加器是将两个一位二进分析:半加器是将两个一位二进 制数相加求和及向高位制数相加求和及向高位 进位的电路。因此,有进位的电路。因此,有两两 个输入个输入(加数与被加数)(加数与被加数) 及及两个输出两个输出(和与进位)。(和与进位)。 设被加数和加数设被加数和加数分别为分别为A和和B,和与,和与进位分别为进位分别为S、C,真值表为:真值表为:ABCABB ABASABCBABABAS将用将用“异或异或”门门实现的半加器改为用实现的半加器改为用“与非与非”门门实现实现函数表达式变换形式:函数表达式变换形式:用用“与非与非”门实现半加器逻辑图如图所示:门实现半加器逻辑图如图所示:&ABC&

10、amp;S& 全加器是实现全加器是实现例例4:全加器的设计。:全加器的设计。学生自己完成逻辑电路学生自己完成逻辑电路全加器逻辑符号全加器逻辑符号全加器真值表全加器真值表 输入输入 输出输出 Ai Bi Ci Si Ci+1 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1一位二进制数一位二进制数一位二进制数一位二进制数低位来的进位低位来的进位相加相加和和高位进位高位进位COSiCi+1CiBiCIAi例例5 5:试将试将8421BCD码转换成余三码转换成余三BCD码。码。 84

11、21码码 余三码余三码 B3 B2 B1 B0 E3 E2 E1 E00 0 0 0 0 0 0 1 11 0 0 0 1 0 1 0 02 0 0 1 0 0 1 0 13 0 0 1 1 0 1 1 04 0 1 0 0 0 1 1 15 0 1 0 1 1 0 0 06 0 1 1 0 1 0 0 17 0 1 1 1 1 0 1 08 1 0 0 0 1 0 1 19 1 0 0 1 1 1 0 010 1 0 1 0 11 1 0 1 1 12 1 1 0 0 13 1 1 0 1 14 1 1 1 0 15 1 1 1 1 (2)卡诺图)卡诺图(1)真值表)真值表 B3B2B1B0

12、00011110000111100011 1 01 00 1E3B3B2B1B000011110000111100000 0 11 11 1E0B3B2B1B000011110000111100101 0 00 11 1E1B3B2B1B000011110000111101100 1 10 01 0E2000101101212022120233BEBBBBEBBBBBBBEBBBBBE(3 3)表达式)表达式(2)卡诺图)卡诺图B3B2B1B000011110000111100011 1 01 00 1E3B3B2B1B000011110000111100000 0 11 11 1E0B3B2

13、B1B000011110000111100101 0 00 11 1E1B3B2B1B000011110000111101100 1 10 01 0E2000101101212022120233BEBBBBEBBBBBBBEBBBBBE(4)电路图)电路图(3 3)表达式)表达式8421BCD8421BCD码码B3B2B1B08421BCD码转换成余码转换成余3BCD码的逻辑电路码的逻辑电路余余3 3码码E1E0E2E3&111&1&1AFf1f2&B&CC(a)逻辑图逻辑图(b)波形图波形图ABCCttttttttpgtpdf1f2F第二节第二节 组合

14、电路中的竞争与冒险组合电路中的竞争与冒险一、冒险与竞争一、冒险与竞争竞争:竞争:冒险:冒险:在组合电路中,信号经由不同的途径达到某一会合点在组合电路中,信号经由不同的途径达到某一会合点的时间有先有后。的时间有先有后。由于竞争而引起电路输出发生瞬间错误现象。表现为由于竞争而引起电路输出发生瞬间错误现象。表现为输出端出现了原设计中没有的窄脉冲,常称其为毛刺。输出端出现了原设计中没有的窄脉冲,常称其为毛刺。二、竞争与冒险的判断二、竞争与冒险的判断代数法:代数法:或的形式时,或的形式时,A变量的变化可能引起险象。变量的变化可能引起险象。卡诺图法:卡诺图法:如函数卡诺图上为简化作的圈相切,且相切处又无如

15、函数卡诺图上为简化作的圈相切,且相切处又无其他圈包含,则可能有险象。其他圈包含,则可能有险象。如图所示电路的卡诺图两圈相切,故有险象。如图所示电路的卡诺图两圈相切,故有险象。1AFf1f2&B&CCABC000111100100111100两圈相切有险象两圈相切有险象三、冒险现象的消除三、冒险现象的消除1.1.增加冗余项增加冗余项 如图所示卡诺图,只要在两圈相切处增加一个圈(冗余),如图所示卡诺图,只要在两圈相切处增加一个圈(冗余),就能消除冒险。就能消除冒险。 增加冗余项可以解决每次只有单个增加冗余项可以解决每次只有单个输入信号发生变化时电路的冒险问题,输入信号发生变化时电路

16、的冒险问题,却不能解决多个输入信号同时发生变化却不能解决多个输入信号同时发生变化时的冒险现象,适用范围有限。时的冒险现象,适用范围有限。ABC000111100100111100增加冗余圈克服险象增加冗余圈克服险象ABC000111100100111100两圈相切有险象两圈相切有险象三、冒险现象的消除三、冒险现象的消除. 增加选通信号增加选通信号 在可能产生冒险的门电路的输入端增加一个选通脉冲。在可能产生冒险的门电路的输入端增加一个选通脉冲。当输入信号变换完成,进入稳态后,才启动选通脉冲,将当输入信号变换完成,进入稳态后,才启动选通脉冲,将门打开。这样,输出就不会出现冒险脉冲。门打开。这样,输

17、出就不会出现冒险脉冲。 1.1.增加冗余项增加冗余项 增加选通信号的方法比较简单,一增加选通信号的方法比较简单,一般无需增加电路元件,但选通信号必须般无需增加电路元件,但选通信号必须与输入信号维持严格的时间关系,因此与输入信号维持严格的时间关系,因此选通信号的产生并不容易。选通信号的产生并不容易。. .输出接滤波电容输出接滤波电容 1.1.增加冗余项增加冗余项 . .增加选通信号增加选通信号 由于竞争冒险产生的干扰脉冲的宽度一般都很窄,在可由于竞争冒险产生的干扰脉冲的宽度一般都很窄,在可能产生冒险的门电路输出端并接一个滤波电容(一般为能产生冒险的门电路输出端并接一个滤波电容(一般为420pF)

18、,使输出波形上升沿和下降沿都变得比较缓慢,从而),使输出波形上升沿和下降沿都变得比较缓慢,从而起到消除冒险现象的作用。起到消除冒险现象的作用。三、冒险现象的消除三、冒险现象的消除 输出端接滤波电容方便易行,输出端接滤波电容方便易行,但会使输出电压波形变坏,仅适但会使输出电压波形变坏,仅适合对信号波形要求不高的场合。合对信号波形要求不高的场合。 第三节第三节 超高速集成电路硬件描述语言超高速集成电路硬件描述语言VHDLVHDL概述概述 VHDL语言的基本组成语言的基本组成 VHDL数据类型和属性数据类型和属性 VHDL的行为描述的行为描述 VHDL的结构描述的结构描述 设计方法设计方法 传统的电

19、路系统设计方法:纯硬件逻辑设计(试凑法)传统的电路系统设计方法:纯硬件逻辑设计(试凑法)存在的问题:存在的问题: 当系统规模增大,设计工作量大,设计周期长;当系统规模增大,设计工作量大,设计周期长; 设计电路的体积大、功耗大、可靠性较低;设计电路的体积大、功耗大、可靠性较低; 交流性较差。交流性较差。 现代电路的设计方法:硬件设计现代电路的设计方法:硬件设计+ 软件设计软件设计 从上至下的设计方法从上至下的设计方法出现出现Hardware Description Language,HDL 硬件描述硬件描述语言语言 ABEL AHDL Verilog HDL VHDL 美国国防部在美国国防部在8

20、0年代初提出了年代初提出了VHSIC(Very High Speed Integrated Circuit)计划,其目标之一是为下一代集成电路的)计划,其目标之一是为下一代集成电路的生产,实现阶段性的工艺极限以及完成生产,实现阶段性的工艺极限以及完成10万门级以上的设计,万门级以上的设计,建立一项新的描述方法。建立一项新的描述方法。1981年提出了一种新的年提出了一种新的HDL,称之为,称之为VHSIC Hardware Description Language,简称为,简称为VHDL。IEEE标准标准 VHDL语言的主要优点语言的主要优点 是一种多层次的硬件描述语言,覆盖面广,描述能是一种多

21、层次的硬件描述语言,覆盖面广,描述能力强。力强。即设计的原始描述可以是非常简练的描述,即设计的原始描述可以是非常简练的描述,经过层层细化求精,最终成为可直接付诸生产的电经过层层细化求精,最终成为可直接付诸生产的电路级或版图参数描述,整个过程都可以在路级或版图参数描述,整个过程都可以在VHDL的的环境下进行。环境下进行。 VHDL 有良好的可读性有良好的可读性,即可以被计算机接受,也即可以被计算机接受,也容易被理解用容易被理解用VHDL 书写的原文件,即是程序,又书写的原文件,即是程序,又是文档,即是技术人员之间交换信息的文件,又可是文档,即是技术人员之间交换信息的文件,又可作为合同签约者之间的

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

23、同完成。VHDL为设计的分解和设计的再利用提供为设计的分解和设计的再利用提供了有力的支持。了有力的支持。 VHDL已成为已成为IEEE承认的一个工业标准承认的一个工业标准,事实上已成,事实上已成为通用硬件描述语言。为通用硬件描述语言。 VHDL语言的主要优点语言的主要优点一、一、VHDLVHDL的基本组成的基本组成VHDL 语言语言参数部分参数部分程序包程序包接口部分接口部分设计实体设计实体描述部分描述部分结构体结构体LIBRARY ieee;USE ieee.std_logic_1164.all;(一)参数部分(一)参数部分程序包程序包程序包程序包IEEE标准的标准程序包标准的标准程序包设计

24、者自身设计的程序包设计者自身设计的程序包 设计中的子程设计中的子程序和公用数据类型序和公用数据类型的集合。的集合。调用数据类型标准程序包的调用数据类型标准程序包的VHDL语言描述语言描述 放在放在VHDL程序的最前面,表示以后在实体或结构程序的最前面,表示以后在实体或结构体中要用到数据类型包中的数据类型。体中要用到数据类型包中的数据类型。调用程序包调用程序包语句语句标标准准程程序序包包定定义义程程序序包包(二)接口部分二)接口部分设计实体设计实体kxora1b1c1设计实体设计实体提供设计模块的公共信息,是提供设计模块的公共信息,是VHDL设计电路的最基本部分。设计电路的最基本部分。VHDL实

25、体的描述方法:实体的描述方法:ENTITY kxor IS PORT(a1,b1:IN std_logic; c1:OUT std_logic);END kxor; 一个模块中仅有一一个模块中仅有一个设计实体。个设计实体。调用程序包调用程序包语句语句标标准准程程序序包包定定义义程程序序包包实体实体 及实及实体声体声明语明语句句ENTITY kxor IS PORT(a1,b1:IN std_logic;END kxor; c1:OUT std_logic);ENTITY、IS、PORT、IN、OUT和和END为关键字;为关键字;ENTITY.END之间表示实体内容;之间表示实体内容;kxor表

26、示实体的名称,即电路的符号名;表示实体的名称,即电路的符号名;PORT端口(引脚)信息关键字,描述了信号的流向;端口(引脚)信息关键字,描述了信号的流向;IN输入模式;输入模式;OUT输出模式;输出模式;std_logic表示信号取值的类型为标准逻辑。表示信号取值的类型为标准逻辑。(二)接口部分二)接口部分设计实体设计实体ENTITY sel IS PORT(d0,d1,d2,d3:IN BIT; s :IN INTEGER RANGE 0 TO 3; out1 :OUT BIT);END sel;d0d1d2d3sout1sel再例:再例:(二)接口部分二)接口部分设计实体设计实体(三)描述

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

28、及实体声体声明语明语句句结结构构体体1结结构构体体2结结构构体体nkxora1b1c1a1b1c1kxora1b1c1a1b1c1a1b1c1a1b1c1a1b1c1a1b1c1a1b1c1a1b1c1a1b1c1a1b1c1a1b1c1a1b1c1a1b1c1a1b1c1a1b1c1a1b1c1a1b1c1a1b1c1a1b1c1a1b1c1a1b1c1a1b1c1a1b1c1a1b1c1二、二、VHDLVHDL数据类型和属性数据类型和属性 VHDL硬件描述语言中涉及了许多硬件描述语言中涉及了许多信号信号、变量变量和和常常量量,它们用来,它们用来保持数据保持数据。 在在VHDL中,中,保持数

29、据保持数据的的信号信号、变量变量和和常量常量称为称为目标目标。 VHDL是一种非常严格的数据类型化语言,规定每个是一种非常严格的数据类型化语言,规定每个信信号号、常量常量或或变量变量和每个表达式有一个唯一的确定数据类型,和每个表达式有一个唯一的确定数据类型,每个目标和表达式的数据类型静态地被确定。每个目标和表达式的数据类型静态地被确定。 每一个每一个目标目标都有一个数据类型来确定都有一个数据类型来确定目标目标保持的那一保持的那一类数据。类数据。 在表达式中在表达式中分配数值给目标分配数值给目标时的数据类型不时的数据类型不可以被混用。可以被混用。在在VHDL中中目标目标有三种:有三种:信号信号、

30、变量变量和和常量常量。 信号信号和和变量变量可以赋予一系列的值,而可以赋予一系列的值,而常量常量一次仅一次仅被分配一个值。被分配一个值。 信号信号和和变量变量又有不同,赋予又有不同,赋予信号信号的数值要到未来的数值要到未来的某个时刻,的某个时刻,信号信号才接受当前的数值;而赋予才接受当前的数值;而赋予变量变量的的数值,数值,变量变量立即接收当前的数值。立即接收当前的数值。目标目标的一般形式如下:的一般形式如下: 目标目标 : := ;二、二、VHDLVHDL数据类型和属性数据类型和属性目标目标:是一个或多个代表着目标种类的字符串,多个目:是一个或多个代表着目标种类的字符串,多个目 标时用标时用

31、“,”号分开。号分开。 目标目标 : := ;目标种类:目标种类:信号(信号(SIGNAL)、变量变量(VARIABLE)和和常量常量 (CONSTANT)。信号信号:它表示把元件的端口连接在一起的互连线。:它表示把元件的端口连接在一起的互连线。 变量变量:用于对暂时数据的局部存储,变量只在进程和子:用于对暂时数据的局部存储,变量只在进程和子 程序内部定义。程序内部定义。 常量常量:对某些特定类型数据赋予的一次性数值。:对某些特定类型数据赋予的一次性数值。表达式表达式:表达式是为了规定目标的初始值,这是缺省部分。:表达式是为了规定目标的初始值,这是缺省部分。目标类型目标类型:为了规定目标的特征

32、,:为了规定目标的特征,VHDL含有很宽范围的含有很宽范围的数据类型。数据类型。VHDL除了有基本的数据类型之外,设计者还除了有基本的数据类型之外,设计者还可以建立自己的数据类型,类型说明部分规定类型名和类可以建立自己的数据类型,类型说明部分规定类型名和类型范围,它的一般形式是:型范围,它的一般形式是:VARIABLE a1:INTEGER:=3;TYPE IS ;标量类型、复合类型、子类型、文件类型和寻址类型。标量类型、复合类型、子类型、文件类型和寻址类型。标量类型包括所有的简单类型:如整数、实数等;标量类型包括所有的简单类型:如整数、实数等;复合类型包括数组和记录;复合类型包括数组和记录;

33、寻址类型在一般编辑语言中等价为指针;寻址类型在一般编辑语言中等价为指针;文件类型是设计者定义的文件类型为设计者提供说明的文件对象;文件类型是设计者定义的文件类型为设计者提供说明的文件对象;子类型主要是对现有类型加以限制。子类型主要是对现有类型加以限制。VHDL可用数据类型有五类:可用数据类型有五类:1.1.标量数据类型标量数据类型 标量数据类型标量数据类型是基本的数据类型,它包括整数类型、是基本的数据类型,它包括整数类型、实数类型、物理类型和枚举类型。实数类型、物理类型和枚举类型。 物理类型物理类型要提供一个基本单位,然后在这个基本单位要提供一个基本单位,然后在这个基本单位上定义多个或零个次级

34、单位,每个次级单位都是基本单位上定义多个或零个次级单位,每个次级单位都是基本单位的整数倍。的整数倍。 枚举类型枚举类型在形式上是定义括弧括起来的字符串文字表,在形式上是定义括弧括起来的字符串文字表,一个字符串文字在枚举类型定义中只能出现一次,但允许一个字符串文字在枚举类型定义中只能出现一次,但允许同样一个字符串文字出现在不同的枚举类型的字符串文字同样一个字符串文字出现在不同的枚举类型的字符串文字表中,枚举类型的字符串文字表中的文字是由设计者定义表中,枚举类型的字符串文字表中的文字是由设计者定义的,这些字母可以是单个字母,也可以是一个字符串,例的,这些字母可以是单个字母,也可以是一个字符串,例如

35、如BREAKFAST, Lunch, a等。等。 下面举一个下面举一个VHDL程序加深理解程序加深理解枚举枚举类型的使用。类型的使用。 一个目标的数值有可能经常更换一个目标的数值有可能经常更换或者说是包含多个值,但一个目标一次或者说是包含多个值,但一个目标一次只能被一种类型说明。只能被一种类型说明。PACKAGE meals_pkg IS TYPE meal IS(breakfast,lunch,dinner);END meals_pkg;例例1:USE work . meals_pkg . all;ARCHITECTURE meals_arc OF meals ISBEGIN WITH pr

36、evious_meal SELECT next_meal = breakfast WHEN dinner, lunch WHEN breakfast, dinner WHEN lunch;END meals_arc;自定义程序包的名字自定义程序包的名字枚举数据类型的名字枚举数据类型的名字三个枚举数据三个枚举数据ENTITY meals IS PORT(previous_meal:IN meal; next_meal:OUT meal);END meals;调用自定义程序包调用自定义程序包mealsnextprevious枚举型数据枚举型数据2.复合数据类型复合数据类型 复合类型复合类型是由数组

37、类型和记录类型组成,它们的元是由数组类型和记录类型组成,它们的元素是标量类型的元素。数组类型是由相同的标量元素素是标量类型的元素。数组类型是由相同的标量元素组成,即同构复合类型,数组可以是一维、二维或多组成,即同构复合类型,数组可以是一维、二维或多维。例如维。例如: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;

38、TYPE row IS RANGE 1 TO 10;CONSTANT ROM : BIT_VECTOR(0 TO 15); Word(15)word(0)共共16个同数据类型的元素个同数据类型的元素VHDL的属性的属性 VHDL中的属性使得中的属性使得VHDL程序更加简明扼要,程序更加简明扼要,更加容易理解,更加容易理解,VHDL的属性在时序程序中几乎处处的属性在时序程序中几乎处处可见,如值类属性的左边界、右边界、上下边界以及可见,如值类属性的左边界、右边界、上下边界以及值类属性的长度,还可以检测信号上升沿和下降沿以值类属性的长度,还可以检测信号上升沿和下降沿以及前一次发生的事件等等。及前一次

39、发生的事件等等。TYPE bit1 IS ARRAY(63 DOWNTO 32) OF BIT; VARIABLE left_range,right_range,uprange,lowrange:INTEGER;BEGIN left_range:= bit1LEFT; -returns 63 right_range:= bit1RIGHT; -returns 32 uprange:= bit1HIGH; -returns 63 lowrange:= bit1LOW; -returns 32 值类属性值类属性:值类属性用于返回数组的边界或长度,首先举一例值类属性用于返回数组的边界或长度,首先举一

40、例数组边界的例子说明数组边界的例子说明值类属性值类属性。例例2:TYPE bit1 IS ARRAY(0 TO 7) OF BIT;TYPE bit2 IS ARRAY(8 TO 31) OF BIT; VARIABLE len1,len2:INTEGER;BEGIN len1:=bit1LENGTH; -return 8 len2:=bit2LENGTH; -return 24 下面再举一个值类数组属性的例子,让其返回数下面再举一个值类数组属性的例子,让其返回数组范围的总长度。组范围的总长度。例例: 它可用来检查一个信号的变化,并且变化刚它可用来检查一个信号的变化,并且变化刚刚发生,即推断出

41、在信号上发生了一个跳变。刚发生,即推断出在信号上发生了一个跳变。 函数信号属性:函数信号属性:函数信号属性用来返回有关信函数信号属性用来返回有关信号行为功能的信息,它反映一个信号是否正好有值号行为功能的信息,它反映一个信号是否正好有值的变化或事件的发生,如的变化或事件的发生,如clkEVENT,这个属性为,这个属性为“EVENT”,对检查时钟边沿触发是很有效的。,对检查时钟边沿触发是很有效的。下面举一个例子,说明函数信号属性的用法。下面举一个例子,说明函数信号属性的用法。IF clk= 1 AND clkEVENT THEN q = d;END IF; 上述语句中用到了函数信号属性上述语句中用

42、到了函数信号属性clkEVENT,说,说明如果时钟信号明如果时钟信号clk为高电平,并且事件刚刚发生,也为高电平,并且事件刚刚发生,也就是说是时钟就是说是时钟上升沿有效上升沿有效,此时,此时q得到得到d的信号。的信号。( (三三)VHDL)VHDL的行为描述的行为描述 在在VHDL硬件描述语言中,描述电路逻辑的程硬件描述语言中,描述电路逻辑的程序称为序称为行为描述行为描述,行为描述有,行为描述有并行描述、进程描述并行描述、进程描述和和顺序描述顺序描述。 三个行为既可以是相互独立,成为单一的行为三个行为既可以是相互独立,成为单一的行为描述体,又可以相互联系,成为混合描述体,如进描述体,又可以相互

43、联系,成为混合描述体,如进程行为描述行为程行为描述行为之间之间是是并行行为并行行为,进程行为体的,进程行为体的内内部部是是顺序行为顺序行为。1.VHDL1.VHDL的并行行为的并行行为 在典型的编程语言如在典型的编程语言如C或或Pascal中,每个赋值语句按规定中,每个赋值语句按规定的次序,一个接在另一个之后顺序执行,执行的次序由源文的次序,一个接在另一个之后顺序执行,执行的次序由源文件决定。件决定。 在在VHDL中,结构体的内部没有规定语句的次序,执行中,结构体的内部没有规定语句的次序,执行的次序仅由对语句中的敏感信号发生的事件决定,且语句是的次序仅由对语句中的敏感信号发生的事件决定,且语句

44、是同时执行。同时执行。结构体中并行赋值语句的一般格式如下:结构体中并行赋值语句的一般格式如下: = ; 读作对象得到表达式的值,作用是将表达式的信号值分读作对象得到表达式的值,作用是将表达式的信号值分配给对象,即每当表达式的信号值变化时执行该语句。配给对象,即每当表达式的信号值变化时执行该语句。 每个表达式都至少有一个敏感信号,每当敏感信号改变其每个表达式都至少有一个敏感信号,每当敏感信号改变其值时,就执行这个信号赋值语句。值时,就执行这个信号赋值语句。 在所有的并行语句中,两个以上的并行赋值语句在字在所有的并行语句中,两个以上的并行赋值语句在字面上的顺序并不表明它们的执行顺序。面上的顺序并不

45、表明它们的执行顺序。例如下面的两个结构体在功能上是等价的。例如下面的两个结构体在功能上是等价的。ENTITY exe IS PORT(a1,a2:IN BIT; b1,b2:OUT 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; 另一种并行信号赋值语句是选择信号赋值语句,它们的另一种

46、并行信号赋值语句是选择信号赋值语句,它们的每一个赋值语句都需要给出一个表达式,同时给出与该表达每一个赋值语句都需要给出一个表达式,同时给出与该表达式的每个可能值相关联的信号。式的每个可能值相关联的信号。 选择信号赋值语句的一般形式如下:选择信号赋值语句的一般形式如下: WITH SELECT = WHEN , WHEN , WHEN ;ARCHITECTURE sels_arc OF sels ISBEGIN WITH s SELECT out1 = d0 WHEN 0, d1 WHEN 1, d2 WHEN 2, d3 WHEN 3;END sels_arc; 一个典型的四路数据选择器一个典

47、型的四路数据选择器VHDL程序说明程序说明WITH一般一般形式的用法。形式的用法。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 iee

48、e; 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 AFTER 10 ns WHEN sel= 2 ELSE I3 AFTER 10 ns ; sel = 0 WHEN A=

49、 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;2.VHDL2.VHDL的进程行为的进程行为 VHDL除了并行行为之外,还有顺序行为。顺序行为执行除了并行行为之外,还有顺序行为。顺序行为执行的顺序是一个接在另一个之后严格执行。的顺序是一个接在另一个之后严格执行。顺序行为的语句存在于顺序行为的语句存在于VHDL程序中的程序中的进程行为进程行为之中。之中。而进程行为之间是并行行为语句而进程行为之间是并行行为语句。进程行为语句的一般形式如下进程行为语句的一般形式如下: :PROC

50、ESS BEGIN WAIT ON ; WAIT UNTIL ; WAIT FOR ; END PROCESS; 整个实体模块中的每个进程行为语句,可以在任何时候被整个实体模块中的每个进程行为语句,可以在任何时候被激活,所有被激活的进程是并行执行的。激活,所有被激活的进程是并行执行的。 下面举一个下面举一个3线线-8线通用译码器程序的例子,说明进程语句线通用译码器程序的例子,说明进程语句如何工作。如何工作。LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_arith.all; ENTITY decoder IS PORT

51、(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) BEGINsel1 dout 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; 此例只要此例只要sel的值一发生改变就激活

52、进程,从第一句执行的值一发生改变就激活进程,从第一句执行直到满足条件后再被挂起。直到满足条件后再被挂起。PROCESS(sel)下例是另一种激活进程的方式:下例是另一种激活进程的方式: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= 0; q2 = d; END PROCESS; END r

53、eg_arc; 进程行为语句之进程行为语句之间是并行关系,进程间是并行关系,进程行为语句内部是顺序行为语句内部是顺序关系。关系。 VHDL的每个结的每个结构体中可以有多个进构体中可以有多个进程行为语句。程行为语句。它的关键之处是:它的关键之处是:3.VHDL3.VHDL的顺序行为的顺序行为顺序行为语句可分为两大类:顺序行为语句可分为两大类:条件控制类条件控制类,循环控制类。循环控制类。 在这两类中选出六种在这两类中选出六种 IF、CASE、FOR、WHILE.LOOP、EXIT和和ASSERT进行讨论进行讨论 IF THEN ; ELSIF THEN ; ELSIF THEN ; ELSE ;

54、 END IF;(1) IF语句语句IF语句的一般形式为:语句的一般形式为:ARCHITECTURE alarm_arc OF alarm ISBEGIN下面举例说明下面举例说明IF条件语句的用法。条件语句的用法。例例: 用用VHDL设计一家用报警系统的控制逻辑,它有来自传感设计一家用报警系统的控制逻辑,它有来自传感器的三个输入信号器的三个输入信号smoke、door、water和准备传输到告警设备和准备传输到告警设备的三个输出触发信号的三个输出触发信号fire_alarm、burg_alarm、water_alarm以以及使能信号及使能信号en和和alarm_en。VHDL程序描述如下:程序

55、描述如下:LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY alarm IS PORT(smoke,door,water:IN std_logic; en,alarm_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

56、IF;IF (door= 1) AND (en= 0) AND (alarm_en= 0) 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;(2) CASE 语句语句CASE语句的一般形式:语句的一般形式:CASE IS WHEN ; WHEN | ; WHEN ; WHEN OTHERS ;END CASE; CASE语句是语句是VHD

57、L提供的另一种形式的控制语句,每当提供的另一种形式的控制语句,每当单个表达式的值在多个起作用的项中选择时,用此语句是较合单个表达式的值在多个起作用的项中选择时,用此语句是较合适的,它根据所给表达式的值或域,选择适的,它根据所给表达式的值或域,选择“=”后面的执行语句。后面的执行语句。用用CASE语句应该注意三个问题:语句应该注意三个问题: A) 关键字关键字WHEN的数量不作限制,但不容许两个语的数量不作限制,但不容许两个语句用一个值;句用一个值; B)所有)所有WHEN后面的值在后面的值在CASE语句中合起来的值是语句中合起来的值是值域中的全部;值域中的全部;C)WHEN语句的次序可以任意排

58、定。语句的次序可以任意排定。下面举例说明下面举例说明ASSERT语句的用法。语句的用法。例例:由两个或非门构成的:由两个或非门构成的RS触发器。触发器。ENTITY RSFF IS PORT(R,S:IN BIT; Q:OUT BIT););END RSFF;ARCFITECTURE RSFF_ARC OF RSFF ISBEGIN 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

59、=0 THEN LAST_STATE:=LAST_STATE; ELSIF R=1 AND S=0 THEN 为真时,执行为真时,执行IF语句。语句。 LAST_STATE:=0; ELSE LAST_STATE:=1; END IF; Q=LAST_STATE; ENDPROCESS;END RSFF_ARC;信号信号可被看作两个元件之间数据传输的通路。可被看作两个元件之间数据传输的通路。(四)VHDL的结构描述实体主要描述实体主要描述元件元件、端口端口与与信号信号。元件元件是硬件的描述,即门、芯片或者电路板。是硬件的描述,即门、芯片或者电路板。端口端口是元件与外界的连接点,数据通过端口进入

60、或流出元件。是元件与外界的连接点,数据通过端口进入或流出元件。 而而信号信号则是作为硬件连线的一种抽象描述,它既能保持变化则是作为硬件连线的一种抽象描述,它既能保持变化的数据,又可以连接各个子元件。的数据,又可以连接各个子元件。下面举例说明下面举例说明“调用元件语句调用元件语句”的用法。的用法。 对一个硬件的对一个硬件的结构进行描述结构进行描述,就是要描述它由哪些,就是要描述它由哪些子元件组成,以及各个子元件之间的互连关系。子元件组成,以及各个子元件之间的互连关系。 结构描述比行为描述更加具体化,即结构描述与硬结构描述比行为描述更加具体化,即结构描述与硬件之间的关系要比行为描述与硬件之间的关系更明显。件之间的关系要比行为描述与硬件之间的关系更明显。前面讨论,前面讨论, 行为描述的

温馨提示

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

评论

0/150

提交评论