组合逻辑电路

5/12/2022 DigitalCircuit

门电路实现了各种底层逻辑功能

将这些门电路进行排列组合,便变成了组合逻辑电路

组合逻辑电路概述

特点:当前时刻输出仅取决于该时刻的输入,与电路原来状态(历史状态)无关(时序)

电路结构:由逻辑门电路组成,输入输出都可是多个

电路特点:没有记忆单元,无反馈状态

数字电路可以分为组合逻辑电路时序逻辑电路,前者只和输入有关,后者不仅与输入有关还与历史状态有关

只要输入确定,输出就确定,可以绘制成一张真值表或使用一组逻辑函数表示

  • y1 = f1(a1,a2,...,an)
  • y2 = f2(a1,a2,...,an)
  • ......
  • yn = fn(a1,a2,...,an)

y为输出端,a为输入端

组合逻辑电路分析方法

图 ——> 功能

通过分析电路图,找出电路的逻辑功能

分析步骤:

  • 给定的逻辑电路
  • 输出逻辑函数式
  • 列真值表
  • 分析逻辑功能

以函数式为核心,向其看齐,一般通过真值表分析逻辑功能(猜谜)

练习一些电路的输入输出真值表,并对功能加以推测

常见功能:

  • 判断1数量的奇偶

    奇输出1,偶输出0

  • 判断输入二进制数的取值范围

    如0-3输出一个y1=1,y2=0,4-7输出两个y1=0,y2=1

  • 判断输入1的数量是否大于等于2

  • ......

当一个电路满足:

  • 判断1数量的奇偶,奇输出1,偶输出0
  • 判断输入1的数量是否大于等于2

它可以是一个加法器:

  • 输入A、B、C

    • A、B为要加的两个数
    • C为进位标识符
  • 输出Y1、Y2

    • Y2储存加的结果:偶数个1为0,奇数个1为1

      如1+1=0,1+0=1,0+1=1,0+0=0

      当有三个1,AB相加为0,C进位得1

    • Y1表示是否向上进位

组合逻辑电路设计方法

与分析方法互异

功能 ——> 图

根据实际逻辑问题,求出实现这一逻辑功能的最简单的逻辑电路

最简:

  • 电路所用器件数最少
  • 器件的种类最少
  • 器件之间的连线最少

设计步骤:

  • 进行逻辑抽象

    • 找到输入、输出变量

    • 对输入输出变量进行逻辑状态赋值

    • 列真值表

  • 写出逻辑函数式

  • 选定器件的类型

  • 将逻辑函数化简或变换成适当的形式

  • 画逻辑图

  • 工艺设计

逻辑抽象是重难点

例一:下山两条路,一真一假,村名两类人,一说真话一说假话,你碰到了一个村民,只能问一个问题,如何确定下山的路

答案:如果我问你右边这条路是否能够下山,你会回答吗?

  • 对于说假话的村民加了一层逻辑非:即这条路若能够下山,那么我是说假话的,我认为否,但提问的是是否会回答是,我此时确实认为要回答否,于是对于是否会回答是这一问题我要回答,但因为我要说假话,我又要回答

例二:交通信号灯故障,有以下故障情况,三灯都不亮,R/Y同时亮,A/G同时亮,R/Y同时亮,三灯同时亮。请做出一个判断信号灯是否故障的电路

三个输入:红(R)黄(Y)绿(G)灯

一个输出:是否出现故障(Z)

画真值表

R Y G Z
0 0 0 1
0 0 1 0
0 1 0 0
0 1 1 1
1 0 0 0
1 0 1 1
1 1 0 1
1 1 1 1

逻辑函数:Z = R'Y'G' + R'YG + RYG' + RY'G + RYG

通过卡诺图化简:Z = R'T'G' + RA + RG + AG

常用组合逻辑电路

编码器

数字

  • 表示数量多少
  • 编码,比如电话号码

编码:用文字、图像或数码表示特定对象的过程

编码器的逻辑功能:把输入的每一个高、低电平信号编制成一个对应的二进制代码

编码器

  • 普通编码器:同时只相应一个有效信号
  • 优先编码器:可以有多个同时相应,排队处理,有一个优先级的设定

八三编码器

八线三线编码器

属于普通编码器

任何时刻只允许输入一个编码信号,否则输出将混乱

输入为I1-I8,输出为Y1-Y3

