分析与设计
组合逻辑电路的分析方法
[例1]
逐层推导得到函数表达式:
最终得到F表达式:
根据与或表达式得到真值表:
根据真值表,总结逻辑功能。将能够使输出成立的所有输入组合的共同特点,用语言总结起来。
换句话说就是在输入为多少时,输出成立
根据这张真值表,可以得到如下结论:
所有能够使输出为1的输入组合中,1的个数都是偶数。即三变量的检偶电路
这里多插一嘴,以后出现的检奇电路或者检偶电路指的都是检1的数
[例2]
逐层推导,得到函数表达式:
根据表达式得到真值表:
根据真值表总结逻辑功能:
- 输出S :三变量检奇电路
- 输出CO :三变量多数表决器
总结一下就是1 位二进制数的全加器
输入变量:
- A、B(相加的两个1位二进制数)
- CI (低位向本位的进位)
输出变量:
- S (相加后本位的结果)
- CO (本位向高位的进位)
组合逻辑电路的设计方法
[例1] 设计一个三变量多数表决器
逻辑分析与抽象,列写真值表:
化简与变形:
除了将上式通过公式法进行化简外,当然也可以用卡诺图:
得到 F = AB + AC + BC
选用对应的逻辑门器件,形成电路图:
[例2] 试用与非门设计一个3变量多数表决器,且A具有否决权
在例1的基础上分析:
因为A具有否决权,所以A为0时,F必为0
用卡诺图法进行化简:
不难得到 F = AB + AC
最后再用与非门画出电路图:
常用中规模组合逻辑器件
加法器
加法器原理
一位加法器的进位原理
半加器
不考虑低位向本位的进位的加法。但是,要考虑本位相加后,给高位的进位。
输入变量: A、B (相加的两个1位二进制数)
输出变量: S (相加后本位的结果); CO (本位向高位的进位)
全加器
要考虑低位向本位的进位的加法,也同样要考虑到本位相加后,向高位的进位。
输入变量:A、 B (相加的两个1位= 进制数) ; S (相加后本位的结果 )
输出变量:CI (低位向本位的进位); CO(本位向高位的进位)
用全加器实现半加器
让CI=0,即直接接地:
用半加器实现全加器
利用两次"半加"组合出一个"全加":
多位全加器的进位原理
串行进位加法器
以4位二进制数全加为例:
从低到高,一位一位加:
从右到左,由低位到高位:
因为0位没有给它进位的,所以CI接地:
C3即输出的最高位S4
超前进位加法器
超前进位加法器是对普通的全加器进行改良而设计成的并行加法器,主要是针对普通全加器串联时互相进位产生的延迟进行了改良。
超前进位加法器是通过增加了一个不是十分复杂的逻辑电路来做到这点的。
还是以4位二进制数全加为例:
- Si是相加后本位的结果
- Ci是本位向高位的进位
下面用两个变量代换一下:
看一下推导过程:
如果使用这种方式构成多位全加器,则逻辑门的延迟会发生累加,导致降低电路的计算效率下降。
超前进位加法器采取的方式是,将的逻辑函数代入到下一位,以此类推:
虽然看上去变复杂了,但是任何一位的计算都不需要等待上一位的结果,因为这是同时计算的
集成加法器
双1位二进制数全加器74LS183
- 74表示民品; 而54表示军品
- LS表示用的是TTL门电路
- 183表示的就是双1位二进制数全加器
这是一种比较常见的中规模逻辑器件的典型封装:
缺口用来表示1管脚的位置(1管脚位于缺口的下方)
4位二进制数全加器74LS283
加法器的级联扩展
[例1] 使用74LS183实现2位二进制数全加器
74LS183有两个1位二进制数全加器单元
具体实现方法如下:
其实也就是把低位加法的输出进位传给高位加法的输入进位
因为这道题的位数低,所以这里使用串行进位的方法
[例2] 使用74LS283实现8位二进制数全加器
一片74LS283只能实现4位的计算,因此要实现8位,就要两片74LS283:
这张图就体现了加法器的级联扩展:
数值比较器
基本原理
基本比较器
判别两个二进制数是否相等的比较器电路
这里的"是否相等"和"是否符合"是一个意思
这张图里从上到下分别是异或门和同或门:
- 两输入异或门的功能是输入取值相异时输出为1
- 两输入同或门的功能是输入取值相同时输出为1
对于基本比较器而言,两个数相比,最后必然得到一个结果,即相等或不相等
1位二进制数比较器
能判别两个1位二进制数的大小关系的比较器电路。
即两个数相比,一个结果,三种可能:
电路图如下所示:
4位二进制数比较器
两个数相比,从高位向低位比,一个结果,三种可能:
集成数值比较器
集成4位数值比较器74LS85
芯片封装图:
功能示意图:
芯片功能表:
学会阅读功能表
- 怎么阅读功能表?
阅读功能表时要把握两条总体原则和方法:
- 根据输入控制端(或者扩展端)将功能表分块
- 从原因谈到结果。功能表上任何一行出现的原因一定在输入,结果在输出,也就是要从输入谈到输出。
- 功能表上读什么?
芯片完成什么逻辑功能
芯片的控制方式和扩展方式
数值比较器的级联扩展
[例1] 使用两片74LS85组成8位数值比较器
通过串行方式级联:
低位要保证不出错,因此A=B时赋1,而另外两个管脚接地
[例2]使用两片CC14585组成8位数值比较器
这是CMOS器件,但是功能其实是一样的
左边高位片,右边低位片
高四位与高四位比较;低四位与低四位比较。
这里有个规定,CMOS比较器的"A>B"端口恒接"1"
-
总体原则:
由高向纸进行比较,结果在高位片输出,低位比较结果通过片间对位级联,传送到输出端。 -
关键差异:
COMS比较器的"A>B"端必须恒接1。
[例3] 使用74LS85 ,组成16位数值比较器
编码器
编码器原理
基本概念
-
编码
用二进制代码表示具有某种特定含义的信号
输入信号,输出代码 -
译码
把一组代码所表示的特定含义翻译出来
输入代码,输出信号
编码器分类
代码输出的类型:
- 二进制编码器
- 十进制编码器
输入信号的优先级差异:
- 普通编码器
- 优先编码器
二进制编码器
将输入信号表达为输出的二进制代码
8-3线编码器:
输入是八种信号,输出的是三位代码
输入信号以有效方式表达(高、低)
下一步写出表达式:
变形,两次取反后,展开一层:
这样就将信号从高有效方式变成了低有效方式
二进制优先编码器
这里的优先指的是允许几合信号同时输入,但只对优先级别最高的进行编码。
优先级顺序: I7->I0
得到表达式:
Y2化简后可以得到Y2 = I7 + I6 + I5 + I4
十进制编码器
输入10路要编码的信号,输出一组8421BCD码:
集成编码器
集成8-3线优先编码器(3位二进制优先编码器)
这里不难发现有三个端口是我们没见过的:5,14和15
这三个端口都是控制端,具体实现了什么功能要看功能示意图
功能示意图:
同样也是下面表示输入,上面表示输出
功能表:
数一下就可以知道功能表上有14个端口,这是一个完备的功能表
首先是一个低有效输入控制端,根据ST非是1还是0可以分成两块:
- 第1行输入信号I7-I0全打了叉,也就是任意的意思。也就是说,ST是一个输入选通控制端,且本身是一个低有效方式的,该端如果输入为0,芯片选通,正常工作;现在输入1,则此时不低有效,芯片也便没有选通工作,无论I7-I0有没有输入信号,输出端全为1,此时以高有效方式表达的控制端Ys,真的高有效了!而以低有效方式表达的控制端Yex此时不低有效。
- 再往下,输入控制端全为0,满足低有效的要求,芯片全通工作。此时又可以分为两部分。第二部分比较好理解,我们主要来看第一部分,也就是第二行。虽然芯片正常选通工作,但某个时刻八路输入信号均不出现。八路输入信号都是以低有效方式表达,但现在全1,即没有一个有效。我们就说此时八路信号均无效时。或者说均不出现时输出代码全1,此时该低有效的不低有效,该高有效的也没高有效。
注意以下是一句错误的示范,当输入端ST非低有效时,芯片选通工作,如果此时输出控制端该低有效的没有低有效,该高有效的也没有高有效,则此时没有有效信号输入,输出代码全要。这是错误的示范,错在违背了从原因谈到结果的原则。切记任何一行出现的原因不要在输出端找,一定要在输入端找,因为输出端只是一个结果。
如果功能示意图与功能表有差异,以功能表为准
集成电路资料的阅读
-
芯片封装图:
封装格式
管脚定义、分类 -
功能示意图:
信号输入、输出分类
信号有效方式 -
功能表:
根据输入控制端(或者扩展端)将功能分块
从原因谈到结果(从输入谈到输出)
编码器级联扩展
[例] 使用74LS148组成16-4线优先编码器。
这是74LS148,低有效表达,且优先级I7最高:
这是我们的目标:
将两个74LS148芯片放进去,分为高位片和低位片:
-
输入极:
实现片间优先级 -
输出级:
低三位代码共用
利用控制端,生成输出的最高位代码
下面看一下具体工作过程:
首先实现片间优先级:
左边接地,根据刚刚的真值表可以推断出左边是高位片,那么右边就是低位片:
下面来实现低三位代码共用:
这样一来,输出就由高位片来决定了
利用控制端,生成输出的最高位代码:
最高位代码其实就是两个芯片工作区区分的控制信号
译码器
编码和译码是互为逆过程的
- 译码
把一组代码所表示的特定含义翻译出来
输入代码,输出信号
根据输入代码的类型可以分为:
- 二进制译码器
- 十进制译码器
- 显示译码器
译码器中没有所谓的优先级
译码器原理
二进制译码器
在讲原理之前,我们再回过头来看看编码器:
下面是二进制译码器的译码表:
译码器不谈"优先",输出信号天然相互排斥
可以得到真值表:
电路图:
十进制译码器
看一下译码表:
下面的6组是约束,8421码是从0000到1001的,所以将剩下的6组排除
根据表达式画出电路图:
输出信号高有效
集成译码器
以 集成3-8线译码器74LS138 为例:
分析方法和编码器是一样的,这里就不过多重复了
集成电路资料的阅读
-
芯片封装图:
封装格式
管脚定义、分类 -
功能示意图:
信号输入、输出分类
信号有效方式 -
功能表:
根据输入控制端(或者扩展端)将功能分块
从原因谈到结果(从输入谈到输出)
集成4-10线译码器74LS42:
译码器的级联扩展
[例1] 使用74LS138组成4-16线译码器
74LS138功能表如下:
我们的目标4-16线译码器:
跟编码器扩展的三件事相反(输入与输出对调):
-
输出极:
实现片间优先级(而译码器不存在优先级,所以这一项不存在) -
输入级:
低三位代码共用
利用控制端,生成输出的最高位代码
因此只需要做输入级代码上的扩展:
首先是低三位代码共用:
控制端生成输出最高位:
- 当A3为0时,左片工作,左片即低位片;
- 当A3为1时,右片工作,右片即高位片;
这里还有一个控制端S非,作为4-16线的低有效控制端:
[例2] 使用74LS138组成5-32线译码器
A4和A3用来控制4个芯片工作与否,区分开不同的工作区
电路图如下所示:
译码器的应用
确定哪些最小项出现时,能够使设计目标的输出成立,则将输出信号提出来,后级共同接入一个或门即可。
实际器件与理论的差异:
74LS138的输出端给出的是最小项的反函数,因此,后级接入的不是或门
[例1] 试用74LS138实现下列3输入逻辑函数
F = A ‾ \overline{A} ABC + A B ‾ \overline{B} BC + AB C ‾ \overline{C} C
[例2] 用译码器设计一个组合逻辑电路,输入、输出均为3位二进制数,两者间保持下列数据关系:
- 当2≤x≤5时, Z=X+1;
- 当X>5时,Z=X-3 ;
- 当X<2时,Z=X。
-
理论由来:
以输入代码做输入变量, 3-8线译码器的8个输出信号恰好将3输入逻辑函数的全部8个最小项一一解析出来。 -
注意事项:
注意译码器输出信号的有效方式;
后级采用哪个逻辑门(与非门、或门) ;
输入信号接入译码器输入代码端,注意顺序;
最后别忘了控制端一定要接入有效的控制信号
显示译码器
器件原理
显示译码单元
最经典的显示译码器整体单元:
- 普通译码器输入的是二进制代码或者十进制代码,输出的是与代码明确对应的电平信号;
- 显示译码器输入的是十进制代码,输出的是"数码管能读懂"的信号,使用者读到的是数码管上显示的十进制数字的字形。
发光二极管(LED)
七段数码管
但是右下角有一个点,所以严格来说应该是八段数码管
每一段是由一个发光二极管拼出来的:
先来看最左边的图,COM是共极,是连通的,根据共极的不同,可以分为共阳极和共阴极:
集成器件
根据共阴极还是共阳极,可以分为两大类:
74LS47
74LS47用于驱动共阳极七段LED数码管,这里指的七段不包括前面说的小数点
74LS48
类似的,74LS48用于驱动共阴极七段LED数码管
具体应用
1位数的显示译码
- 控制端的处理:
- 限流电阻的选择:
设电源电压为5V ,5V减去发光二级管工作电压(通常为2V即可) ,再除以10mA ~ 15mA,一般为几百欧姆。
多位数的显示译码
当数字系统需要多位数输出显示时,要用多片显示译码器和多片数码管组成
多位数的显示译码系统,此时,就需要将显示译码器的动态灭零输入端和动态灭零输出端配合使用,以实现多位数显示中的灭零控制
数据选择器
数据选择器又叫做多路选择器,或者多路开关
基本原理
数据选择器是多路输入、一路输出的器件,在输入地址的作用下,选择多路输入信道中的某一 个输入信道将该输入信道的数据传送到唯一的数据输出端。
在输入地址(选择控制端)的作用下选择多路输入数据信道中的某个
随后将该输入信道的数据传送到唯一的的数据输出端:
即先寻址,再传输
分类:
- 四选一数据选择器(4个信道+2位输入地址+唯一的输出)
- 八选一数据选择器(8个信道+3位输入地址+唯一的输出)
- 十六选一数据选择器(16个信道+4位输入地址+唯一的输出)
四选一数据选择器
信号含义:
- 4路输入数据
D0、D1、D2、D3 - 2位输入地址
A1、A0 - 1个输入控制
E(低有效) - 1个输出数据
F
总共是8个相关的输入输出信号
功能表:
这里的数据是简写,任何时候,4个信道都是存在的
函数表达式:
-
F = ( A 1 A 0 ‾ \overline{A1A0} A1A0D0 + A 1 ‾ \overline{A1} A1A0D1 + A1 A 0 ‾ \overline{A0} A0D2 + A1A0D3) E ‾ \overline{E} E
数据选择角度:
2位地址会构成4组地址码,这4组地址码分别指定4路输入数据,某一组输入地址出现,则寻址对应输入信道,将该信道的输入数据传输至输出端。 -
F = A 1 A 0 ‾ \overline{A1A0} A1A0D0 + A 1 ‾ \overline{A1} A1A0D1 + A1 A 0 ‾ \overline{A0} A0D2 + A1A0D3
另一种理解角度(不看成数据选择器):
以2位地址做输入变量,输出为该2输入逻辑函数的所有4个最小项之和的形式,用数据端取值表征某个最小项是否存在。
根据函数表达式画出电路图:
F = A 1 A 0 ‾ \overline{A1A0} A1A0D0 + A 1 ‾ \overline{A1} A1A0D1 + A1 A 0 ‾ \overline{A0} A0D2 + A1A0D3
集成数据选择器
双4选1数据选择器74LS153
8选1数据选择器74LS151
级联扩展
先片选,再片内选
[例1] 使用74LS153组成8选1数据选择器
两步工作:
- 低两位输入地址共用;
- 控制端反向共接,生成最高位地址,作为片选信号,区分两片4选1的工作区。
[例2] 用8选1数据选择器74LS151,组成16选1数据选择器
[例3] 用8选1数据选择器74LS151组成32选1数据选择器
先片内选,再片选
[例1] 使用74LS153组成8选1数据选择器。
回顾一下刚刚的方法:
[例2] 用8选1数据选择器74LS151,组成16选1数据选择器。
[例3] 用8选1数据选择器74LS151组成32选1数据选择器。
总结:
- 两级数选结构;
- 低两位地址各自分段数远;高位地址二次数选确定数据。
具体应用
四选一数据选择器
[例1] 试用4选1数据选择器实现3变量多数表决器
这里出现了一个问题,表达式是三个输入,而器件上却只有两个输入地址
这时的解决方法是任选2个输入变量做地址,剩余1个输入变量在数据端体现:
[例2] 试用2选1数据选择器实现3变量多数表决器。
思路和上一题是差不多的,具体做法是任选1个输入变量做地址,剩余2个输入变量在数据端体现。
照表达式连接电路:
八选一数据选择器
[例1] 试用74LS151实现3变量多数表决器。
对位得到:
数据分配器
基本原理
路输入信道、多路输出信道
来做个对比:
1-4路数据分配器
输出函数表达式:
集成数据分配器
将输入的3位二进制代码译码为8路地有效的输出信号。
竞争与冒险
概念与成因
所谓“竞争与冒险”, 指在组合逻辑电路中,当输入信号改变状态时,输出端可能会出现错误信号,从输出波形上看,出现了在理论设计中,本不该出现的干扰脉冲信号。
-
"竞争"是原因:
输入变量可能具有的一种性质 -
"冒险"是结果:
谈的是在输入变量具有“竞争能力”的情况下,最终在输出级出现了不应有的错误
竞争
组合逻辑电路中,某个输入变量具有两条以上途径到达输出端,由于每条路径上的延迟时间不同,到达终点的时间有先后之别。
拿这个电路举例:
冒险
已知电路中存在具有竞争能力的变量 ,如果当该变量状态改变时,在输出端出
现了本不应有的干扰脉冲,就称此具有竞争能力的变量在输出端产生了冒险现象。
判别方法
竞争
-
依据一:
观察某个输入变量到达输出端的多个路径上,经过的门电路器件的数量是否不同,如果不同,则该变量就具有竞争能力。 -
依据二:
根据电路的逻辑表达式, 分析有没有某个输入信号以原变量、反变量形式同时存在,如果存在,则该输入变量也具有竞争能力。
判别要求:
两个依据要求同时判别,符合任何一个依据,该变量都被看做具有竞争能力。
冒险
-
前提:
电路中存在着具有竞争能力的输入变量 -
过程:
根据逻辑表达式进行分析,在其他变量取值的任意组合下,确定输出函数由具有竞争能力的变量如何构成。
消除方法
电路调理
增加选通控制信号
带来的问题:
- 对选通控制信号的宽度和产生时间有严格要求,电路工作过程箱应复杂了
- 输出信号也变成了宽度与选通信号相同的脉冲信号。
输出端接入滤波电容
利用电容的滤波作用,削去尖峰脉冲,简单易行,效果也有保障。
带来的问题:
- 输出电平正常的高低跳变时,因为电容的滤波作用,波形会产生一定程度的变坏。