[! tldr] 本章将重点介绍组合逻辑电路的特点以及组合逻辑电路的分析方法和设计方法。首先讲述组合逻辑电路的共同特点和一般的分析方法和设计方法。然后就几种常用且经典的组合逻辑电路模块 ,从分析或设计的角度进行解读 ,并在模的块基础上 ,初步介绍如何用硬件描述语言描述组合逻辑电路。最后着重从物理概念上说明竞争 -冒险现象及其成因 ,并扼要地介绍消除竞争 -冒险现象的常用方法。
1. 概述
1.1. 组合逻辑电路的特点
数字电路根据逻辑功能的不同,可以分为两大类,组合逻辑电路和时序逻辑电路
组合逻辑电路的特点
在组合逻辑电路中,任意时刻的输出仅仅取决于该时刻的输入和逻辑电路本身的结构,与电路原来的状态无关。这就是组合逻辑电路在逻辑功能上的共同特点。
指向原始笔记的链接
1.2. 逻辑功能的描述
逻辑功能的描述
对于任何一个多输入、多输出的组合逻辑电路,都可以用下面的框图表示。
输入变量
和输出变量 的逻辑关系可以用一组逻辑函数表示, 或者写成向量函数的形式,
除了逻辑式之外,还有真值表、逻辑图、波形图等。
在设计和实现中,还需要对其动态参数—— 传输延迟时间
指向原始笔记的链接进行描述。
2. 组合逻辑的分析方法
组合逻辑的分析方法
通常采用的分析方法是从电路的输入到输出逐级写出逻辑函数式,最后得到表示输出与输人关系的逻辑函数式。然后用公式化简法或卡诺图化简法将得到的函数式化简或变换, 以使逻辑关系简单明了。为了使电路的逻辑功能更加直观,有时还可以将逻辑函数式转换为真值表的形式。
从电路图也可分析出该电路最重要的动态参数——传输延迟时间。假定每个门电路的传输延迟时间是
指向原始笔记的链接,则整个电路的传输延迟时间是 。
3. 组合逻辑电路的基本设计方法
组合电路的基本设计方法
在设计组合电路的时候,通常要求电路最简,即使用器件数少、器件种类少以及器件间连线最少。
1. 进行逻辑抽象
- 分析因果,确定输入和输出;
- 对输入变量和输出变量进行二进制编码;
- 对给定的因果关系列出真值表。
2. 写出逻辑函数式
将真值表转换为逻辑函数式,见第二章的真值表与逻辑函数式的相互转换。
3. 选定器件类型
可以用不同集成度的数字电路来实现功能。应该根据对电路的具体要求和器件的资源情况决定采用哪一种类型的器件。
4. 将逻辑函数化简或转换成适当的描述形式
在使用小规模集成的逻辑门电路进行电路实现时,为获得最简单的设计结果,应将函数式化成最简形式,即函数式相加的乘积项最少,而且每个乘积项中的因子也最少。
如果对所用器件的种类有附加的限制(例如只允许用单一类型的与非门),则还应将函数式变换成与器件种类相适应的形式(例如将函数式化作与非-与非形式)。
5. 根据化简或转换后的逻辑式,画出逻辑电路的连接图
至此 ,原性理设计(或称逻辑设计)已经完成。
6. 设计验证
对已经得到的原理图进行分析,或借助计算机仿真软件进行功能和动态特性仿真,验证其是否符合设计要求。
7. 工艺设计
为了将逻辑电路实现为具体的电路装置,还需要做一系列的工艺设计工作,包括设计印刷电路板,机箱面板,电源,显示电路等。最后还必须完成组装,调试。
指向原始笔记的链接
4. 若干常用的组合逻辑电路模块
有些逻辑功能电路经常大量地出现在各种数字系统当中,包括编码器、译码器、数据选择器、数值比较器运算器等。在设计实现复杂的电路时,可以调用这些已有的、经过使用验证的电路模块,作为设计电路的组成部分。
4.1. 编码器
编码器的逻辑功能在于将输入的每一个高、低电平信号编成一个对应的二进制代码。
目前经常使用的编码器有普通编码器和优先编码器两种。
4.1.1. 普通编码器
普通编码器
普通编码器中,任何时刻只允许输入一个编码信号,否则输出将发生混乱。
指向原始笔记的链接
4.1.2. 优先编码器
优先编码器
在优先编码器(priority encoder)电路中,允许同时输入两个以上的编码信号。不过在设计优先编码器时已经将所有的输入信号按优先顺序排了队,当几个输入信号同时出现时,只对其中优先权最高的一个进行编码。
指向原始笔记的链接[! question] 如何实现对输入信号的优先级进行限制的?
4.2. 译码器
码器 (decoder)的逻辑功能是将每个输入的二进制代码译成对应的输出高、低电平信号或另一外个代码。因此译码是编码的反操作。常用的译码器电路有二进制译码器、二-十进制译码器和显示译码器三类。
4.2.1. 二进制译码器
二进制译码器
二进制译码器的输入是一组二进制代码,输出是一组与输入代一码一一对应的高、低电平信号。
指向原始笔记的链接
4.2.2. 二-十进制译码器
二-十进制译码器
二-十进制译码器的逻辑功能是将输入 BCD 码的 10 个代码译成 10 个高、低电平输出信号。
对于 BCD 代以外码的伪码 ( 即
指向原始笔记的链接这 6 个代码 ) 均无低电平信号产生,译码器拒绝“翻译”。所以这个电路结构具有拒绝伪码的功能。
4.2.3. 显示译码器
显示译码器
七段字符显示器
指向原始笔记的链接
4.3. 数据选择器
4.4. 加法器
两个二进制数之间的算术运算无论是加、减、乘、除,目前在数字计算机中都是化做若干步加法运算进行的。因此,加法器是构成算术运算器的基本单元。
4.4.1. 1 位加法器
1 位加法器
半加器
半加器
如果不考虑有来自低位的进位,将两个 1 位二进制数相加,称为半加。实现半加运算的电路称为半加器。
有逻辑表达式为,
半加器使用一个异或门和一个与门即可实现。
指向原始笔记的链接全加器
指向原始笔记的链接全加器
将两个对应位的加数和来自低位的进位 3 个数相加,并输出一个和以及一个进位。这种运算称为全加,所用的电路称为全加器。
有逻辑式为,
指向原始笔记的链接
4.4.2. 多位加法器
多位加法器
串行进位加法器
串行进位加法器
两个多位数相加时每一位都是带进位相加的,因而必须使用全加器。
只要依次将低位全加器的进位输出端接在高位全加器的进位输入端即可构成。其缺点在于计算是串行的,计算速度慢。
指向原始笔记的链接超前进位加法器
指向原始笔记的链接超前进位加法器
我们知道,加到第
位的进位输人信号是这两个加数第 位以下各位状态的函数,所以第 位的进位输入信号 一定能由 和 唯一地确定。根据这个原理,就可以通过逻辑电路事先得出每一位全加器的进位输人信号,而无需再从最低位开始向高位逐位传。 相当于是用复杂度换计算速度,即通过逻辑函数将第
指向原始笔记的链接位是否需要进位判断出来。
4.5. 数值比较器
4.5.1. 位数值比较器
1 位数值比较器
当只有 1 位的时候,有三种情况,
指向原始笔记的链接
4.5.2. 多位数值比较器
多位数值比较器
比较两个多位数时,需要从高位往下比。
指向原始笔记的链接
5. 层次化和模块化的设计方法
层次化的设计方法是指“自顶向下”对整个设计任务进行分层和分块的划分,降低每层的复杂度,简化每个模块的功能;或“自底向上”地对每一个有限复杂度的模块进行实现或调用。模块化的设计方法是指将经过设计和验证的能完成一定功能的逻辑电路封装成为模块,在后续的设计中都可反复使用。
其核心都是将复杂电路逐级分解成简单模块,然后再将模块设计好并连接起来。
6. 可编程逻辑器件
从逻辑功能上,又能将数字集成电路分为通用型和专有型。
可编程逻辑器件(Programming Logic Device, PLD)的研制使得能通过器件编程来设定逻辑功能。能够由设计人员自行编程去将一个数字系统“集成”到一片 PLD 上,做成片上系统(System On Chip, SoC)。