同时只能有一个I高电平输入,如I2输入高电平,则Y1-Y3依次输出010,表示二进制数 2,若同时有两个I输入,就会崩坏

根据真值表可得

  • Y3=I4+I5+I6+I7
  • Y2=I2+I3+I6+I7
  • Y1=I1+I3+I5+I7

那么就可以画出一个相应的逻辑图设计门电路

优先编码器

允许同时输入两个或以上信号,并按优先级输出一个信号

通过一坨与门、或非门进行优先级的检测

  • 使用与门封锁同时进来的信号
  • 限制高低电平的通过

S为选通输入端

  • S'=0,正常工作
  • S'=1,输出端被封锁在高电平,即所有输出端Y'都是高电平(111)

Ys'为选通输出端

  • Ys = (I0' I1' I2' I3' I4' I5' I6' I7' S)'

Y(EX)'为扩展端,用于扩展编码功能

  • Y(EX)' = [(I0+I1+I2+I3+I4+I5+I6+I7)S]'

只要任何一个输入端有低电平输入且S=1(正常工作),Y(EX)'为低电平

大当家非为1,二当家才有效;大当家和二当家非为1,三当家才有效;以此类推

我们用低电平表示有效,节省功耗(但不利于理解)

Ys'` Y(EX)' 状态
1 1 不工作
0 1 工作但无输入
1 0 工作且有输入
0 0 不可能出现
16线4线优先编码器

高低八位输入,四位输出

高低位通过低八位的Ys'和高八位的S'连接,只有当低八位不工作或工作但无输入时,高八位才会正常工作

若低八位工作且有输入,高八位将不工作

十进制优先编码器

BCD编码:二进制转十进制编码器

译码器

编码的反操作,将每个输入的二进制码译成对应的输出高低电平信号

常用的译码器:二进制译码器,二-十进制译码器和显示译码器

二进制译码器

3线8线译码器

8线3线编码器的反操作

简单好用

低电平输出(低电平为有效,高电平为无效)

二极管与门阵列实现

二极管导通压降:0.7V

纯纯使用二极管正负导向和导通压降控制电流传输

缺点:

  • 输入电阻低,输出电阻较高
  • 输出高、低电平信号存在偏移

实际上不会使用二极管,而是使用三极管或CMOS

TTL与非门实现3-8译码器

附加控制端G:S2' = S3' = 0, S1 = 1时G输出1,其余情况输出0

当G输出为高电平时正常工作,当G输出低电平全部被封锁到高电平

该译码器也叫最小项译码器

与二极管阵列实现区别

  • 用逻辑门实现
  • 输出端低电平有效
  • 有3个附加控制端

4线16线译码器

用两片3线8线译码器组成,两个TTL的控制端相连,达到第一片和第二片不同时工作的效果

二-十进制译码器

将输入BCD码的是个代码译成10个高、低电平输出信号

  • Y0' = (A3' A2' A1' A0')'
  • Y1' = (A3' A2' A1' A0)'
  • Y2' = (A3' A2' A1 A0')'
  • Y3' = (A3' A2' A1 A0)'
  • Y4' = (A3' A2 A1' A0')'
  • Y5' = (A3' A2 A1' A0)'
  • Y6' = (A3' A2 A1 A0')'
  • Y7' = (A3' A2 A1 A0)'
  • Y8' = (A3 A2' A1' A0')'
  • Y9' = (A3 A2' A1' A0)'

显示译码器

七段字符显示器

分半导体数码管和液晶显示器两种

1、LED数码管

希望广而告之

半导体:好多二极管,公共阴极

优点:工作电压低、体积小、寿命长、可靠性高、响应时间短、亮度高

缺点:功耗大

2、液晶显示器

满足个人需求

液晶:一种有机化合物,颜色受外加电场影响

优点:功耗小,工作电压低

缺点:亮度差,响应速度低

BCD-七段显示译码器

驱动显示器件,数码管或液晶显示器

