数字电路与逻辑设计张林行第5章:组合逻辑电路吉林大学仪器科学与电气工程学院:数字电路与逻辑设计5-1概述5-2组合逻辑电路分析5-3组合逻辑设计5-4竞争与冒险基于VHDL的组合逻辑设计1、什么是硬件描述语言?2、VHDL程序由哪几部分构成?各部分的作用?3、VHDL语言中有哪些数据对象和基本数据类型?逻辑运算和算术运算有哪些?4、VHDL语言中的并列语句有哪些?如何使用这些语句设计组合逻辑?一、VHDL概述数字电路与逻辑设计:第5章组合逻辑电路硬件描述语言:HDL:HardwareDescriptionLanguage硬件描述语言HDL是一种用形式化方法描述数字电路和系统的语言。利用这种语言,数字电路系统的设计可以从上层到下层(从抽象到具体)逐层描述自己的设计思想,用一系列分层次的模块来表示极其复杂的数字系统。然后,利用电子设计自动化(EDA)工具,逐层进行仿真验证,再把其中需要变为实际电路的模块组合,经过自动综合工具转换到门级电路网表。接下去,再用专用集成电路ASIC或CPLD/FPGA自动布局布线工具,把网表转换为要实现的具体电路布线结构。硬件描述语言最初由美国的Iverson于1962年提出。目前,这种高层次(high-level-design)的方法已被广泛采用。据统计,目前在美国硅谷约有90%以上的ASIC和CPLD/FPGA采用硬件描述语言进行设计。目前,应用较多的HDL有VHDL,Verilog。硬件描述语言与一般程序设计语言的比较:既有相似之处,又有显著不同。•一般程序设计语言描述的是一个算法,可在处理器上执行;•硬件描述语言描述的是一个数字电路/系统,经综合后对应的是一个具体的硬件电路。VHDL:超高速集成电路硬件描述语言起源:20世纪80年代初,美国国防部VHSIC计划。目的:方便电子设计文档的交流和成果的再利用。•1985年,第1版VHDL完成;•1987年,国际电气与电子工程师协会(IEEE)将VHDL语言作为硬件描述语言的工业标准(IEEE1076);•1988年,美国国防部规定所有官方的ASIC设计都必须以VHDL作为设计描述语言,此后VHDL逐渐成为工业界标准。•1993年,增修为IEEE1164标准;1999年,IEEE又将数字模拟混合VHDL的版本作为工业标准,即IEEE1076.3;二、VHDL程序结构数字电路与逻辑设计:第5章组合逻辑电路LIBRARY(USE)-----库PACKAGE-------------程序包集合ENTITY-------------实体ARCHITECTURE-----结构体CONFIGURATION----配置语句VHDL程序示例:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;Entityand2isPort(a:inbit;b:inbit;c:outbit);Endand2;Architecturebehavofand2isBeginc=aandb;Endbehav;端口模式(MODE)有以下几种类型:IN;OUT;INOUT;BUFFER端口模式可用下图说明:INOUTBUFFERINOUT三、VHDL中的数据对象、数据类型及运算VHDL中的数据对象:常量Constant常量名称:数据类型:=给定值;信号:Signal信号名称:数据类型[:=初始值];变量:Variable变量名称:数据类型[:=初始值];数字电路与逻辑设计:第5章组合逻辑电路(1)信号和变量的对应关系不同:信号代表电路内部信号或连接线路;而变量则不是。(2)信号和变量声明的位置不同:信号声明在子程序、进程的外部;而变量声明在子程序、进程的内部。(3)信号为全局量,而变量只在定义它的域中才可见。因此,变量不能在两个进程之间传递信息。(4)在一个进程中多次为一个信号赋值时,只有最后一个值会起作用;而变量则不同,每次赋值都会改变它的值。(5)赋值不同。在进程中,信号赋值只有在进程结束时起作用,而变量赋值是立即进行的。而且赋值符号不同:信号赋值为“=”,变量赋值为“:=”。信号与变量的比较VHDL中的基本数据类型:位:bit位序列:bit_vector标准逻辑:std_logic标准逻辑序列:std_logic_vectorBit类型的取值Std_logic类型的取值序列的声明方式:to,downtoVHDL中的运算符号:逻辑运算:ANDORNOT算术运算:+,-关系运算:,,=,=,=,/=连接符号:&赋值符号:=,:=四、VHDL中的命令语句-并列语句数字电路与逻辑设计:第5章组合逻辑电路并列语句一般处于进程(PROCESS)的外部。所有并列语句都是并行执行的,即与它们出现的先后次序无关。并列语句有三个特点:a.所有语句的执行是并行的;b.每条语句的执行和其所在的位置无关;c.并列语句的输出仅仅依赖于输入,没有其它的限制条件。三种基本的并列语句:(1)直接赋值语句:=(2)条件赋值语句:When-Else(3)选择赋值语句:With-Select-When[label:]WithexpressionSelectSignal_name=expression1Whenconstant_value1,expression2Whenconstant_value2,…expressionNWhenconstant_valueN;[label:]Signal_name=expression1Whenlogic_expression1Elseexpression2Whenlogic_expression2…ElseexpressionN;五、基于VHDL的组合逻辑设计实例6位自然二进制数转换为8421BCD码数字电路与逻辑设计:第5章组合逻辑电路4-4竞争与冒险竞争冒险(hazard)毛刺(glitch)数字电路与逻辑设计:第4章组合逻辑电路•竞争与冒险的产生在逻辑电路中,多个输入信号在传输过程中受逻辑门固有延迟、逻辑门级数、导线长度等因素的影响,导致其到达输出端的时间有先有后,这种现象称为竞争现象。更广义的可以将竞争理解为多个信号到达某一点有时差的现象。由于竞争可能导致逻辑电路产生错误的输出,称为冒险。组合逻辑电路中的冒险是一种瞬态现象,表现为输出端出现不应有的尖脉冲(毛刺)。•冒险现象的判断1、代数法若某个变量X同时以原变量和反变量的形式出现在函数表达式中,并且在一定条件下该函数表达式可化简为X+X或者XX的形式,则该函数表达式对应的电路在X发生变化时,可能会由于竞争产生冒险现象。2、卡诺图法在卡诺图中,若两个卡诺圈之间存在不被同一个卡诺圈包含的相邻最小项,则该电路可能产生冒险现象。•消除冒险现象的方法1、增加冗余项2、输出端滤波3、利用选通脉冲(同步方法)