7. 硬件描述语言
硬件描述语言 (HDL) 就是设计人员利用 EDA 工具描述电子电路的一种方法。利用硬件描述语言并借助 EDA 工具,可以完成从系统、算法、协议的抽象层次对电路进行建模、电路的仿真、性能分析直到 IC 版图或 PCB 版图生成的全部设计工作。
针对数字电子电路 ,硬件描述语言可以在不同的层次对结构,功能和行为进行描述。常见的硬件描述语言包括 Verilog、VHDL 等
Transclude of Verilog-基础
8. 用可编程通用模块设计组合电路
9. 组合逻辑电路中的竞争-冒险
需要观察输入信号逻辑电平发生变化的瞬间,电路的工作情况。
9.1. 竞争-冒险现象及其成因

拿(a)的与门举例。当输入信号 A 从 1 跳变到 0,同时 B 从 0 跳变到 1,而且 B 首先上升到
我们将门电路两个输入信和号同时向相反的逻辑电平跳变(一个从 1 变为 0,另一个从 0 变为 1)的现象称为竞争。竞争不一定产生尖峰脉冲。
由于竞争而在电路输出端可能产生尖峰脉冲的现象就称为竞争-冒险。
9.2. 检查竞争-冒险的方法
在输入变量每次只有一个改变状态的简单情况下,可以通过逻辑函数式来判断。
如果输出端门电路的两个输入信号
即输出端能在一定条件下简化为,
这种方法简单,但是局限性大。因为大多数情况的输入变量都有两个以上同时改变状态,如果输入变量增多,更难从逻辑函数式上找出。
另一类方法即用实验的手段来检测尖峰脉冲,通过加到输入端的信号波形包括所有可能发生的情况。
9.3. 消除竞争-冒险的方法
9.3.1. 接入滤波电容
因为一般的因为竞争-冒险产生的尖峰脉冲都很窄,通过引入滤波电容就能削弱至门电路的阈值以下。这种方法简单易行,缺点是增加了输出电压波形的上升和下降时间。
9.3.2. 引入选通脉冲
为的高电平出现在电路到达稳定状态以后 , 所以 G u ~ G ; 每个门的输出端都不会出现尖峰脉冲。但需注意 , 这时 G u ~ G ; 正常的输出信号也将变成脉冲信号 , 而且它们的宽度与选通脉冲相同