其逻辑函数经卡诺图化简可

  • Ya = [(A3' A2' A1' A0)+(A3 A1)+(A2 A0')]'
  • Yb = [(A3 A1)+(A2 A1 A0')+(A2 A1' A0')]'
  • Yb = [(A3 A2)+(A2' A1 A0')]'
  • Yd = [(A2 A1 A0)+(A2 A1' A0')+(A2' A1' A0)]'
  • Ye = [(A2 A1')+(A0)]'
  • Yf = [(A3' A2' A0)+(A2' A1)+(A1 A0)]'
  • Yg = [(A3' A2' A1')+(A2 A1 A0)]'

逻辑函数 ——> 电路图 ——> 电路器件

输入端

  • 正常输入端:A0 A1 A2 A3

  • 灭灵输入RBI:把不希望显示的零熄灭

  • 灯测试输入LT:当LT'=0,正常情况所有灯将被同时点亮

  • 灭灯输入/灭零输出BI'/RBO':双功能端

    • 作为输入端使用,成为输入控制端

      只要BI'=0,无论A怎么输入,数码管各段同时熄灭

    • 作为输出端使用,成为灭零输出端,与灭零输入端相连

用译码器设计组合逻辑电路

使用3线8线译码器设计一个多输出的组合逻辑电路

38译码器:最小项译码器,可以实现任意的三变量的组合逻辑电路

设计过程

  1. 将给定函数化成最小项和形式:每项都出现,每项不重复,如AC ——> ABC+AB'C = m0+m2
  2. 变换成与非的形式(非非的形式,为了用零表示有效输出):如m0+m2 ——> (m0'm2')'
  3. 根据38译码器设计相应电路

数据选择器

使用38译码器设计的组合逻辑电路只能有三个输入,为实现四个输入,引入数据选择器

四选一:三变量的组合逻辑函数

八选一(双四选一):四变量的组合逻辑函数

四选一选择器

从一组输入数据中选出某一个来,用到数据选择器,又叫多路选择开关:MUX

就类似于高中电路那种单刀双掷开关,四选一就是说单刀四掷开关

一个四选一选择器:

  • 地址线 A
  • 非门开关 S
  • 四个输入端口 Di
  • 一个输出端口 Y

判断是双四选一还是八选一电路:有几个地址线,双四选一为两个,八选一为一个

四选一选择器

  • Y1 = [D0(A1'A0') + D1(A1'A0) + D2(A1A0') + D3(A1A0)]S1

    其中一个四选一选择器

  • Y2 = [D0(A1'A0') + D1(A1'A0) + D2(A1A0') + D3(A1A0)]S2

    另一个四选一选择器

  • Y = Y1 + Y2

    八选一选择器输出

需要注意:S' = 0时,选择器正常工作,否则选择器被禁止工作,被封锁为低电平

S'也做扩展端用,作为片间的连接

八选一选择器

有三个地址线A0/A1/A2

两个四选一选择器的开关S1不能等于S2,即同时只有一个四选一起效,通常S1/S2通过一个反相器相连以实现

Y = D0(A2'A1'A0') + D1(A2'A1'A0) + D2(A2'A1A0') + D3(A2'A1A0) + D4(A2A1'A0') + D5(A2A1'A0) + D6(A2A1A0') + D7(A2A1A0)

同时再加一个输入控制端S',便构成了一个八选一数据选择器

用选择器设计组合逻辑电路

四选一选择器:Y = [D0(A1'A0') + D1(A1'A0) + D2(A1A0') + D3(A1A0)]S'

A1/A0作为两个输入变量,D0...D3为第三个变量的适当形式(如A0/A0'/A1/A1'),就可以产生任何形式的3变量组合逻辑函数

Z = R'A'G' + RA + RG + AG

化为Z = R'(A'G') + R(A'G) + R(AG') + 1(AG)

那么进行匹配,有

  • D0: R'
  • D1/D2: R
  • D3:1
  • A1:A
  • A0: G

S'直接接地,使正常工作,D3置空,A直连A1,G直连A0,R直连D1/D2,通过反相器连接D0

八选一选择器:Y = D0(A2'A1'A0') + D1(A2'A1'A0) + ... + D7(A2A1A0)

使用八选一选择器产生三变量逻辑函数:Z = A'B'C' + AC + A'BC

A2=A,A1=B, A2=C,然后存在项的Di置为1,不存在的项的Di置为0

加法器

没有减法器、乘法器,只有加法器,所有算术运算都是通过加法和移位来实现的

CPU ——> 运算器:加法器为核心

半加器

半加器:如1+1, 0+0, 0+1, 1+0,只考虑当前位值以及是否进位,只判断是否,不加

  • 当前位S = A异或B
  • 进位标志CO = AB

个位数的加法使用半加器即可

全加器,不仅考虑当前位数,并且考虑来自低位的进位CI,即要向上多考虑一位,A(1)+B(0)+CI(1) = 10

等于是有三个输入,即当前位的两个数和进位输入

全加器

串行进位加法器

必须使用多个全加器,依次将低位全加器的进位输出端CO接到高位输入端CI实现进位功能

超前进位加法器

串行的进位信号逐级传递的传输速度过慢,于是设计出超前进位加法器

两个多位数第i位相加产生的进位输出信号CO可以表示为:CO(i) = AiBi + (Ai+Bi)CI(i)

  • 即AB均为1 或 AB有一个为1且进位符为1
  • 这里CI(i)是未知的,是当前位的进位输入信号,实际上就是上一位的进位输出信号

AiBi定义为GiAi+Bi定义为Pi,则:

CO(i) = G(i) + P(i)CI(i)

= Gi + Pi[G(i-1) + P(i-1)CI(i-1)]

  • 就是将当前位的进位输入信号替换为上一位的进位输出信号,重复这一过程,将直接计算到最低位

CPU计算的速度远远大于信号传递的速度,对每一位都进行这样的计算,得到加法结果

优点:运算时间短

缺点:电路复杂,增加了成本,稳定性降低

以空间换时间

用加法器设计组合逻辑电路

通常用加法器实现两个逻辑变量相加

将8421码转换成余3码:

  • 余3码:就是正常的二进制数+3,比如6为0110,它的余3码就是1001
  • 可以保证进位信号的一致性

Y为输出,ABCD为输入:Y3Y2Y1Y0 = DCBA + 0011

数值比较器

1位数值比较器

如何比较A和B,底层使用与非门电路进行比较

A>B(A=1,B=0):AB' = 1

A<B(A=0,B=1):A'B = 1

A=B:A⊕B = 0

A B Y1'(A>B) Y2'(A<B) Y3'(A=B)
0 0 1 1 0
0 1 1 0 1
1 0 0 1 1
1 1 1 1 0
  • Y1' = (A'B)'
  • Y2' = [(A'B)'(AB')']'
  • Y3' = (AB')'

多位数值比较器

又高位到低位的逐位比较,只有高位相等时才需要比较低位

输出同样为三个:即大于、小于、等于

竞争-冒险现象

竞争:门电路的两个输入信号同时向相反的逻辑电平跳变的现象,二者跳变的顺序决定了不同的输出结果

竞争-冒险:由于竞争电路输出端出现尖峰脉冲的现象

  • 竞争是竞争-冒险的必要不充分条件

就比如:Y = AB,本来A=1, B=0, Y=0,在某一时刻,A->0, B->1,按道理来说Y仍为0,但二者跳变存在时间差,使得某一小段时间Y=1,这就叫尖峰脉冲,发生了竞争-冒险现象

  • 可能对电路系统造成损坏
  • 可能增加功耗

通过检查逻辑函数式判断是否存在竞争-冒险现象,并通过变换进行消除

检查方法

1、观察输出逻辑函数

若输出端的逻辑函数在一定条件下可化为Y=A+A', Y=AA',则可判定存在竞争冒险现象

2、使用实验检测

概率事件

举个栗子:

对于输出函数式Y = AB+A'C

当B=1且C=1时,Y=A+A',于是我们得知这个电路一定会存在竞争冒险现象

输出函数:Y = (A+B)(B'+C)

当A=C=0时,Y=BB',一定存在竞争冒险

消除竞争冒险

1、接入滤波电容

在输出端接一个小电容接地(通交流截直流)

优点:简单

缺点:增加了输出电压波形上升和下降时间,破坏波形(增加了相应时间)

2、修改逻辑设计

对于Y = AB+A'C,通常增加一个冗(rong)余输入变量BC

得:Y = AB+A'C+BC

当B=C=1,电路输出本就是1,不会出现突变

  • 增加冗余项消除竞争冒险

Summary

现在几乎所有的电路都具有记忆功能,但现在的组合逻辑电路只与当前输入有关,不具有记忆功能

组合逻辑电路的分析步骤:写出输出端逻辑表达式 - 化简变换逻辑表达式 - 列出真值表 - 确定功能

组合逻辑电路的设计步骤:根据设计要求列出真值表 - 写出逻辑表达式或画出卡诺图 - 化简和变换 - 画出逻辑图

常见的组合逻辑器件:译码器,数据选择器

Last Updated: 3/13/2024, 8:33:01 PM
妖风过海
刘森