第3章组合逻辑电路 前面学习了门电路的相关知识,也学习了分析和设计数字电路的工具——逻辑代数,就如同一个建筑工程,有了基本原材料和工具,接下来就利用工具和材料来搭建具有一定逻辑功能的电路。组合逻辑电路是数字电路一个重要分支,也是数字集成电路中的一个重要组成部分。本章首先介绍组合逻辑电路的一般分析方法和设计方法; 然后介绍编码器、译码器、数据选择器、数值比较器、加法器等常用组合逻辑集成器件,重点分析这些器件的逻辑功能、工作原理及使用方法; 最后介绍组合逻辑电路的Verilog HDL描述。 为了能够将理论与实践联系起来,本章以工程实例为依托,边理论边实践。 3.1工程任务: 子弹分装系统设计 3.1.1系统介绍 子弹分装系统框图如图3.1.1所示。按键输入每把枪安装子弹的数目并显示出来,系统自动按照输入的数目将每把枪需要的子弹分装到瓶子中,同时将分装子弹的总数存储在计算机上。整个系统分为以下四个模块: 图3.1.1子弹分装系统框图 (1) 人机交互模块: 键盘作为系统的输入,用来输入每把枪装入子弹的最大数目。数码管作为系统的输出,显示出输入的数字。 (2) 代码转换模块: 将人机交互模块输出的8421码转换为二进制码。 (3) 自动分装模块: 根据键盘输入的数字,控制阀门传感器将每把枪所需的子弹装入瓶中,当一瓶子弹装完后控制传送带将下一个瓶子自动传送到指定位置。 (4) 数据传输模块: 将分装子弹总数通过数据线传送到计算机,以便跟踪特定时间的子弹分装总数。 3.1.2任务需求 1. 人机交互 如图3.1.1所示,从键盘输入每把枪所需子弹的最大数目,由编码器转换为代码存储在寄存器A中,译码器A将存储在寄存器中的代码转换为数码管能够识别的七段代码,最终通过数码管将输入的数字显示出来。 需要设计的电路: 编码器、寄存器、译码器、显示器。 2. 代码转换 如图3.1.1所示,比较器实现对于输入的每瓶子弹数目与瓶中装入的实际子弹数目进行比较。由于比较器输入的是二进制码,而寄存器存储的是8421码,因此需要一个能够把8421码转换为二进制码的转换电路。 需要设计的电路: 代码转换器。 3. 自动分装 如图3.1.1所示,子弹被馈送到一个大的漏斗形料斗,在料斗的颈部安装一个光学传感器,该传感器一次只允许一颗子弹通过,通过后将产生一个脉冲信号,产生的脉冲送入计数器,使计数器的计数值加1,因此子弹装入的过程中,计数器用来统计子弹的数目。将该数值与键盘输入每把手枪最大装入的子弹数目所对应的二进制数进行比较,假设当前每把枪装入子弹最大数是50,当计数器中的二进制数达到50时,比较器的A=B输出端变为高电平,表示子弹已装满。 利用比较器的高电平输出使得料斗颈部的阀门关闭和子弹流动停止。同时,比较器高电平输出激活传送机,将下一个瓶子移动到料斗下方,当到达相应的位置时,传送机的控制部分产生一个脉冲,将计数器复位,计数值回零,从而使比较器的输出回到低电平。打开料斗颈部的阀门,子弹再次流动。 需要设计的电路: 计数器、比较器。 4. 数据传输 如图3.1.1所示,利用加法器可以计算出在一个给定的运行过程中子弹分发的总数。数据选择器将寄存器B中存储的二进制数总和从并行形式转换成串行形式,通过一条数据线传送到数据分配器,数据分配器将串行的数据再转回并行形式存储在计算机,以便跟踪在特定的时间子弹分装的总数。 需要设计的电路: 加法器、寄存器、数据选择器、数据分配器。 中国芯片发展③——小规模集成电路(1962—1968) ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 在各类半导体研制单位的共同努力下,1963年,中国科学院半导体研究所研制成功第一只半导体激光器,只比美国晚了一年。河北半导体所(现为中国电子科技集团公司第十三研究所)在1965 年研制成功第一个硅基集成电路样品 GT31(美国在1958年),同年在国内首次鉴定研制成功 DTL(DiodeTransistorLogic)型逻辑电路。1966年,上海元件五厂研制完成 TTL(TransistorTransistorLogic)型逻辑电路。这两种集成电路均属于小规模双极型数字集成电路,标志着中国在小规模集成电路方面实现自主可控。1966年,我国研制成功第一台 65型接触式光刻机,使得集成电路生产能力大幅提高。1968年,我国第一台第三代计算机由华北计算技术研究所研制成功,采用的就是DTL型数字电路,其中与非门由北京电子管厂生产,与非驱动器由河北半导体研究所生产。 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 3.2组合逻辑电路的分析与设计 (一) 课前篇 本节导学单 1. 学习目标 根据《布鲁姆教育目标分类学》,从知识维度和认知过程两方面进一步细化本节课的教学目标,明确学习本节课所必备的学习经验。 知 识 维 度 认 知 过 程 1. 回忆2. 理解3. 应用4. 分析5. 评价6. 创造 A. 事实性知识回忆真值表的基本概念说出组合逻辑电路的基本概念; 说出组合逻辑电路竞争与冒险的基本概念 续表 知 识 维 度 认 知 过 程 1. 回忆2. 理解3. 应用4. 分析5. 评价6. 创造 B. 概念性知识回忆常用逻辑门电路的逻辑符号,逻辑表达式及真值表阐释组合逻辑电路的特点及其功能描述方法说出组合逻辑电路分析和设计的一般步骤,明晰每一个步骤所起的作用 C. 程序性知识回忆逻辑函数的多种表达式形式; 回忆逻辑函数表示方法之间的转换; 回忆逻辑函数的代数化简的步骤; 回忆逻辑函数的卡诺图化简的步骤根据组合逻辑电路分析的一般步骤,分析组合逻辑电路的逻辑功能; 根据组合逻辑电路设计的一般步骤以及需求设计组合逻辑电路借助于竞争与冒险,评价所设计的组合逻辑电路并进行优化设计集成芯片的应用电路,会借助于仿真软件进行验证,会利用口袋实验包进行电路搭建与调试 D. 元认知知识 明晰学习经验是理解新知识的前提根据概念及学习经验迁移得到新理论的能力将知识分为若干任务,主动思考,举一反三,完成每个任务在不断地发现问题、分析问题、解决问题的过程中体会精益求精的科学态度通过电路的设计、仿真、搭建、调试,培养工程思维 2. 导学要求 根据本节的学习目标,将回忆、理解、应用层面学习目标所涉及的知识点课前自学完成,形成自学导学单。 3.2.1课前自学——组合逻辑电路概述 1. 组合逻辑电路的定义 对于一个逻辑电路,其输出状态在任何时刻只取决于同一时刻的输入状态,而与电路原来的状态无关,这种电路称为组合逻辑电路。没有记忆功能是组合逻辑电路在逻辑功能上的共同特点。 图3.2.1是组合逻辑电路实例。它有三个输入变量A、B、CI和两个输出变量S、CO。根据图3.2.1可以写出输出逻辑表达为 S=(AB)CI CO=(AB)CI+AB (3.2.1) 由上式可知,无论任何时刻,只要A、B、CI的取值确定,S和CO的取值也随之确定,与电路过去的工作状态无关。 从组合逻辑电路功能特点不难想到,既然它的输出与电路之前的状况无关,那么电路中就不包含有存储单元。这就是组合逻辑电路在电路结构上的共同特点。 2. 组合逻辑电路的功能描述 对于任何一个多输入、多输出的组合逻辑电路,都可以用图3.2.2所示的框图来表示。 图中a1,a2,…,an表示输入变量,y1,y2,…,yn表示输出变量。输出与输入之间的逻辑关系可以用一组逻辑函数表示: y1=f1(a1,a2,…,an) y2=f2(a1,a2,…,an)  ym=fm(a1,a2,…,an)(3.2.2) 图3.2.1组合逻辑电路实例 图3.2.2组合逻辑电路的一般框图 逻辑函数描述方法除了逻辑式以外,还有真值表、逻辑图、波形图等几种。因此,在分析或设计组合逻辑电路时,可以根据需要采用其中任何一种方式进行描述。 3.2.2课前自学——组合逻辑电路的竞争与冒险 通过前面的学习知道,从信号加到逻辑门电路输入到得到稳定输出都需要一定时间,将这个时间称为门电路延迟时间。由于不同路径门的级数不同,信号经过不同路径传输时间不同,或者门的级数相同而各个门延迟时间差异,会造成信号传输时间不同。因此,电路在信号电平变化瞬间,可能与稳态下的逻辑功能不一致,产生错误输出,这种现象就是电路中的竞争冒险。 1. 产生竞争冒险的原因 下面进一步分析组合逻辑电路产生的竞争冒险。图3.2.3(a)所示的逻辑电路中,它的输出逻辑表达式为L=A。由图3.2.3(b)所示的波形图可以看出,在A由0变1时,由于G1门的输出有延迟,使得由1变0有一延迟时间,而使输出L出现一正跳变的窄脉冲,该电路存在1冒险。 图3.2.3组合逻辑电路的1冒险 图3.2.4(a)所示的逻辑电路中,它的输出逻辑表达式为L=A+。由图3.2.4(b)所示的波形图可以看出,在A由0变1时,由于G1门的输出有延迟,使得由1变0有一延迟时间,而使输出L出现一负跳变的窄脉冲,该电路存在0冒险。 图3.2.4组合逻辑电路的0冒险 综上所述,一个逻辑门的两个输入端的信号同时朝相反方向变化,而变化的时间有差异的现象称为竞争。由竞争而可能产生输出干扰脉冲的现象称为冒险。 2. 检查竞争冒险的方法 在输入变量每次只有一个改变状态的情况下,可以通过逻辑函数式判断组合逻辑电路中是否有竞争冒险现象存在。如果输出端门电路的两个输入信号A和是输入变量A经过两个不同的传输途径而来的(图3.2.3和图3.2.4),那么当输入变量A的状态发生突变时输出端便有可能产生尖峰脉冲。因此,只要输出端的逻辑函数在一定条件下能简化成 Y=A+或Y=A·(3.2.3) 则可判定存在竞争冒险现象。 例3.2.1试判断图3.2.5中的两个电路中是否存在竞争冒险现象。 图3.2.5例3.2.1的电路 解: 图3.2.5(a)电路输出的逻辑表达式可写为 Y=AB+C(3.2.4) 当B=C=1时,上式将成为 Y=A+(3.2.5) 故图3.2.5(a)电路中存在竞争冒险现象。 图3.2.5(b)电路输出的逻辑表达式可写为 Y=(A+B)(+C)(3.2.6) 当B=C=0时,上式将成为 Y=A·(3.2.7) 故图3.2.5(b)电路中存在竞争冒险现象。 这种方法虽然简单,但是局限性太大,因为多数情况下输入变量都有两个以上同时改变状态的可能性。如果输入变量的数目有很多,就更难于从逻辑函数式上简单地找出所有产生竞争冒险现象的情况。 另一种方法是将计算机辅助分析手段用于分析数字电路后,从原理上检查复杂数字电路竞争冒险现象提供有效手段。通过在计算机上运行数字电路的程序,能够迅速查出电路是否会存在竞争冒险现象。即使用计算机辅助分析手段检查过的电路,往往也还需要经过实验的方法检验,才能最后确定电路是否存在竞争冒险现象。 3. 消除竞争冒险的方法 针对上述分析,可以采取以下措施来消去竞争冒险现象: (1) 接入滤波电容。由于竞争冒险而产生的尖峰脉冲一般都很窄(几十纳秒),所以只要在输出端并接一个很小的滤波电容C(图3.2.6(a)),就足以把尖峰脉冲的幅度削弱至门电路的阈值电压以下。在TTL电路中,C的数值通常为几十皮法至几百皮法。这种方法的优点是简单易行,缺点是增加了输出电压波形的上升时间和下降时间,使波形变坏。 图3.2.6接入滤波电容消除竞争冒险 (2) 引入选通脉冲。在电路中引入一个选通脉冲EI,如图3.2.7(a)所示。当电路输入端信号发生变化时不选通它,禁止电路工作; 当所有输入信号变化完毕并达到稳态再让电路工作。即引入选通脉冲后输出端得到的永远是输入稳态后的输出值,不会出现尖峰脉冲。 图3.2.7引入选通脉冲消除竞争冒险 (3) 修改逻辑设计。 以图3.2.5(a)所示电路为例,已经得到了输出表达式Y=AB+C,而且知道在B=C=1的条件下,当A改变状态时存在竞争冒险现象。 根据逻辑代数的常用公式可知 Y=AB+C=AB+C+BC(3.2.8) 发现在增加了BC项后,在B=C=1时无论A如何变化,输出始终保持Y=1。因此,A的状态变化不再会引起竞争冒险现象。修改逻辑设计后的电路如图3.2.8所示。 图3.2.8修改逻辑设计后的电路 3.2.3课前自学——预习自测 3.2.3.1下列对组合逻辑电路描述不正确的是()。 A. 由常用门电路组合而成 B. 无输出到输入的反馈连接 C. 包含可以存储信号的记忆元件 D. 输出只由输入决定 3.2.3.2下列表达式中不存在竞争冒险的是()。 A. Y=(A+B)(+C)B. Y=AB+C C. Y=+ACD. Y=AD+B+BD 3.2.3.3画出逻辑函数L(A,B,C)=(A+C)(B+)的逻辑图,电路在什么条件下产生竞争冒险?怎样修改电路能消除竞争冒险? (二) 课上篇 3.2.4课中学习——组合逻辑电路的分析方法 组合逻辑电路分析目的是确定组合逻辑电路逻辑功能。分析组合逻辑电路步骤大致如下: (1) 根据逻辑电路,从输入到输出逐级写出逻辑函数表达式,最终得到表述输出信号与输入信号关系的逻辑函数表达式。 (2) 利用公式化简法或卡诺图化简法将逻辑表达式化简或变换,以使逻辑关系更加简单明了。 (3) 为了使电路逻辑功能更加直观,根据简化后的逻辑表达式列写真值表。 (4) 根据真值表总结电路逻辑功能。 例3.2.2试分析图3.2.9所示电路的逻辑功能。 图3.2.9例3.2.2的电路 解: 由图3.2.9写出X、Y、Z的逻辑表达式: X=A Y=A·B Z=C·A(3.2.9) 逻辑表达式的化简: X=A Y=A+B Z=C+A(3.2.10) 将式(3.2.10)转换成真值表的形式,得到表3.2.1。 表3.2.1图3.2.9所示电路的逻辑真值表 输入输出 ABCXYZ 000000 001001 010010 011011 100111 101110 110101 111100 经过观察不难发现,真值表的前四行输出与输入相同,后四行输出Y、Z是对B、C进行求反。说明最高位为符号位,0表示正数,1表示负数,正数的反码与原码相同,负数的数值部分是在原码的基础上逐位求反,所以该电路逻辑功能是对输入的二进制数求反码。 3.2.5课中学习——组合逻辑电路的设计方法 根据给出的实际逻辑问题,完成实现这一逻辑功能的最简逻辑电路,是设计组合逻辑电路时要完成的工作。这里所说的最简,是指电路所用的器件数目最少,器件种类最少,而且器件之间的连线也最少。 设计组合逻辑电路的步骤大致如下: (1) 逻辑抽象。在许多情况下,提出的设计要求都是用文字描述的具有一定因果关系的事件,这就需要通过逻辑抽象的方法,用一个逻辑函数来描述这一因果关系。 逻辑抽象的工作过程如下: ① 分析事件的因果关系确定输入和输出变量。一般总是把引起事件的原因定为输入,把事件的结果作为输出。 ② 对输入变量和输出变量进行二进制编码,其编码规则和含义由设计者根据事件选定。 ③ 对给定的因果关系列出真值表。在完成输入和输出变量的二进制编码后,根据给定的因果关系进行逻辑关系描述。 真值表是所有描述方法中最直接的描述方式,因此经常首先根据给定的因果关系列出真值表。至此,便将一个实际的逻辑问题抽象成一个逻辑函数,而且这个逻辑函数通常首先是以真值表形式给出的。 (2) 写出逻辑表达式并化简。为便于对逻辑函数进行化简和变换,需要把真值表转换为对应的逻辑函数式,转换的方法已在第1章中讲过。在使用小规模集成的逻辑门电路进行电路设计时,为获得最简单的设计结果,应将函数式化成最简形式,即函数式相加的乘积项最少,而且每个乘积项中的因子也最少。如果对所用器件的种类有附加限制(如只允许用单一类型的与非门),则还应将函数式变换成与器件种类相适应的形式(如将函数式化为与非与非形式)。如何使用中规模器件设计实现组合逻辑电路,将在本章后续章节进行介绍。 (3) 根据化简或转换后的逻辑表达式画出逻辑电路的连接图。至此,原理性设计(或称逻辑设计)已经完成。 (4) 设计验证。 对已经得到的原理图进行分析,或借助计算机仿真软件进行功能和动态特性仿真,验证其是否符合设计要求。 例3.2.3设计一个监视交通信号灯工作状态的逻辑电路。每一组信号灯由红、黄、绿三盏灯组成,如图3.2.10所示。正常工作情况下,任何时刻必有一盏灯亮,而且只允许有一盏灯亮。其他情况出现,电路发生故障,这时要求发出故障信号,提醒维护人员修理。 图3.2.10交通信号灯的正常工作状态和故障状态 解: (1) 逻辑抽象。 取红、黄、绿三盏灯状态为输入变量,分别用R、Y、G表示,并规定灯亮时为1,不亮时为0。取故障信号为输出变量,用Z表示,并规定正常工作状态下Z为0,发生故障时Z为1。 根据题意可列出表3.2.2所示的逻辑真值表。 表3.2.2例3.2.3的逻辑真值表 输入输出 RYGZ 0001 0010 0100 0111 1000 1011 1101 1111 (2) 写出逻辑表达式。 由表3.2.2可知 Z=+YG+RG+RY+RYG (3.2.11) 将该表达式进行化简(图3.2.11),可得 Z=+YG+RY+RG(3.2.12) (3) 根据式(3.2.12)的化简结果画出逻辑电路图,如图3.2.12所示。 图3.2.11例3.2.3卡诺图 图3.2.12例3.2.3的逻辑图一 由于式(3.2.12)为最简与或表达式,所以只有在使用与门和或门组成电路时才得到最简单的电路。如果要求用其他类型的门电路来组成这个逻辑电路,则为了得到最简单的电路,化简的结果也需相应地改变。例如,在要求全部用与非门组成这个逻辑电路时,就应当将函数式化为最简与非与非表达式。这种形式通常可以通过将与或表达式两次求反得到。将式(3.2.12)两次求反后可得 Z=+YG+RY+RG=·YG·RY·RG(3.2.13) 根据式(3.2.13)即可画出全部用与非门组成的逻辑电路,如图3.2.13所示。 图3.2.13例3.2.3的逻辑图二 若要求用非门和与或非门实现这个逻辑电路,则必须将式(3.2.11)化为最简与或非表达式。在第1章曾经讲过,最简与或非表达式可以通过合并卡诺图上的0,然后求反而得到。为此,将函数Z的卡诺图画出,如图3.2.14所示。 将图3.2.14中的0合并、求反得到 Z=Y+R+G(3.2.14) 对照式(3.2.14)画出的用与或非门组成的逻辑电路图,如图3.2.15所示。 图3.2.14例3.2.3的卡诺图 图3.2.15例3.2.3的逻辑图三 (三) 课后篇 3.2.6课后巩固——练习实践 1. 知识巩固练习 3.2.6.1试分析题图3.2.6.1所示电路的逻辑功能。 题图3.2.6.1 3.2.6.2如题图3.2.6.2所示电路是一个多功能函数发生器,其中C2、C1、C0为控制信号,x、y为数据输入。(1)写出输出L的逻辑表达式并化简为最简与或式。(2)列表说明当C2C1C0为不同取值组合时,输出端L的逻辑功能。 3.2.6.3一水箱由大、小两台水泵ML和MS供水,如题图3.2.6.3所示。水箱中设置了3个水位检测元件A、B、C。水面低于检测元件时,检测元件给出高电平; 水面高于检测元件时,检测元件给出低电平。现要求当水位超过C点时水泵停止工作; 水位低于C点而高于B点时MS单独工作; 水位低于B点而高于A点时ML单独工作; 水位低于A点时ML和MS同时工作。试用门电路设计一个控制两台水泵的逻辑电路,要求电路尽量简单。 题图3.2.6.2 题图3.2.6.3 3.2.6.4设计一个电话机信号控制电路。电路有I0(火警)、I1(盗警)和I2(日常业务)三种输入信号,通过排队电路分别从L0、L1和L2输出,在同一时间只能有一个信号通过。如果同时有两个以上信号出现时,应首先接通火警信号,其次为盗警信号,最后是日常业务信号。试按照上述轻重缓急设计该信号控制电路。要求用集成门电路7400(每片含4个二输入与非门)实现。 3.2.6.5试设计一个4位的奇偶校验器,即当4位数中有奇数个1时输出为0,否则输出为1。(可以采用各种逻辑功能的门电路来实现。) 3.2.6.6某产品有A、B、C三项指标,至少有两项达标(必须包含A)时才算合格,试用与非门设计符合上述规定的逻辑电路。 题图3.2.6.7 2. 工程实践练习 3.2.6.7人类有A、B、O、AB四种常见血型,输血时输血者血型与受血者血型必须符合题图3.2.6.7中用箭头指示的关系。试设计一个逻辑电路,判断输血者与受血者的血型是否符合上述规定。要求: (1)利用仿真软件完成电路的仿真; (2)利用口袋实验包完成电路的搭建与调试。 3.2.7本节思维导图 知识拓展——国内芯片设计企业: 华为海思 集成电路国产化进程 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 2004年,在原有ASIC设计中心基础上成立了深圳市海思半导体有限公司,即华为海思(HISILICON,HI是HUAWEI,SILICON是硅)。海思公司主要从事手机芯片、移动通信系统设备芯片、传输网络设备芯片、家庭数字设备芯片等设计,海思公司的安防监控领域产品所占全球市场份额已达到90%。美国不允许台积电公司给华为公司代工,影响最大的是华为公司的麒麟系列手机芯片,该芯片是集成了手机基带、CPU、GPU和电源管理芯片等的SoC芯片,其生产工艺水平要求高、难度大,目前国内最好的中芯国际公司也处于工艺研发阶段,尚无法大规模量产,急需更多的科研人才付出努力。 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 3.3编码器 (一) 课前篇 本节导学单 1. 学习目标 根据《布鲁姆教育目标分类学》,从知识维度和认知过程两方面进一步细化本节课的教学目标,明确学习本节课所必备的学习经验。 知 识 维 度 认 知 过 程 1. 回忆2. 理解3. 应用4. 分析5. 评价6. 创造 A. 事实性知识说出编码器的基本概念及分类 B. 概念性知识回忆常用逻辑门电路的逻辑符号,逻辑表达式及真值表 C. 程序性知识回忆组合逻辑电路设计的一般步骤画出集成优先编码器引脚功能、真值表应用门电路设计普通二进制编码器分析普通二进制编码器不足,用门电路设计优先编码器利用集成芯片设计按键显示系统的电路,会借助仿真软件进行验证,会利用口袋实验包进行电路搭建与调试 续表 知 识 维 度 认 知 过 程 1. 回忆2. 理解3. 应用4. 分析5. 评价6. 创造 D. 元认知知识明晰学习经验是理解新知识的前提根据概念及学习经验迁移得到新理论的能力在不断地发现问题、分析问题、解决问题的过程中体会精益求精的科学态度通过电路的设计、仿真、搭建、调试,培养科学的工程思维 2. 导学要求 根据本节的学习目标,将回忆、理解、应用层面学习目标所涉及的知识点课前自学完成,形成自学导学单。 3.3.1课前自学——编码器的定义及分类 如图3.3.1所示,这些图片都很熟悉,有运动员的号码簿、居民身份证号码,还有商品的条形码。编码就是用一组代码按一定规则表示某种事物或信息,是社会管理中的一种常用方法。在数字系统中,为了区分一系列不同的事物,将其中的每个事物用一个二进制码表示。能够实现这种编码功能的逻辑部件称为编码器。 图3.3.1生活中的编码 编码器有若干输入,对每一个有效的输入信号,编码器产生一组唯一的二进制码输出。因为数字系统只有0和1两个数符,一位二进制数只能区分两个不同的信号。一般而言,N个不同的信号至少需要n位二进制数编码。N和n之间满足下列关系: 2n≥N(3.3.1) 例如,有10个按键S0~S9,将其完全区分开至少需要4位二进制码。 由于逻辑电路中信号都是以高、低电平的形式给出。因此编码器的逻辑功能就是将输入的每一个高、低电平信号编成一个对应的二进制码输出。图3.3.2为二进制编码器结构图,它有2n个高、低电平输入,对应有n位二进制码输出。 编码器分为普通编码器和优先编码器。普通编码器任何时刻只允许一个输入信号有效,否则将产生错误输出; 优先编码器允许多个输入信号同时有效,输出仅对优先级别最高的输入信号进行编码。 图3.3.2二进制编码器的结构框图 3.3.2课前自学——预习自测 3.3.2.1对全班43个学生以二进制码编码表示,最少需要二进制码的位数是()。 3.3.2.2计算机键盘上有101个按键,若用二进制码进行编码,至少需要()位二进制数,第99个键的二进制码为()。 (二) 课上篇 图3.3.34线2线普通二进制 编码器框图 3.3.3课中学习——普通二进制编码器 以4线2线普通二进制编码器为例,分析普通编码器的工作原理。图3.3.3是4线2线普通二进制编码器的框图,它的输入是4个电平信号I0~I3,高电平有效,输出是2位二进制码Y1Y0。 输出与输入对应关系如表3.3.1所示,根据真值表设计编码器电路。4个输入I0~I3为高电平有效,任何时刻只能有一个取值为1,并且有一组对应的二进制码输出。除表中列出4个输入变量的4种取值组合有效外,其余12种组合对应的输出均应为0。 表3.3.14线2线编码器真值表 输入输出 I0I1I2I3Y1Y0 100000 010001 001010 000111 由真值表可以得到如下逻辑表达式: Y1=01I23+012I3(3.3.2) Y0=0I123+012I3(3.3.3) 任何时刻只有一个输入为1,如果将表3.3.1中没有列出的12种组合所对应的输出看作无关项,并化简得 Y1=I2+I3(3.3.4) Y0=I1+I3(3.3.5) 式(3.3.4)和式(3.3.5)是考虑了无关项的简化结果,比式(3.3.2)和式(3.3.3)简单。 3.3.4课中学习——优先编码器 在实际应用中经常会遇到两个以上的输入同时有效的情况,因此必须根据轻重缓急事先规定好这些输入编码的先后次序,即优先级别。识别这类请求信号的优先级别并进行编码的逻辑电路称为优先 图3.3.474148逻辑符号 编码器。编码器应用广泛,为了方便使用将编码器电路模块化,制成了标准化的集成器件。下面介绍集成优先编码器74148。 1. 集成优先编码器74148 74148逻辑符号如图3.3.4所示。I0~I7是8个输入端; Y2~Y0是3个输出端。此外还有三个控制端: GS是优先编码工作状态标志; EI是输入使能端; EO是输出使能端。 74148功能表如表3.3.2所示,在EI=0时,优先编码器正常工作,允许I0~I7中同时有几个输入端为低电平,即有编码输入信号,但是编码器仅对级别最高的编码器进行编码。从74148的功能表中不难看出,I7的级别最高,I0的级别最低。当I7=0时,无论其他输入端有无输入信号(表中以“×”表示),输出端只对I7进行编码,Y2Y1Y0=000,即反码输出。当I7=1,I6=0时,无论其他输入端有无输入信号,只对I6编码,输出为Y2Y1Y0=001。其余输入状态可自行分析。 表3.3.274148功能表 输入输出 EII0I1I2I3I4I5I6I7Y2Y1Y0GSEO 1××××××××11111 01111111111110 0×××××××000001 0××××××0100101 0×××××01101001 0××××011101101 0×××0111110001 0××01111110101 0×011111111111 00111111111101 2. 8421码编码器 利用集成优先编码器74148和门电路即可实现8421码编码器,如图3.3.5所示。输入仍为低电平有效,输出为8421码。 图3.3.58421码编码器 其工作原理: 当I9、I8无输入(I9、I8均为高电平)时,与非门G4的输出A3=0,同时使74148的EI=0,允许74148工作,74148对输入I0~I7进行编码。如I5=0,则Y2Y1Y0=010,经门G1、G2、G3处理后,A2A1A0=101,所以总输出A3A2A1A0=0101,这正好是5的8421码。当I9或I8有输入(低电平)时,与非门G4的输出Y3=1,同时使74148的EI=1,禁止74148工作,使得Y2Y1Y0=111。如果此时I9=0,则输出A3A2A1A0=1001; 如果I8=0,则输出A3A2A1A0=1000,这正好是9和8的8421码。 (三) 课后篇 3.3.5课后巩固——练习实践 1. 知识巩固练习 3.3.5.1试用4片8线3线优先编码器74148组成32线5线优先编码器的逻辑图,允许附加必要的门电路。 3.3.5.2试用74148设计键盘编码电路,10个按键分别对应十进制数0~9,编码器的输出为8421码。要求按键9的优先级别最高,并且有工作状态标志,以区分没有按键按下和按键0按下两种情况。 2. 工程实践练习 3.3.5.3利用口袋实验包完成具有优先功能的10个按键编码电路的搭建与调试。 3.3.6本节思维导图 知识拓展——国内芯片制造企业: 中芯国际 集成电路国产化进程 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 2018年,华为公司、中兴公司被美国制裁,最主要的“卡脖子”技术就是芯片制造技术。目前中国内地规模最大、技术最先进、首家能提供14nm先进制程技术的集成电路芯片制造企业是中芯国际集成电路制造有限公司(简称中芯国际)。作为全球排名第四的芯片代工厂商,其主要业务是根据客户本身或第三方的集成电路设计为客户制造集成电路芯片。中芯国际是内地高科技产业在美国制裁下唯一可以实现14nm FinFET量产的芯片代工企业,代表着内地自主研发集成电路制造技术的最先进水平,距离芯片制造龙头台积电公司3nm工艺相差2、3代的技术工艺,亟须集中国内优势人才设备,补足缺项,迎头赶上。 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 3.4译码器/数据分配器 (一) 课前篇 本节导学单 1. 学习目标 根据《布鲁姆教育目标分类学》,从知识维度和认知过程两方面进一步细化本节课的教学目标,明确学习本节课所必备的学习经验。 知 识 维 度 认 知 过 程 1. 回忆2. 理解3. 应用4. 分析5. 评价6. 创造 A. 事实性知识说出译码器的基本概念及分类 B. 概念性知识回忆常用逻辑门电路的逻辑符号,逻辑表达式及真值表 C. 程序性知识回忆组合逻辑电路设计的一般步骤画出集成译码器、集成显示译码器引脚功能、真值表应用门电路设计二进制译码器应用集成译码器实现组合逻辑函数。应用集成译码器实现数据分配器对比评价译码器实现组合逻辑函数和门电路实现组合逻辑函数的方法和步骤利用集成芯片设计应用电路,会借助仿真软件进行验证,会利用口袋实验包进行电路搭建与调试 D. 元认知知识明晰学习经验是理解新知识的前提根据概念及学习经验迁移得到新理论的能力将知识分为若干任务,主动思考,举一反三,完成每个任务类比评价也是知识整合吸收的过程通过电路的设计、仿真、搭建、调试,培养工程思维 2. 导学要求 根据本节的学习目标,将回忆、理解、应用层面学习目标所涉及的知识点课前自学完成,形成自学导学单。 3.4.1课前自学——译码器的定义及分类 译码是编码的逆过程,它的功能将具有特定含义的二进制码转换成对应输出的高/低电平信号。具有译码功能的逻辑电路称为译码器。译码器常用在计算机和其他类型系统中实现I/O的选择。 常见的译码器分为二进制译码器、二十进制译码器和显示译码器三类。二进制译码器输入是一组二进制码,输出是一组与输入代码一一对应的高、低电平信号; 二十进制译码器是将输入的10个BCD码译成对应的高/低电平输出信号; 显示译码器将BCD码译成数码管所需要的驱动信号,使数码管用十进制数字显示出BCD码所表示的数值。 3.4.2课前自学——显示译码器 1. 七段字符显示器 图3.4.1表示七段数字显示器发光段组合,显示0~9阿拉伯数字。这种数码管的每一段都是一个发光二极管(LED),因而也称它为LED数码管或LED七段显示器。有些数码显示器增加了一段,作为小数点。 图3.4.1七段数字显示器发光段组合 发光二极管构成的七段显示器有两种,分别为共阴极电路和共阳极电路,如图3.4.2所示。共阴极电路中,8个发光二极管的阴极连在一起接低电平,需要某一段发光,就将相应二极管的阳极接高电平。共阳极显示器的驱动则刚好相反。 图3.4.2二极管显示器等效电路 2. 显示译码器的逻辑功能 显示译码器的功能是将BCD码转换为显示器所需要的七段代码,如图3.4.3所示。以共阴极显示器为例来分析显示译码器的工作过程。例如,要显示9,共阴极显示器的a、b、c、f、g段发光二极管要点亮,因此a、b、c、f、g引脚为1。所以显示译码器的功能就是将9对应的BCD码1001转换为共阴极显示器所需要的七段代码1110011。 图3.4.3显示译码器功能框图 进而可以得到显示译码器的真值表,如表3.4.1所示。 表3.4.1显示译码器的真值表 输入输出 Q3Q2Q1Q0abcdefg 00001111110 00010110000 00101101101 00111111001 01000110011 01011011011 01101011111 01111110000 10001111111 10011110011 根据真值表可以画出输出a~g的卡诺图,如图3.4.4所示。 图3.4.4BCD七段显示译码器的卡诺图 在卡诺图上采用“合并0然后求反”的化简方法将a~g化简,得到 a=321Q0+3Q210 b=3Q21Q0+3Q2Q10 c=32Q10 d=Q210+21Q0+Q2Q1Q0 e=Q0+Q21 f=Q1Q0+32Q0+2Q1 g=321+Q2Q1Q0(3.4.1) 根据式(3.4.1)用门电路即可得到显示译码器电路。 图3.4.57447七段显示 译码器逻辑符号 3. 集成显示译码器 常用集成七段显示译码器有两类: 一类译码器输出高电平有效信号,用来驱动共阴极显示器;另一类译码器输出低电平有效信号,用来驱动共阳极显示器。下面介绍常用七段显示译码器7447。 7447七段显示译码器逻辑符号如图3.4.5所示,功能表如表3.4.2所示。当输入8421码时,输出低电平有 表3.4.27447七段显示译码器功能表 十进制 数字或 功能 输入输出 LTRBIA3A2A1A0BI/RBOabcdefg显示 字型 011000010000001 11×000111001111 21×001010010010 31×001110000110 41×010011001100 51×010110100100 61×011011100000 71×011110001111 81×100010000000 91×100110001100 101×101011110010 111×101111100110 121×110011011100 131×110110110100 141×111011110000 151×111111111111熄灭 BI××××××01111111熄灭 RBI10000001111111灭零 LT0×××××10000000试灯 效,用以驱动共阳极显示器。该集成显示译码器设有三个控制端LT、RBI、BI/RBO,用以扩展电路的功能。 7447七段显示译码器控制端的功能如下: (1) 测灯输入LT: 当LT=0时,不论RBI和A3A2A1A0输入为何值,数码管的七段全亮,用以检查该数码管各段能否正常发光,正常工作时应将LT置为1。 (2) 灭零输入RBI: 设置灭零输入信号的目的是把不希望显示的零熄灭。例如,有一个8位的数码显示电路,整数部分为5位,小数部分为3位,在显示13.7这个数时将呈现00013.700字样。如果将前、后多余的零熄灭,则显示的结果将更加醒目。当RBI=0且A3A2A1A0输入0000时,此时执行灭零操作。 (3) 灭灯输入/灭零输出BI/RBO: 作为输入端使用时,称灭灯输入控制端。只要BI=0,无论A3A2A1A0是什么状态,数码管的各段同时熄灭。作为输出端使用时,称为灭零输出端。只有当输入A3=A2=A1=A0=0,而且有灭零输入信号(RBI=0)时,RBO才会为0,表示译码器已将本来应该显示的零熄灭。 将灭零输入端和灭零输出端配合使用即可实现多位数码显示系统的灭零控制,如图3.4.6所示。只需将整数部分高位RBO与低位RBI相连,小数部分低位RBO与高位RBI相连,就可以把前、后多余零熄灭。在这种连接方式下,整数部分只有高位是零且被熄灭的情况下,低位才有灭零输入信号。同理,小数部分只有在低位是零而且被熄灭时,高位才有灭零输入信号。 图3.4.6有灭零控制的8位数码显示系统 3.4.3课前自学——预习自测 3.4.3.1显示译码器7447可以驱动共()数码管。 3.4.3.2用显示译码器7447驱动七段数码管时,发现数码管只显示1、3、5、7、9,试分析故障可能在哪里? (二) 课上篇 3.4.4课中学习——二进制译码器 二进制译码器输入是一组二进制码,输出是一组与输入代码一一对应的高/低电平信号。 图3.4.7二进制译码器结构 1. 工作原理 二进制译码器结构如图3.4.7所示,输入的n位二进制码共有2n种状态,译码器将每个输入代码译成对应的一根输出线上的高/低电平信号,因此也把这个译码器称为n线2n线译码器。 下面以2线4线译码器为例,分析译码器的工作原理和电路结构,其中2线表示2个输入变量,4线表示有4个输出端。两个输入变量A1、A0有4种不同状态组合,因而译码器有4个输出信号Y3~Y0,并且输出为低电平有效。2线4线译码器真值表如表3.4.3所示。 表3.4.32线4线译码器真值表 输入输出 EA1A0Y3Y2Y1Y0 1××1111 0001110 0011101 0101011 0110111 另外,设置了使能控制端E,当E为1时,无论A1、A0为何种状态,输出全部为1,译码器处于非工作状态。而当E为0时,根据A1、A0的状态组合,使得对应输出为0,其余输出为1。例如,A1A0=01时,输出Y1为0,其余输出Y3、Y2、Y0均为1。由此可见,译码器是通过输出端逻辑电平以识别不同代码。 根据真值表写出各输出端的逻辑表达式: Y3=·A1A0 Y2=·A1A0 Y1=·A1A0 Y0=·A1A0(3.4.2) 根据逻辑表达式画出逻辑图,如图3.4.8所示。 2. 集成译码器 常用集成译码器有2线4线译码器74139和3线8线译码器74138。 1) 2线4线集成译码器74139 2线4线译码器74139逻辑符号如图3.4.9所示,它有两个独立的译码器封装在一个集成芯片中。A1、A0为输入端,E为使能控制端,低电平有效,Y3~Y0为输出端,低电平有效。当E为1时,无论A1、A0为何种状态,输出全部为1,译码器处于非工作状态。而当E为0时,根据A1A0的输入组合译成相应输出端的有效低电平。2线4线译码器74139真值表如表3.4.3所示。 图3.4.82线4线译码器逻辑图 图3.4.92线4线译码器74139逻辑符号 2) 3线8线集成译码器74138 3线8线译码器74138的逻辑符号和引脚图如图3.4.10所示,该译码器有三个二进制输入A2、A1、A0,它们共有8种组合状态,即可译出8个输出信号Y7~Y0,低电平有效。 图3.4.103线8线译码器74138的逻辑符号和引脚图 此外,还设置了G1、G2A、G2B三个控制端。当G1=1,G2A=G2B=0时,译码器处于工作状态,根据A2A1A0译成对应输出上的有效低电平信号; 否则译码器不工作,所有的输出端被封锁在高电平。3线8线译码器74138真值表如表3.4.4所示。 表3.4.43线8线译码器74138真值表 输入输出 G1G2AG2BA2A1A0Y0Y1Y2Y3Y4Y5Y6Y7 ×1××××11111111 ××1×××11111111 0×××××11111111 10000001111111 10000110111111 10001011011111 10001111101111 10010011110111 10010111111011 10011011111101 10011111111110 由真值表可得出3线8线译码器74138各个输出的表达式: Y0=G12A2B210 Y1=G12A2B21A0 Y2=G12A2B2A10 Y3=G12A2B2A1A0 Y4=G12A2BA210 Y5=G12A2BA21A0 Y6=G12A2BA2A10 Y7=G12A2BA2A1A0(3.4.3) 当G1=1,G2A=G2B=0时,式(3.4.3)可简化为 Y0=210=m-0 Y1=21A0=m-1 Y2=2A10=m-2 Y3=2A1A0=m-3 Y4=A210=m-4 Y5=A21A0=m-5 Y6=A2A10=m-6 Y7=A2A1A0=m-7(3.4.4) 由式(3.4.4)可知,Y0~Y7同时又是A2、A1、A0这三个变量的全部最小项的译码输出,所以这种译码器也称为最小项译码器。 3. 应用 1) 扩展 利用译码器的控制端可以方便地扩展译码器容量。图3.4.11是将两片74138扩展为4线16线译码器。其中74138(1)为低位片,74138(2)为高位片,将高位片的G1与低位片的G2A相连作为A3,将高位片的G2A、G2B与低位片的G2B相连作为使能端E。其工作原理: 当E=1时,两个译码器都禁止工作,输出全为1; 当E=0时,译码器工作。这时,如果A3=0,高位片禁止,低位片工作,输出Y0~Y7由输入二进制码A2A1A0决定; 如果A3=1,低位片禁止,高位片工作,输出Y8~Y15由输入二进制码A2A1A0决定。可见,这样可以实现4线16线译码器功能。 图3.4.11两片74138扩展为4线16线译码器 例3.4.1试用四片74138和一片74139构成5线32线译码器,输入为5位二进制码B4B3B2B1B0,对应输出L0~L31为低电平有效信号。 解: 列出5线32线译码器的真值表,如表3.4.5所示。 表3.4.55线32线译码器的真值表 输入输出 B4B3B2B1B0L0L1L2L3L4…L27L28L29L30L31 0000001111…11111 0000110111…11111 0001011011…11111 0001111101…11111 0010011110…11111  1101111111…01111 1110011111…10111 1110111111…11011 1111011111…11101 1111111111…11110 从表3.4.5可以看出,当B4B3=00,而B2B1B0从000变化到111时,对应L0~L7中有一个输出为0,其余输出全为1,因此4片74138中,设置片(1)为译码状态,其余3片为禁止译码状态,对应的输出L8~L31全为1。 以此类推,当B4B3=01,而B2B1B0从000变化到111时,对应L8~L15中有一个输出为0,其余输出全为1,此时设置片(2)为译码状态。当B4B3=10和11时,分别设置片(2)和片(3)为译码状态。因此,将5位二进制码的低三位B2B1B0分别与4片74138的三个地址输入端并接在一起。 高位B4B3有4种状态组合,因此接入74139的两个地址输入A1A0,74139的4个有效输出信号分别接入4片74138的低使能控制端,使4片74138在B4B3的控制下轮流工作在译码状态。这样就得到5线32线译码器,逻辑图如图3.4.12所示。 图3.4.12例4.4.1的逻辑图 思考: 如果要构成6线64线译码器,需要几片74138? 2) 实现组合逻辑函数 由式(3.4.4)可以看出,当G1=1,G2A=G2B=0时,若将A2、A1、A0作为3个输入逻辑变量,则8个输出端分别与3输入变量最小项相对应。利用附加的门电路将这些最小项适当地组合起来,就可以产生组合逻辑函数。 例3.4.2试用集成译码器74138和门电路实现组合逻辑函数L=AB+BC+AC。 解: 将逻辑函数转换成最小表达式,即 L=BC+AC+AB+ABC=m3+m5+m6+m7(3.4.5) 由图3.4.9和式(3.4.4)可知,只要令集成译码器74138的输入A2=A,A1=B,A0=C,则逻辑函数L的最小项表达式即可用编号的形式表示,如式(3.4.5)所示。由于译码器的输出以m-l形式给出,所以还需要把L变换为m-l的形式。 将最小项表达式转换成与非与非形式,即 L=m3+m5+m6+m7=m-3·m-5·m-6·m-7(3.4.6) 根据74138的功能,Y3=m-3,Y5=m-5,Y6=m-6,Y7=m-7,则有 L=Y3·Y5·Y6·Y7(3.4.7) 用一片74138加一个与非门就可实现逻辑函数L,逻辑图如图3.4.13所示。 图3.4.13例3.4.2逻辑图 例3.4.3某组合逻辑电路的真值表如表3.4.6所示,试用译码器和门电路设计该逻辑电路。 表3.4.6例3.4.3的真值表 输入输出 ABCLFG 000001 001100 010101 011010 100101 101010 110011 111100 解: 根据真值表写出各输出的最小项表达式,即 L=C+B+A+ABC=m1+m2+m4+m7 F=BC+AC+AB=m3+m5+m6 G=+B+A+AB=m0+m2+m4+m6 (3.4.8) 将最小项表达式转换成与非与非形式,即 L=m-1·m-2·m-4·m-7 F=m-3·m-5·m-6 G=m-0·m-2·m-4·m-6 (3.4.9) 设A=A2,B=A1,C=A0,将L、F、G的逻辑表达式与74138的输出表达式相比较,则有 L=Y1·Y2·Y4·Y7 F=Y3·Y5·Y6 G=Y0·Y2·Y4·Y6 (3.4.10) 用一片74138加三个与非门就可实现该组合逻辑电路,逻辑图如图3.4.14所示。 3) 数据分配器 数据分配是将公共数据线上的数据根据需要送到不同的通道,实现数据分配功能的逻辑电路称为数据分配器。它的作用相当于多个输出的单刀多掷开关,其示意图如图3.4.15所示。 图3.4.14例3.4.3逻辑图 图3.4.15数据分配器示意图 数据分配器可以用译码器实现。例如,用3线8线译码器可以把1个数据信号分配到8个不同的通道。集成译码器74138作为数据分配器的真值表如表3.4.7所示。 如果将G2A接低电平,G1作为使能端,A2、A1、A0作为选择通道地址输入,G2B作为数据输入,将会得到与输入相反的数据波形。 数据分配器的用途比较多,比如用它将一台个人计算机(PC)与多台外部设备连接,将计算机数据分送到外部设备中。它还可以与计数器结合组成脉冲分配器,与数据选择器连接组成分时数据传送系统。 表3.4.7集成译码器74138作为数据分配器的真值表 输入输出 G1G2AG2BA2A1A0Y0Y1Y2Y3Y4Y5Y6Y7 00××××11111111 10D000D1111111 10D0011D111111 10D01011D11111 10D011111D1111 10D1001111D111 10D10111111D11 10D110111111D1 10D1111111111D 3.4.5课中学习——二十进制译码器7442 第1章已经讨论过8421码,对应于0~9的十进制数,由4位二进制数0000~1001表示。由于人们不习惯直接识别二进制数,所以采用二十进制译码器来解决。这种译码器应有4个输入端,10个输出端。它的功能表如表3.4.8所示,其输出低电平有效。例如,当输入8421码A3A2A1A0=0010时,输出Y2=0,它对应于十进制数2,其余输出为高电平。当输入超过8421码的范围(1010~1111)时,输出均为高电平,即没有译码输出。 表3.4.87442二十进制译码器功能表 数目 BCD输入输出 A3A2A1A0Y0Y1Y2Y3Y4Y5Y6Y7Y8Y9 000000111111111 100011011111111 200101101111111 300111110111111 401001111011111 501011111101111 601101111110111 701111111111011 810001111111101 910011111111110 1010101111111111 1110111111111111 1211001111111111 1311011111111111 1411101111111111 1511111111111111 (三) 课后篇 3.4.6课后巩固——练习实践 1. 知识巩固练习 3.4.6.1试用一片3线8线译码器74138和一个与非门设计一个3位数X2X1X0奇偶校验器。要求: 当输入信号为偶数个1(含0个1)时,输出信号F为1; 否则,为0。 3.4.6.2题图3.4.6.2为3线8线译码器74138构成的电路,试分析电路的逻辑功能。要求: (1)列出输出表达式; (2)列出真值表; (3)说明逻辑功能。 题图3.4.6.2 3.4.6.3试用3线8线译码器74138和若干与非门设计一个1位全加器。 3.4.6.4某雷达站有A、B、C三部雷达,其中雷达A和雷达B功率消耗相等,雷达C的功率是A的2倍。这些雷达由两台发电机X和Y供电,发电机X的最大输出功率等于雷达A的功率消耗,发电机Y的最大输出功率是X的3倍,要求用译码器74138和门电路设计一个逻辑电路,能够根据各雷达的启动和关闭信号,以最节约电能的方式启、停发电机。 3.4.6.5已知函数F(D,C,B,A)=∑m(2,5,7,8,10,12,15),试用3线8线译码器74138和最少的门电路设计实现该逻辑函数的电路。 3.4.6.6设计一个监视交通信号灯工作状态的逻辑电路。每一组信号灯由红、黄、绿三盏灯组成。正常工作情况下,任何时刻必有一盏灯点亮,而且只允许有一盏灯点亮。而当出现其他五种点亮状态时,电路发生故障,这时要求发出故障信号,以提醒维护人员前去修理。试用译码器74138及门电路设计满足上述控制要求的逻辑电路。要求: 列出真值表,写出逻辑表达式,画出电路图。 3.4.6.7某产品有A、B、C、D四项指标,至少有三项达标(必须包含A)时才算合格,试用一片3线8线译码器74138和最少的门电路设计符合上述规定的逻辑电路。 2. 工程实践练习 3.4.6.8利用口袋实验包完成数码管直观显示的10个按键显示系统电路的搭建与调试。要求: 当某一个按键按下后,能够用数码管直观显示出该按键所对应的十进制数。 3.4.7本节思维导图 知识拓展——OLED屏国产先锋: 京东方公司 集成电路国产化进程 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ OLED因拥有LCD无法比拟的画质、柔性和设计优势而成为目前手机首选屏幕,而这一领域技术被韩国三星公司、LG公司等掌握,国内只能拿到二流产品。直到京东方OLED屏被华为公司、VIVO公司等采用,2020年,京东方公司首入苹果公司供应商名单,实现我国OLED屏的国产替代和技术自主可控。京东方公司就是我国在1956年建成的北京电子管厂(代号国营774厂),曾是20世纪60年代亚洲最大的电子管厂。 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 3.5数据选择器 (一) 课前篇 本节导学单 1. 学习目标 根据《布鲁姆教育目标分类学》,从知识维度和认知过程两方面进一步细化本节课的教学目标,明确学习本节课所必备的学习经验。 知 识 维 度 认 知 过 程 1. 回忆2. 理解3. 应用4. 分析5. 评价6. 创造 A. 事实性知识说出数据选择器基本概念 B. 概念性知识回忆常用逻辑门电路的逻辑符号,逻辑表达式及真值表 C. 程序性知识回忆组合逻辑电路设计的一般步骤画出集成数据选择器引脚、功能、真值表应用门电路设计数据选择器应用集成数据选择器实现组合逻辑函数,序列信号发生器以及多路数据分时传送对比评价数据选择器实现组合逻辑函数和译码器实现组合逻辑函数的方法和步骤利用集成芯片设计应用电路,会借助仿真软件进行验证,会利用口袋实验包进行电路搭建与调试 D. 元认知知识明晰学习经验是理解新知识的前提根据概念及学习经验迁移得到新理论的能力将知识分为若干任务,主动思考,举一反三,完成每个任务类比评价也是知识整合吸收的过程通过电路的设计、仿真、搭建、调试,培养工程思维 2. 导学要求 根据本节的学习目标,将回忆、理解、应用层面学习目标所涉及的知识点课前自学完成,形成自学导学单。 3.5.1课前自学——数据选择器的定义 在数字信号的传输过程中,有时需要从多路输入数据中选出某一路数据传送到公共数据线上,实现数据选择功能的逻辑电路称为数据选择器。它的作用相当于多个输入的单刀多掷开关,如图3.5.1所示。根据n位地址选择信号,从2n个输入信号中选择一个输入信号送到输出。 图3.5.1数据选择器示意图 下面以4选1数据选择器为例,说明数据选择器的工作原理及基本功能,其真值表如表3.5.1所示。 表3.5.14选1数据选择器真值表 输入输出 GA1A0D3D2D1D0Y 1××××××0 0 00 01 10 11 ×××00 ×××11 ××0×0 ××1×1 ×0××0 ×1××1 0×××0 1×××1 为了对4个数据输入进行选择,使用2位地址码输入A1A0,产生4个地址信号。任何时候A1A0只有一种可能的取值,使对应的那一路数据通过,送达Y端。使能输入G是低电平有效,当G=1时,无论地址码是什么,输出Y总是等于0;当G=0时,根据地址码选择对应的数据输入送到Y端。 根据真值表可得出输出Y的表达式: Y=(10D0+1A0D1+A10D2+A1A0D3)· (3.5.1) 根据式(3.5.1)可得到4选1数据选择器的逻辑图,如图3.5.2所示。 图3.5.24选1数据选择器的逻辑图 3.5.2课前自学——预习自测 3.5.2.1用十六进制数的方式写出16选1数据选择器的各地址码。 3.5.2.2用32选1数据选择器选择数据,若选择的输入数据为D20、D17、D18、D27、D31,依次写出对应的地址码。 (二) 课上篇 3.5.3课中学习——集成数据选择器及其应用 1. 集成数据选择器 常见的集成数据选择器有双4选1数据选择器、8选1数据选择器等。 1) 双4选1数据选择器74153、74253 74153、74253的逻辑符号相同,如图3.5.3所示。 从图3.5.3中可以看出,一个芯片内部含有两个4选1数据选择器,所以称为双4选1数据选择器。两个数据选择器共用地址输入A1、A0,使能信号E、数据输入信号D0~D3、数据输出Y相互独立,实现根据地址输入从4路数据输入中选择一路送到输出的功能。74153的真值表如表3.5.2所示。 表3.5.274153的真值表 输入输出 使能E 地址选择 A1A0Y 1××0 000D0 001D1 010D2 011D3 74253与74153的区别: 当E=1时,74153输出0,而74253输出为高阻状态,因此74253具有三态输出功能。利用这一特点,可以将多个芯片的输出端连在一起,共用一根数据传输线。 2) 8选1数据选择器74151、74251 74151、74251的逻辑符号相同,如图3.5.4所示。 图3.5.374153/74253的逻辑符号 图3.5.474151/74251的逻辑符号 从图3.5.4中可以看出,它有3个地址输入端A2、A1、A0,可选择D0~D7共8路数据,具有两个互补输出端Y和,使能输入端E低电平有效。74151的真值表如表3.5.3所示。 表3.5.374151的真值表 输入输出 使能E 地址选择 A2A1A0Y 1×××01 0000D00 0001D11 0010D22 0011D33 0100D44 0101D55 0110D66 0111D77 74151输出Y的表达式为 Y=∑7i=0miDi(3.5.2) 74251与74151的区别: 当E=1时,74151输出0,而74251输出为高阻状态,因此74251具有三态输出功能。利用这一特点,可以将多个芯片输出端连在一起,共用一根数据传输线。 2. 应用 1) 扩展 利用数据选择器的控制端可以方便地实现数据选择器的通道扩展。图3.5.5是将两片74151和3个门电路扩展为16选1数据选择器。其中74151(1)为低位片,74151(2)为高位片,将低位片74151(1)的使能控制端E经一个非门门反相后与高位片74151(2)的E相连,E作为最高位的地址选择信号A3。若A3=0,则74151(1)工作,根据A3~A0从D0~D7中选择一路输出; 若A3=1,则74151(2)工作,根据A3~A0从D8~D15中选择一路输出。因此,该电路实现了16选1功能。 图3.5.5两片74151扩展为16选1数据选择器 2) 构成组合逻辑函数 根据8选1数据选择器输出与输入的关系式(3.5.2),有 Y=∑7i=0miDi 式中: mi为地址选择输入端A2、A1、A0构成的最小项。 数据输入作为控制信号,当Di=1时,其对应的最小项mi在表达式中出现; 当Di=0时,其对应的最小项就不出现。利用这一点将函数变换成最小项表达式,函数的变量接入地址选择输入端,就可以实现组合逻辑函数。 当逻辑函数的变量个数和数据选择器的地址输入变量个数相同时,可直接用数据选择器来实现逻辑函数。 例3.5.1试用8选1数据选择器74151实现逻辑函数L=AB+BC+AC。 解: (1) 将逻辑函数转换成最小项表达式: L=AB+BC+AC=BC+AC+AB+ABC=m3+m5+m6+m7 (2) 将输入变量接至数据选择器的地址输入端,即A=A2,B=A1,C=A0。输出变量接至数据选择器的输出端,即L=Y。将逻辑函数L的最小项表达式与74151的功能表相比较,显然L式中出现的最小项对应的数据输入端接1,L式中没有出现的最小项对应的数据输入端接0,即D3=D5=D6=D7=1,D0=D1=D2=D4=0。 (3) 画出逻辑电路图,如图3.5.6所示。 当逻辑函数的变量个数大于数据选择器的地址输入变量个数时,不能用前述的简单办法,这时应分离出多余的变量,把它们加到适当的数据输入端。 例3.5.2试用4选1数据选择器实现逻辑函数L=AB+BC+AC。 解: 方法一。 (1) 由于函数L有三个输入信号A、B、C,而4选1数据选择器仅有两个地址输入端A1和A0,所以选A、B接到地址输入端,且A=A1,B=A0,将逻辑函数转换成最小项表达式: L=AB+BC+AC=BC+AC+AB+ABC =1A0C+A10C+A1A0(C+) =m0·0+m1·C+m2·C+m3·1 (2) 将逻辑函数L的最小项表达式与4选1数据选择器的表达式进行对照,确定出数据输入端: D0=0,D1=C,D2=C,D3=1。 (3) 画出逻辑电路图,如图3.5.7所示。 图3.5.6例3.5.1的逻辑电路图 图3.5.7例3.5.2的逻辑电路图 方法二。 (1) 由于函数L有三个输入信号A、B、C,而4选1数据选择器仅有两个地址输入端A1和A0,所以选A、B接到地址输入端,且A=A1,B=A0。 (2) 将C加到适当的数据输入端。做出逻辑函数L的真值表,如表3.5.4所示。 表3.5.4例3.5.2真值表 ABCL 0000 0010 0100 0111 1000 1011 1101 1111 当A=0,B=0时(表中第一、二行),无论C取何值,L都为0,所以D0=0; 当A=0,B=1时(表中第三、四行),L的取值与C相同,所以D1=C; 当A=1,B=0时(表中第五、六行),L的取值与C相同,所以D2=C; 当A=1,B=1时(表中第七、八行),无论C取何值,L都为1,所以D3=1。 图3.5.8数据并行 输入转换成串行输出 (3) 画出逻辑电路图,如图3.5.7所示。 3) 实现并行数据到串行数据的转换 图3.5.8为由8选1数据选择器构成的并/串行转换的电路图。数据选择器地址输入端A2、A1、A0从000到111依次变化,则选择器的输出Y随之接通D0,D1,D2,…,D7。当选择器的数据输入端D0~D7与一个并行8位数11011001相连时,输出端得到的数据依次为11011001,即串行数据输出。 4) 多路数据的分时传送 数据选择器、数据分配器和传输总线连接构成的信号传输系统示意图如图3.5.9所示。该系统将多个数据信号中的一路信号连接到总线,经过远距离传送后,由数据分配器再将总线上的数据分配到被选中的多个目的地之一。这种信息传输的基本原理在通信系统、计算机网络系统以及计算机内部各功能部件之间的信息传送等都有广泛的应用。 图3.5.9多路数据的分时传送 (三) 课后篇 3.5.4课后巩固——练习实践 1. 知识巩固练习 3.5.4.1试用4选1数据选择器分别实现下列逻辑函数: (1) L(A,B)=∑m(0,1,3) (2) L(A,B,C)=∑m(0,1,5,7) (3) L=AC+(+) 3.5.4.2试用8选1数据选择器实现下列逻辑函数: (1) L(A,B,C)=∑m(0,1,4,5,7)(2) L(A,B,C,D)=∑m(0,3,5,8,13,15) 3.5.4.3某保密锁的逻辑控制电路如题图3.5.4.3所示,图中的A、B、C为三个按钮,按下为1; D代表钥匙输入信号,插入为1; F代表开锁信号,Z代表报警信号,均为1有效。试分析电路,列出真值表,写出F、Z的表达式并解出开锁信号的密码,指出何种情况下会报警。 3.5.4.4试用2片8选1数据选择器74151扩展成16选1数据选择器,在4位地址输入选通下,产生一序列信号0100101110011011。 3.5.4.5设计一个监视交通信号灯工作状态的逻辑电路。每组信号灯由红、黄、绿三盏灯组成。正常工作情况下,任何时刻必有一盏灯点亮,而且只允许有一盏灯点亮。而当出现其他五种点亮状态时,电路发生故障,这时要求发出故障信号,以提醒维护人员前去修理。试用8选1数据选择器74151及门电路设计满足上述控制要求的逻辑电路。要求: 列出真值表,写出逻辑表达式,画出电路图。 3.5.4.6人有A、B、AB、O四种血型,输血时输血者血型与受血者血型必须符合题图3.5.4.6中用箭头指示的授受关系。试用数据选择器设计一个逻辑电路,判断输血者与受血者的血型是否符合上述规定。 题图3.5.4.3 题图3.5.4.6 3.5.4.7试用74253扩展为8选1数据选择器并实现逻辑函数F=AB+B+C。 3.5.4.8试用8选1数据选择器设计一个4位奇偶校验判断电路,当输入为奇数个1时输出为1,否则输出为0。 3.5.4.9设计一个多功能组合逻辑电路,M1、M0为功能选择输入信号,a、b为逻辑变量,F为电路的输出。当M1、M0取不同的数值时,电路具有题表3.5.4.9所示的逻辑功能。试用8选1数据选择器74151和最少的门实现此电路。 题表3.5.4.9题3.5.4.9电路的功能表 M1M0Y 00a 01ab 10ab 11a+b 2. 工程实践练习 3.5.4.10利用口袋实验包完成多路复用显示器电路的搭建与调试,要求用一个显示译码器驱动两个数码管分时显示。 3.5.5本节思维导图 知识拓展——国内MCU芯片企业: 兆易创新公司 集成电路国产化进程 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 兆易创新公司成立于2005年,是一家立足于IC解决方案和存储技术的芯片设计公司,随着多年的产品线不断拓宽与技术并购,目前已成为“存储+MCU+传感器”三位一体的国内领先的半导体解决方案供应商。在MCU芯片技术领域,4位、8位、16位等低端单片机芯片国内自给率较高,而32位以上中高端MCU市场则主要被Microchip、ST、Renesas、NXP等国外大厂垄断。兆易创新公司率先在32位MCU产品领域布局,在国内32位MCU的发展历史上创造了四个“第一颗”: 2013年4月,发布第一颗国产CortexM3 32位 MCU; 2016年6月,发布第一颗国产CortexM4 32位 MCU; 2018年10月,发布第一颗 CortexM23 32位MCU; 2019年8月,发布第一颗国产RSICV 32位MCU。实现了中高端单片机产品的国产替代,主打产品已在汽车工业类、工控类、消费类的产品性能指标上达到国际大厂水平。 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 3.6加法器 (一) 课前篇 本节导学单 1. 学习目标 根据《布鲁姆教育目标分类学》,从知识维度和认知过程两方面进一步细化本节课的教学目标,明确学习本节课所必备的学习经验。 知 识 维 度 认 知 过 程 1. 回忆2. 理解3. 应用4. 分析5. 评价6. 创造 A. 事实性知识说出半加器、全加器的基本概念 B. 概念性知识回忆常用逻辑门电路的逻辑符号,逻辑表达式及真值表阐释超前进位基本原理 C. 程序性知识回忆组合逻辑电路设计的一般步骤画出集成加法器引脚功能、真值表应用门电路设计半加器、全加器,串行进位加法器。应用集成加法器实现代码转换分析串行进位加法器的不足,设计超前进位加法器对比评价串行进位加法器和超前进位加法器利用集成芯片设计应用电路,会借助仿真软件进行验证,会利用口袋实验包进行电路搭建与调试 D. 元认知知识明晰学习经验是理解新知识的前提根据概念及学习经验迁移得到新理论的能力在不断地发现问题、分析问题、解决问题的过程中体会精益求精的科学态度类比评价也是知识整合吸收的过程通过电路的设计、仿真、搭建、调试,培养工程思维 2. 导学要求 根据本节的学习目标,将回忆、理解、应用层面学习目标所涉及的知识点课前自学完成,形成自学导学单。 3.6.1课前自学——1位加法器 1. 半加器 如果不考虑有来自低位的进位将两个1位二进制数相加,称为半加。实现半加运算的电路称为半加器。 按照二进制加法运算规则可以列出如表3.6.1所示的半加器的真值表。表中,A、B是两个加数,S是相加的和,CO是向高位的进位。 表3.6.1半加器的真值表 输入输出 ABSCO 0000 0110 1010 1101 将S、CO和A、B的关系写成逻辑表达式,即 S=B+A=AB CO=AB(3.6.1) 因此,半加器是由一个异或门和一个与门组成,如图3.6.1所示。 图3.6.1半加器 2. 全加器 将两个多位二进制数相加时,除了最低位以外,每一位都应该考虑来自低位的进位,因此将加数、被加数和来自低位进位3个数相加,这种运算称为全加。实现全加运算的电路称为全加器。 根据二进制加法运算规则可列出1位全加器的真值表,如表3.6.2所示。 表3.6.2全加器的真值表 输入输出 ABCISCO 00000 00110 01010 01101 10010 10101 11001 11111 根据真值表直接写出S和CO的逻辑表达式,再经代数法化简得 S=CI+BCI+ACI+ABCI =(BCI)+A(BCI) =ABCI(3.6.2) CI=BCI+ACI+ABCI+ABCI =CI(AB)+AB(3.6.3) 根据式(3.6.2)和式(3.6.3)画出全加器的逻辑电路图如图3.6.2(a)所示,全加器的逻辑符号如图3.6.2(b)所示。 图3.6.2全加器 3.6.2课前自学——预习自测 3.6.2.1试用半加器设计全加器电路。 3.6.2.2试用8选1数据选择器74151实现1位二进制全减器将两个多位二进制数相减时,除了最低位以外,每一位都应该考虑来自低位的借位,因此将对应位的减数、被减数和来自低位借位3个数相减,这种运算称为全减,所用的电路称为全减器。。 (二) 课上篇 3.6.3课中学习——多位加法器 1. 串行进位加法器 半加器、全加器只能实现1位二进制数相加,若有多位数相加如何实现?比如,有2个4位二进制数A3A2A1A0和B3B2B1B0相加,可以采用4个全加器构成4位数加法器,如图3.6.3所示。将低位的进位输出作为高位的进位输入。因此,任何一位的加法运算都必须等到第一位的运算完成之后才能进行,将这种进位方式称为串行进位。这种加法器的逻辑电路简单,n位二进制数相加只需要n个全加器即可。 图3.6.34位串行进位加法器 串行进位加法器中每个全加器的进位输出连接到下一个高一级的全加器的输入(一级对应一个全加器),任何一级的输出及进位必须在上一级的进位到来后才能产生。这将引起加法过程中出现时间延迟,如图3.6.3所示。每个全加器进位传输延迟是指在假设输入A和B已经送入情况下从输入进位加到输出进位产生之间的时间。 2. 超前进位加法器 为了提高运算速度,必须设法减小或消除由于进位信号逐级传递所耗费的时间。那么高位的进位输入信号能否在相加运算开始时就知道?加到第i位的进位输入信号是这两个加数第i位以前各位状态的函数,所以第i位的进位输入信号(CI)i一定能由Ai-1Ai-2…A0以及Bi-1Bi-2…B0唯一确定。根据这个原理,就可以通过逻辑电路事先得出每一位全加器的进位输入信号,而无须再从最低位开始向高位逐位传递进位信号,这就有效地提高了运算速度。采用这种结构形式的加法器称为超前进位加法器。 下面具体分析超前进位信号的产生原理。从全加器的真值表3.6.2可以看出,以下两种情况下会产生进位输出信号: ①A和B都为1,也就是AB=1时,此时CO=1; ②A或B有一个为1且CI=1,也就是A+B=1且CI=1,此时CO=1。综合两种情况,两个多位数中第i位相加产生的进位输出(CO)i可表达为 (CO)i=AiBi+(Ai+Bi)(CI)i(3.6.4) 若将AiBi定义为进位生成函数Gi,同时将Ai+Bi定义为进位传递函数Pi,则式(3.6.4)可改写为 (CO)i=Gi+Pi(CI)i(3.6.5) 将上式展开后,得到 (CO)i=Gi+Pi(CI)i =Gi+Pi[Gi-1+Pi-1(CI)i-1] =Gi+PiGi-1+PiPi-1[Gi-2+Pi-2(CI)i-2]  =Gi+PiGi-1+PiPi-1Gi-2+…+PiPi-1…P1G0(3.6.6) 由式(3.6.6)可知,因为进位信号只与变量Gi、Pi和C0有关,而C0是向最低位的进位信号,其值是0,所以各位的进位信号都只与两个加数有关,它们是可以并行产生的。 3.6.4课中学习——集成加法器及其应用 1. 集成超前进位加法器74283 集成超前进位加法器74283逻辑符号和芯片引脚图如图3.6.4所示。 图3.6.44位超前进位加法器74283 2. 应用 1) 扩展 用两片74283构成一个8位二进制数加法器,如图3.6.5所示。该电路的级联是串行进位方式,低位片74283(1)的进位输出连到高位片74283(2)的进位输入。 图3.6.5加法器串行进位扩展 2) 代码变换 加法器除了构成加法运算电路外,还可以实现代码变换。 例3.6.1试设计一个将8421码转换为余三码的逻辑电路。 解: 余三码作为输出,用F3F2F1F0表示; 8421码作为输入,用X3X2X1X0表示。由第1章有关内容可知,8421码与余三码之间算术表达式可写为 F3F2F1F0=X3X2X1X0+0011(3.6.7) 由于输出与输入仅差一个常数,用加法器实现设计最简单。将8421码连接到74283的一组输入端,另一组输入端接二进制数0011,输出即为余三码,电路如图3.6.6所示。 例3.6.2由4位二进制数加法器74283构成的逻辑电路如图3.6.7所示,试分析电路逻辑功能。 图3.6.674283实现代码变换电路 图3.6.7例3.6.2的逻辑电路图 解: 该电路的突破口在M,将M分两种情况分析: (1) 当M=0时,有 Bi=bi0=bi(3.6.8) y3y2y1y0=a3a2a1a0+b3b2b1b0(3.6.9) 可以看出,当M=0时,电路实现加法运算。 (2) 当M=1时,有 Bi=bi1=b-i(3.6.10) y3y2y1y0=a3a2a1a0+b-3b-2b-1b-0+1(3.6.11) 可以看出,当M=1时,电路实现减法运算。 因此,该电路实现了4位二进制数的加/减法运算。 (三) 课后篇 3.6.5课后巩固——练习实践 1. 知识巩固练习 3.6.5.1题图3.6.5.1为超前进位加法器74283构成的代码转换器,若该代码转换器的输入ABCD为8421码,求其在M控制下输出何种代码,要求列出真值表。 3.6.5.2题图3.6.5.2为加法器74283构成的代码转换器,已知输入为2421码,试分析输出为何代码,并设计出输入与输出交换的电路。 题图3.6.5.1 题图3.6.5.2 3.6.5.3用一片74283将余3码转换为8421码。 2. 工程实践练习 3.6.5.4利用口袋实验包完成6个投票位的简易投票系统电路的搭建与调试。要求系统具有投票功能(可以做出二选一决定)、统计功能(统计选票数目)及显示(直观显示统计结果)功能。 3.6.6本节思维导图 知识拓展——我国巨型计算机赶超史 中国集成电路发展历程 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 国防科技大学的慈云桂教授经历了我国计算机从电子管、晶体管到集成电路的更新换代。他带领的研究团队在1958年9月研制出代号为“901”的我国最早电子管专用计算机。当国产晶体管刚研制出来,性能很不稳定时,慈教授团队没有抱怨,而是利用巧妙的电路设计弥补了晶体管的不足,在1964年研制出全国产化晶体管计算机。20世纪70年代国际计算机飞速发展之时,国内研制巨型机尚不具备科研条件,但慈教授团队没有停下步伐,继续埋头苦干,1977年研制出我国第一台百万次集成电路计算机“1513”,1983年研制出我国第一台一亿次“银河”巨型计算机,2009年研制出我国首台千万亿次计算机“天河一号”,2013年研制成功“天河二号”,首夺世界第一。实现我国巨型机从无到有,从弱到强的历史性转变。 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 3.7数值比较器 (一) 课前篇 本节导学单 1. 学习目标 根据《布鲁姆教育目标分类学》,从知识维度和认知过程两方面进一步细化本节课的教学目标,明确学习本节课所必备的学习经验。 知 识 维 度 认 知 过 程 1. 回忆2. 理解3. 应用4. 分析5. 评价6. 创造 A. 事实性知识说出数值比较器基本概念 B. 概念性知识回忆常用逻辑门电路的逻辑符号,逻辑表达式及真值表 C. 程序性知识回忆组合逻辑电路设计的一般步骤画出集成数值比较器符号图、真值表应用门电路设计1位、2位数值比较器。应用集成数值比较器实现扩展根据设计需求应用集成数值比较器设计电路利用集成芯片设计应用电路,会借助仿真软件进行验证,会利用口袋实验包进行电路搭建与调试 D. 元认知知识明晰学习经验是理解新知识的前提根据概念及学习经验迁移得到新理论的能力将知识分为若干任务,主动思考,举一反三,完成每个任务通过电路的设计、仿真、搭建、调试,培养工程思维 2. 导学要求 根据本节的学习目标,将回忆、理解、应用层面学习目标所涉及的知识点课前自学完成,形成自学导学单。 3.7.1课前自学——1位数值比较器 在一些数字系统中(如数字计算机)经常要求比较两个数字的大小,为完成这一功能所设计的各种逻辑电路统称为数值比较器。数值比较器就是对两个二进制数A、B进行比较的逻辑电路,比较结果有A>B、A<B以及A=B三种情况。 1位数值比较器是多位数值比较器的基础。当A和B都是1位数时,它们只能取0或1两种值,由此可写出1位数值比较器的真值表,如表3.7.1所示。 表3.7.11位数值比较器的真值表 输入输出 ABFA>BFA<BFA=B 00001 01010 10100 11001 由真值表得到如下逻辑表达式: FA>B=A FA<B=B FA=B=+AB (3.7.1) 根据表达式可以画出1位数值比较器的逻辑电路,如图3.7.1所示。 图3.7.11位数值比较器的逻辑电路 3.7.2课前自学——2位数值比较器 现在分析两位数字A1A0和B1B0的情况,用FA>B、FA<B和FA=B表示比较结果。当高位(A1、B1)不相等时,无须比较低位(A0、B0),两个数的比较结果就是高位比较的结果。当高位相等时,两数的比较结果由低位比较的结果决定。利用1位数值的比较结果,可以写出简化的真值表,如表3.7.2所示。 表3.7.22位数值比较器的真值表 输入输出 A1B1A0B0FA>BFA<BFA=B A1>B1×100 A1<B1×010 A1=B1A0>B0100 A1=B1A0<B0010 A1=B1A0=B0001 由表3.7.2可以写出如下逻辑表达式: FA>B=FA1>B1+FA1=B1FA0>B0 FA<B=FA1<B1+FA1=B1FA0<B0 FA=B=FA1=B1FA0=B0(3.7.2) 根据式(3.7.2)可画出2位数值比较器的逻辑电路,如图3.7.2所示。电路由1位数值比较器和门电路构成。根据的原则是: 如果高位不相等,则高位的比较结果就是两数的比较结果,与低位无关。这时,高位输出FA1=B1=0,使与门G1、G2、G3均封锁,而或门都打开,低位比较结果不能影响或门,高位比较结果则从或门直接输出。如果高位相等,即FA1=B1=1,使与门G1、G2、G3均打开,同时由于FA1>B1=0和FA1<B1=0作用,或门也打开,低位的比较结果直接送达输出端,即低位的比较结果决定两数谁大、谁小或者相等。 图3.7.22位数值比较器的逻辑电路 3.7.3课前自学——预习自测 3.7.3.1试用门电路设计2位二进制数的数值比较器。 (二) 课上篇 3.7.4课中学习——集成数值比较器及其位数扩展 1. 集成数值比较器7485 7485是4位集成数值比较器,其逻辑符号如图3.7.3所示。输入端包括A3~A0和B3~B0,输出端为FA>B、FA<B、FA=B,以及级联输入端IA>B、IA<B、IA=B,级联输入端便于与其他数值比较器输出相连,以便组成更多位数的数值比较器。 图3.7.3集成数值比较器7485 4位数值比较器7485的真值表如表3.7.3所示。4位数值比较器的比较原理和2位数值比较器的比较原理相同,都是从最高位A3和B3开始比较,若不相等,则该位的比较结果就是两数的比较结果。若最高位A3=B3,则再比较次高位A2和B2。以此类推。显然,若两数相等,则必须将比较进行到最低位才能得到结果。若4位数相等,最终的结果由级联输入决定。从表3.7.3可以看出,7485的三个级联输入中IA=B的级别最高。 表3.7.34位数值比较器7485的真值表 比 较 输 入级 联 输 入输出 A3,B3A2,B2A1,B1A0,B0IA<BIA=BIA>BFA<BFA=BFA>B A3<B3××××××100 A3=B3A2<B2×××××100 A3=B3A2=B2A1<B1××××100 A3=B3A2=B2A1=B1A0<B0×××100 A3>B3××××××001 A3=B3A2>B2×××××001 A3=B3A2=B2A1>B1××××001 A3=B3A2=B2A1=B1A0>B0×××001 A3=B3A2=B2A1=B1A0=B0001001 A3=B3A2=B2A1=B1A0=B0100100 A3=B3A2=B2A1=B1A0=B0×1×010 2. 位数扩展 数值比较器的扩展方式有串联扩展和并联扩展两种。图3.7.4为两个4位数值比较器串联而成为一个8位的数值比较器。对于两个8位数而言,如果高4位不相等,则比较的结果就是最终的结果,因此8位数值比较器的输出芯片7485(1)输出; 如果高4位相等,则比较的结果则由低4位决定,因此芯片7485(2)的输出接到芯片7485(1)的级联输入端。这种级联方式简单,但这种方式中比较的结果是逐级传递的。级联芯片数越多,传递时间越长,工作速度越慢。因此,当扩展位数较多时,常采用并联方式。 图3.7.4采用串联方式构成的8位数值比较器 图3.7.5是采用并联方式用5片7485组成的16位数值比较器。将16位二进制数按高低位次序分成4组,每组用1片7485进行比较,各组的比较是并行的。将每组的比较结果再经过1片7485芯片进行比较后得出比较结果。这样总的传递时间为2倍的7485的延迟时间。若用串联方式,则需要4倍的7485的延迟时间。 图3.7.5采用并联方式构成的8位数值比较器 (三) 课后篇 3.7.5课后巩固——练习实践 1. 知识巩固练习 3.7.5.1由4位数加法器74283和数值比较器7485构成的电路如题图3.7.5.1所示,试分析电路的逻辑功能。 题图3.7.5.1 3.7.5.2试用两片7485芯片实现9位二进制数的比较。 3.7.5.3试用两个4位数值比较器组成三个数判别电路。要求能够判别三个4位二进制数A(a3a2a1a0)、B(b3b2b1b0)、C(c3c2c1c0)是否相等、A是否最大、A是否最小,并分别给出“三个数相等”“A最大”“A最小”的输出信号。(可以附加必要门电路。) 2. 工程实践练习 3.7.5.4利用口袋实验包完成1位十进制数加/减法器电路的搭建与调试。 3.7.6本节思维导图 知识拓展——数字电路设计理论奠基人 世界集成电路发展历史 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 美国科学家克劳德·香农被誉为“信息论之父”,1938年,他的硕士学位论文《继电器与开关电路的符号分析》(A Symbolic Analysis of Relay and Switching Circuits)将布尔代数的“真”与“假”和电路系统的“开”与“关”对应起来,用1和0表示,并用布尔代数分析和优化开关电路,奠定了数字电路的理论基础,论证了数字计算机及数字电路逻辑设计的可能性,哈佛大学的Howard Gardner教授说: “这可能是20世纪最重要、最著名的一篇硕士学位论文。” ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 3.8用Verilog HDL描述组合逻辑电路 前面学习了各种组合逻辑电路功能模块,利用Verilog HDL可以实现硬件电路设计,本节将组合逻辑电路的三种建模技巧。 (一) 课前篇 本节导学单 1. 学习目标 根据《布鲁姆教育目标分类学》,从知识维度和认知过程两方面进一步细化本节课的教学目标,明确学习本节课所必备的学习经验。 知 识 维 度 认 知 过 程 1. 回忆2. 理解3. 应用4. 分析5. 评价6. 创造 A. 事实性知识 B. 概念性知识回忆C语言运算符阐释数据流建模、行为级建模和结构化建模的基本思想 C. 程序性知识回忆条件语句、循环语句、多路分支语句的语法规则应用三种建模方法描述组合逻辑电路类比评价三种建模方法设计组合逻辑电路,会借助仿真软件进行验证,会利用FPGA开发板进行电路搭建与调试 D. 元认知知识明晰学习经验是理解新知识的前提根据基本思想及学习经验迁移得到新理论的能力通过电路的设计、仿真、搭建、调试,培养工程思维 2. 导学要求 根据本节的学习目标,将回忆、理解、应用层面学习目标所涉及的知识点课前自学完成,形成自学导学单。 3.8.1课前自学——组合逻辑电路的数据流建模 对于基本单元逻辑电路,使用Verilog HDL提供的门级元件模型描述电路非常方便,但随着电路的复杂性增加,使用的逻辑门较多时,工作效率会降低。而数据流建模能在较高的抽象级别描述电路的逻辑功能,能够自动地将数据流描述转换成为门级电路。 在Verilog HDL中,数据流建模使用连续赋值语句对于wire型变量进行赋值,由关键词assign开始,后面跟着由操作数和运算符组成的逻辑表达式。 连续赋值语句的执行过程: 只要逻辑表达式右边变量的逻辑值发生变化,等式右边表达式的值会立即被计算出来并赋给左边的变量。注意,在assign语句中,左边变量的数据类型必须是wire型。 例如,2线4线译码器的连续赋值描述: module decoder_df (A1,A0,E,Y) inputA1,A0,E; output[3:0] Y; assignY[0]= ~ (~A1 & ~A0 & ~E); assignY[1]= ~ (~A1 & A0 & ~E); assignY[2]= ~ (A1 & ~A0 & ~E); assignY[3]= ~ (A1 & A0 & ~E); endmodule 不难发现,数据流建模根据电路的逻辑功能进行描述,不必考虑电路的组成以及元件之间的连接,是描述组合逻辑电路常用的一种方法。 3.8.2课前自学——预习自测 3.8.2.1假设m=4’b0101,按要求填写下列运算的结果: &m=,|m=,^m=,~^m=。 3.8.2.2试写出带有使能控制端的3线8线译码器的Verilog HDL数据流描述。 (二) 课上篇 3.8.3课中学习——组合逻辑电路的行为级建模 行为级建模一般使用always结构,通过条件语句、多路分支语句和for循环语句等描述电路。 1. 条件语句 Verilog语言中有三种形式的if语句,一般用法如下: if (条件表达式)语句或语句块 ; 或 if (条件表达式)语句或语句块1 ; else语句或语句块1; 或 if (表达式1)语句或语句块 1 ; else if (表达式2) 语句或语句块2 ; else if(表达式3)语句或语句块3 ; …… else; 例3.8.1使用ifelse语句对8选1数据选择器的行为进行描述。 解: 假设这个程序模块的名称为mux8to1_bh,输出端口为F,输入端口使用一个8位的向量D来表示数据输入D7、D6、D5、D4、D3、D2、D1、D0,选择输入端口使用一个3位的向量S来表示地址输入S2、S1、S0。于是,得到4选1数据选择器的行为描述代码如下: modulemux8to1_bh(D,S,F);//Verilog 1995 module port syntax input [7:0] D;//输入端口声明 input [2:0] S;//输入端口声明 output reg F;//输出端口及变量的数据类型声明 always@(D,S)//电路描述 if( S == 2’b000)F=D[0]; else if( S == 3’b001)F=D[1]; else if( S == 3’b010)F=D[2]; else if( S == 3’b011)F=D[3]; else if( S == 3’b100)F=D[4]; else if( S == 3’b101)F=D[5]; else if( S == 3’b110)F=D[6]; elseF=D[7]; endmodule 注意: 过程赋值语句只能给寄存器型变量赋值,因此,程序中将输出变量Y的数据类型定义成reg。 2. 多路分支语句 多路分支语句case语句的一般形式如下: case (控制表达式) 分支语句1: 语句块1; 分支语句2: 语句块2; …… 分支语句n: 语句块n; default:语句块n+1;//default语句可以省略 endcase 例3.8.2根据表3.4.1所示的功能,对共阴极的七段显示译码器的行为进行描述。 解: case语句是一条多路决策语句,因此使用case语句描述七段显示译码器更方便。使用位拼接运算符将输入端口D3D2D1D0拼接成一个4位的变量,输出端口abcdefg拼接成一个7位的变量。case语句的分支项按顺序排列,最后一个分支项default把其他非8421码输入的情况设置成全零输出,省去所有无用输入码的显示。其代码如下: module seg7_decoder( //Verilog 2001,2005 module port syntax input LE,RBI,BI,D3,D2,D1,D0,//输入端口声明 output reg a,b,c,d,e,f,g //输出端口及变量的数据类型声明 ); always @ (*) //电路描述 begin if (LT==0) {a,b,c,d,e,f,g}=7’b111_1111 ; //让显示器的七段都发光 else if ((RBI==0)&(D3D2D1D0=0000)) {a,b,c,d,e,f,g}=7’b000_0000 ; //灭零显示 else if (BI==0) {a,b,c,d,e,f,g}=7’b000_0000 ; //灭灯显示 else case({D3,D2,D1,D0}) 4’d0: {a,b,c,d,e,f,g}=7’b111_1110; //7e 4’d1: {a,b,c,d,e,f,g}=7’b011_0000; //30 4’d2: {a,b,c,d,e,f,g}=7’b110_1101; //6d 4’d3: {a,b,c,d,e,f,g}=7’b111_1001; //79 4’d4: {a,b,c,d,e,f,g}=7’b011_0011; //33 4’d5: {a,b,c,d,e,f,g}=7’b101_1011; //5b 4’d6: {a,b,c,d,e,f,g}=7’b001_1111; //1f 4’d7: {a,b,c,d,e,f,g}=7’b111_0000; //70 4’d8: {a,b,c,d,e,f,g}=7’b111_1111; //7f 4’d9: {a,b,c,d,e,f,g}=7’b111_1011; //7b default: {a,b,c,d,e,f,g}=7’b000_0000; //非8421码不显示 endcase end endmodule 3. for循环语句 for循环语句的一般形式如下: for(循环变量初始值;循环的条件;循环变量的步长)语句或语句块; 例3.8.3利用Verilog HDL描述一个具有使能输入端的3线8线译码器的行为,要求输出为低电平有效。 解: 该模块实现的功能与集成3线8线译码器74138类似,唯一区别是该模块使能信号只有一个高电平有效的使能信号,74138有三个使能信号。当使能信号EN=1时,针对循环变量x的变化,重复执行ifelse语句8次。具体代码如下: module decoder3to8 ( input [2:0] A, //输入端口声明 input EN, //输入端口声明 output reg [7:0] Y //输出端口及变量的数据类型声明 ); integer x; //声明一个整型变量x always @ (A,EN) begin Y=8’b1111_1111 ; //设置译码器输出的默认值 for(x=0;x<=7;x++) //循环8次 if ((EN==1)&&(A==x)) Y[x]=0; else Y[x]=1; end endmodule (三) 课后篇 3.8.4课后巩固——练习实践 1. 知识巩固练习 3.8.4.1试写出8线3线优先编码器的行为级描述,然后用Quartus Ⅱ软件进行逻辑功能仿真,并给出仿真波形。 3.8.4.2试用for循环语句对n位串行加法器的行为进行描述。 2. 工程实践练习 3.8.4.3利用FPGA开发板实现3.3~3.7节介绍的案例。 3.8.5本节思维导图 知识拓展——FPGA主要应用领域 集成电路先进技术介绍 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 最初的FPGA就是一个可编程的数字电路,内含很多逻辑块和连接线,使得数字电路设计和验证通过编程就可完成,主要应用在数字逻辑电路、逻辑接口电路、ADC采集电路、DAC转换电路等。例如,用FPGA设计一个24位乘法器,SRAM、SRAM或Flash存储芯片的接口控制器,计算机的PCI总线控制器等。近些年,FPGA发展内含存储单元、总线和各种功能模块,FPGA已可以完成配置成专用CPU、专用控制器等复杂功能系统,各类EDA软件让开发者像点菜一样配置它的各类资源,完成设计。应用领域也扩展到通信系统、数字信号处理、视频图像处理、高速接口、人工智能(AI)、集成(IC)设计等领域,尤其在军事领域的安全通信、雷达和声呐、电子战和精确控制等方面得到了广泛应用。 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 3.9子弹分装系统工程任务实现 3.9.1基本要求分析 学习完了理论知识,再来看看本章开始布置的工程任务——子弹分装系统。该系统要求: 按键输入每把枪安装子弹的数目并显示出来,系统自动按照输入数目将每把枪需要的子弹分装到瓶子中,同时将分装子弹总数存储在计算机上。虽然系统中计数器和寄存器在后续章中才会介绍,但是为了清楚阐述本章所介绍的逻辑模块在系统中的应用,这里仅介绍计数器和寄存器基本功能。与大多数系统一样,实现系统功能有很多种方法。通过学习系统结构和系统的工作原理,学会如何将多种逻辑功能模块相互连接起来形成一个完整的系统,以完成给定的任务。分析系统要求,可以将任务分为人机交互模块、代码转换模块、自动分装模块和数据传输模块,如图3.9.1所示。 图3.9.1系统框图 3.9.2模块电路设计 1. 人机交互模块 系统功能: 每把枪安装子弹最大数目的输入并显示。 电路构成: 编码器、寄存器、译码器、数码管。 如图3.9.2所示,键盘有10个按键,每个对应一个十进制数。当一个键按下时,编码器将有效电平转换为对应的8421码输出。寄存器A能够存储8位,对应于2个8421数。假定输入的子弹数目为50个,因此,首先通过键盘输入并转成对应的8421码0101,存于寄存器中; 接下来输入0并转成对应的8421码0000存入寄存器中。 图3.9.2人机交互模块电路1 如图3.9.3所示,译码器A将寄存器A送来的8421码转换成2个数字所对应的七段码,用于显示子弹数。实际上译码器A由2个显示译码器7447组成,以同时显示2个数字。 图3.9.3人机交互模块电路2 2. 代码转换模块 系统功能: 将8421码转换为二进制码。 电路构成: 加法器。 自动分装模块根据键盘输入的子弹数目进行自动分装,首先需要比较器实现对于输入的每瓶子弹数目与瓶中装入的实际子弹数目进行比较。由于比较器输入的是二进制码,而寄存器存储的是8421码,因此需要一个能够把8421码转换为二进制码的代码转换电路。代码转换电路如图3.9.4所示。 二进制码左移一位等于未左移的二进制码×2。也就是说,二进制码左移2位加上左移5位加上左移6位就可以等效于二进制码乘以100; 二进制码左移1位加上左移3位就可以等效于二进制码乘以10。由于8421码每一位的权重与二进制数前4位的权重相同,因此利用加法和移位即可实现8421码向二进制码的转换。代码转换电路如图3.9.5所示。 图3.9.4代码转换电路 图3.9.5代码转换电路 3. 自动分装模块 系统功能: 按照输入的子弹数目实现自动分装。 电路构成: 编码器、寄存器、译码器、数码管。 需要设计的电路: 计数器、加法器、寄存器、代码转换器、比较器。 将代码转换电路的输出送入比较器进行比较。计数器用于计数装入瓶中的子弹数,并不断将计数器的计数值与设置值进行比较,只要计数器中计数值小于设定值,阀门将一直保持打开的状态; 当计数值达到设定值,比较器会产生一个高电平输出信号,关闭阀门,同时传送带送来另一个新的空瓶,计数器复位即计数值回到0,当比较器的输出回到零时打开阀门,重新开始向新的瓶中装入子弹。 瓶中子弹数与寄存器B中先前存储的子弹总数进行相加,得到新的子弹总数存储在寄存器B中,电路如图3.9.6所示。图中给出了在瓶中子弹数满50,先前在寄存器B中子弹总数为100时所对应的操作示意图。新的子弹总数值150代替原来的100。图3.9.6中8位数值比较器用两片4位数值比较器7485扩展即可实现,8位加法器用两片4位超前进位加法器74283串行扩展即可实现。 图3.9.6自动分装模块电路 4. 数据传输模块 系统功能: 将子弹分装的总数传输到计算机上。 电路构成: 译码器、数据选择器、数据分配器。 数据选择器寄存器B输出的8位并行数据转换成8位串行数据,传送到数据分配器。数据分配器将串行数据再转换成并行格式,送给计算机对子弹总数进行保存,电路如图3.9.7所示。 图3.9.7数据传输模块电路 3.9.3系统搭建 将各个功能模块电路拼接起来就构建了子弹分装系统,如图3.9.8所示,读者可以自行仿真。 图3.9.8子弹分装系统电路 3.10本章知识综合练习 3.10.1A3A2A1A0、B3B2B1B0、C3C2C1C0、E3E2E1E0是待传送的4路数据,试设计利用D3D2D1D0数据总线分时传送各路数据的逻辑电路。 3.10.2一把密码锁有A、B、C三个按键,当三个按键都不按下时,锁打不开,也不报警; 当只有一个按键按下时,锁不打开,但发出报警信号; 当有两个按键按下时,锁打开,但不报警; 当三个按键都同时按下时,锁被打开同时报警。按下述要求设计逻辑电路: (1)门电路; (2)3线8线译码器和与非门; (3)双四选一数据选择器和非门; (4)全加器。 3.10.3题图3.10.3电路由一片4位超前进位加法器74283、比较器7485与七段显示译码器7447及数码管组成的电路,试分析该电路的逻辑功能。 题图3.10.3 3.10.4试分别用7485、74283、74138、74153、74151芯片设计一个逻辑电路,当X2X1X0>5时,电路输出L为1,否则L为0。 3.11本章课程设计拓展 随着人们生活水平的提高和安全意识的加强,对安全的要求也就越来越高。锁自古以来就是把守护门的“铁将军”,人们对它要求甚高,既要安全可靠地防盗,又要使用方便,这也是制锁者长期以来研制的主题。随着电子技术的发展,各类电子产品应运而生,电子密码锁就是其中之一。电子密码锁的研究从20世纪30年代就开始了,这种锁是通过键盘输入一组密码完成开锁过程。电子锁的种类繁多,如数码锁、指纹锁、磁卡锁等,但较实用的还是按键式电子密码锁。简单的数字电路可实现密码不限次数重写,可靠性高,价格便宜。 电子密码锁设计要求: (1) 用按键输入4位十进制数字。 (2) 开锁信号。当输入正确密码时,给出开锁信号,用一个绿色指示灯表示输入密码正确; 如果输入密码错误,用红灯表示。而且依次只能亮一盏灯,红灯亮、绿灯灭表示关锁,绿灯亮、红灯灭表示开锁。 (3) 设置倒计时电路和自锁电路。如果密码在5s内未能输入正确,则发出报警信号并且自锁电路。 (4) 设置密码设置开关,当开关闭合后,允许设置密码,设置好密码后,打开此开关。 (5) 需要在输入密码开始时识别输入,并由此触发计时电路。 3.12本章思维导图