目录
一.序言
二.编码器
1.二进制普通编码器
2.二进制优先编码器
3. 8421BCD普通编码器
4. 8421BCD优先编码器
5.MSI74148优先编码器及应用
三.译码器
1.二进制译码器
2.二-十进制译码器
3.显示译码器
4.MSI74138译码器
我们知道在现实生活中,比如我们往麦克风里输入的不同声音,房间温度,湿度的变化等等,都是
一连串连续变化的信号,也就是我们所说的模拟信号.
而相较而言,数字信号存在可能就没有那么广泛,但我们对它的应用却越来越多,这主要原因也是
我们前面提到过的我们能够将很多对应物理量,转成数字信号来处理,这样既方便也高效.
比方说,现在教室存在着几个烟雾探头,每个探头附近就有对应的淋浴器.
假设现在教室里出现了烟雾,也就是我们所说的模拟信号,我们可以把有烟看作1,没有烟看作0,
这就完成了最简单的一个编码.
但实际上并没有这么简单,如果单纯按0,1划分,那假设在教室点了个火柴,喷淋器就直接降水,
或者已经着火了,但烟雾浓度还不够高,没有喷洒,那这样就非常尴尬.
所以,我们可以根据烟雾不同的浓度,再进一步细分,比如划分成10个等级梯度,对应就用4位不
同的二进制编码(000代表无烟,001代表烟雾浓度为...到...,等等)
转化成二进制编码后,我们就可以对它进行处理,输出相应处理过的二进制编码,决定喷淋器喷出
的水流有多大.
但这显然还不够,我们知道一般来说每个探头和每个喷淋器是存在因果关系的.
所以我们还要对烟雾探头编码,比方说00,01,10,11等等,然后将这些地址编码连同我们上面
处理好的编码,输给所有喷淋器,但只会有相邻的喷淋器被激活,将二进制代码所表示的相应信号
或对象“翻译”出来,变成我们理解的物理量,哪个喷淋器工作,喷多少水等等.
由上面这个例子,我们也可以看出,编码和译码是我们生活中经常用到的部分,是常用的模块.
因此,我们上一部分学过了组合逻辑电路,对应这一部分,就会将编码和译码这两大模块,单独分
装出来,单独研究实现,以起到大幅简化电路的功能.(像拼乐高一样,假如很多模型都有窗户这
个部分,而结构还相同,那我们就把它们单独分化出来,那造模型的时候,直接使用就好,而不用
再从头开始搭建.)
用n位二进制代码对2^n个相互排斥的信号进行编码的电路,称为二进制普通编码器.
它最大的特点是输入信号是相互排斥的,任一时刻都有且只有一个输入信号输入.
具体如何理解呢?
我们可以看看三位二进制普通编码器的真值表.
总共有8个输入,从I0到I8,3个输出Y0,Y1,Y2,所以也被称为8线-3线二进制普通编码器.
有输入为1,无输入为0
我们可以看到每次,输入端每次都只有一个端口输入为1,也就是输入信号是相互排斥的,任一时刻都有且只有一个输入信号输入的意思.
如何实现它的门电路呢?
如果画出其卡诺图化简固然可以,但输入有8个,构成的卡诺图将会非常大,但只有8个为有效的信
号,其它都是无关项.
既然我们无法通过卡诺图化简太难,可以考虑从表达式入手.
根据真值表,我们可以对每个表达式先写出它的与或表达式.
(有输入为原变量,无输入为反变量)得到下列表达式:
类似,我们便可以得到,Y1,Y0的表达式.
约束项可以表示为(与运算只有两个都为1才会为1,现在有且只有一项为1,所以结果必然
为0)
在式子中加上I4I5,提取公因式,可以把第一项的I5反消掉(A + B = A + B),运用类似的方法,可以
类似的方法可以将Y2化简为一个很简单的表达式,除了输入为1的项,全部都被消掉.
其实也可以用卡诺图来思考,将输入为1的所有无关项和有效项圈起来,只有输入为1的变量没有发
生过变化,则其它反变量全部可以消掉.
最后化简为:
利用表达式, 就可以画出对应的门电路.
用n位二进制代码对2^n个允许同时出现的信号进行编码的电路,称为二进制优先编码器
它和普通编码器最大的区别在于,它允许多个信号同时出现,但只对其中优先级最高的信号进行编码
举个不恰当的例子,假设有一个抢答游戏,每位选手前都有一个抢答器,按下为1,按下为0
普通编码器,就只能允许,虽然同时按抢答器,但最终有且只有一个人能够抢到,并回答问题.
但优先编码器给你同时按,最后也只有一个人能抢到
不过凭借的是优先级,如果规定7号选手优先级比0号选手高的话,7号按了,不管0号按没按,最
后主席台输出的都是7号选手的二进制编码.
我们依旧规定有输入为1,无输入为0
假定I7优先级最高,I6次之,然后依次递减,就可以得到二进制优先编码器的卡诺图如下:
看图我们也可以知道它的特点,如果I7为1,那另外几个输入都是X,即输入什么都不会影响最后的
输出为7.
同理,化简也是先列出真值表,一个输出一个输出进行化简.
照旧找出输出为1的,先写出与或表达式,得到Y2的表达式
不同于普通编码器化简,优先编码器不需要用无关项化简,直接利用消去法(A + B = A + B),就可以直接进行化简.得到下面化简的式子.
类似可以得到相应Y1,Y0输出的表达式
最后就可以用与非门实现出相应的门电路.
和二进制普通编码器类似,名字也告诉我们,8421BCD普通编码器总共可以表示从0到9的十个二进制对应的数.
遵循前面提到的普通编码器,同样输入也只有且只有一个输入为有效,其它都为无效.
因此8421BCD编码器总共有10个输入端,四个输出端.(三个输出端,无法表示10个数,至少要四个输出端.)
不过分析的方法,和上面3线-8线三位二进制编码器是完全相同的.同样是有输入为1,无输入为0.
先画出它的真值表:
这里拿Y3举例,找出Y3输出为1对应的表达式,写出最小项,然后逻辑或起来.
输入为1的取原变量,为0的取反变量.(写最小项的方法)
约束依旧可以表示成下面这个例子,即:
通过消去律,同样可以轻松化简为
类似地,我们就可以也得出其它输出的表达式(其实也就是所有输入端为1的或其来.)
将表达式通过德摩根律化成与非的形式,然后与非门电路自然就可以轻松的设计出来.
和8线-3线二进制优先编码器类似,此时输入换成了10线,输出换成了4线.
作为优先编码器,同样当有一个以上输入信号出现时,只对其中优先级别最高的一个进行编码.
同样也是有输入为1,无输入为0
卡诺图如下图所示:
化简方法和二进制优先编码器化简方法一样,这里就不再细讲.
下面我们就看生活中,常用的一个优先编码器------MSI74148
其中74代表系列号,关键的数字是148,它代表了这个芯片的功能是优先编码.
看图片,我们也可以知道,它总共有16个引脚,前面8个,后面8个.
我们先来看看它的逻辑符号.
首先,我们可以发现它的逻辑符号只有14个引脚,那是因为我们把接电源和接地的引脚都没有表示.
总共有八个输入,三个输出.
意味着 MSI74148是一个三位二进制的编码器.
按照设计,规定I7为最高优先级,I0最低,它是一个二进制优先编码器.
输入端和芯片,我们发现会有一个个小圈,这代表着逻辑非,也就是
MSI74148的有效输入为0,无效输入为1.
有效输出为0,无效输出为1.
除此之外,还有我们前面没有接触过的三个引脚,分别是
-----选通输入端
我们先来介绍选通输入端的作用
简单来说,看名字,我们也知道这个引脚的作用----选通
当选通输入端为1的时候,也就是无效输入,不管我们输入什么,输出全部都为1,也就是无效输出.
只有当选通输入端为0的时候,为有效输入,我们的输入才有效.
至此,我们除了扩展芯片外,所有的引脚如何使用都已经解决.
我们可以看看MSI74148的真值表.
图中红色部分就是我们前面熟悉的三位二进制编码器的真值表. 选通输入端为0此时为0,代表有效输入.(可以看出I7的优先级最高,然后依次递减.)
当选通输入端为1的时候,无论输入是什么,输出全部默认为高电平,也就是无效输出1.
接下来,我们研究扩展芯片的作用,扩展芯片其实也被称为附加输出端
由附加输出端,我们也知道,它其实也是一个输出端,不过是用在特定的场景下.
比方说,我们要用两片74148芯片扩展成16线-4线优先编码器.
我们考虑的角度主要有两个,一个是输入,另一个是输出.
先看输入,作为有着16线输入的编码器,如果其中有一个芯片优先级比较高,另一个优先级比较低,(一个芯片工作时有且只有一个工作)这样就可以实现从0-16总共16个不同的输入.
也就是需要一个输出端,作为控制另一个芯片的输入端.
再看输出,输出为4线,那一个芯片的3线显然是不够的,这时候,就可以发挥出的作用来,
充当另一个输出端.
那如何保证输出是正确的呢?
我们知道高位有输入的时候,对应的输出应该是0xxx(0为有效,1为无效)
而由真值表我们也可以知道,此时输出全为0,恰好对应最高位输出.
而剩下的输出位数,我们知道不管是0,还是1,和1逻辑与后(另一个芯片不工作,输出无效电平1),都是输出原来的结果.
也就是将芯片的两个输出,对应位置相与即可.
同理,低位有输入的时候,对应输出应该是1xxx,也恰好和输出为1相对应.
也就是最高位的输出,借用附加输出端就可以实现
至此,我们就可以知道附加输出端的作用是什么,它可以用作补充相应的输出端.
同时我们也可以画出两片74148组合而成的16线-4线优先编码器符号图.
二进制编码器分为普通编码和优先编码
区分两者在于看输入信号是否有优先级划分
普通编码输入信号是互斥的,而优先编码则不是.
本节介绍了
8线-3线二进制普通编码器(0-7),8421BCD普通编码器(0-9)
8线-3线二进制优先编码器,8421BCD优先编码器
以及8线-3线二进制优先编码器MSL 74148(输入输出都为低电平有效)
译码是编码的逆过程,是将二进制代码所表示的相应信号或对象翻译出来.
具有n个输入,2^n个输出,能够将输入的所有二进制代码全部翻译出来的译码器称为二进制译码器.
看真值表,我们也可以知道为什么译码是编码的逆过程,实际上就是输入和输出换了个位置而已.
每一个输出对应一个输入组合.有效输出为1,无效输出为0.
表达式不同于编码器,直接就可以写出,并且还不需要化简,得到的即为最小项.
那逻辑图很轻松就可以画出来,不过线还是很多的,还要用非门补充相应变量的反变量.
将十个表示十进制数0-9的二进制代码翻译成相应的输出信号的电路称为二-十进制译码器.
也是和二-十进制编码器相类似,原本的输入变成输出,输出变成输入.
不过还是和二-十进制编码器有一点区别,大于10的二进制代码,我们规定其是不会出现的.
而这些约束项,是可以用作将表达式进一步化简的.
拿Y9举例子
由于约束项取值是任意的,我们就令Y9的值为0,则相加(逻辑或)不影响表达式的值.
将上述的四个式子相加,再用消去律,可以得到化简后Y9的表达式.
类似也可以得到相应的表达式.(当然用卡诺图进行化简也是可以的)
随后画出对应的逻辑图
在数字系统中,经常需要将数字,文字,符号的二进制代码翻译成人们习惯的形式,直观地显示出
来,以便掌控和监控系统的运行情况.
最简单的比如说我们实验箱上的小灯,我们输入不同的信号,按下不同的键,代表不同的二进制
输入,我们能够在上面观察到相应十进制的输出.
BCD七段显示译码器有四个输入,七个输出.有效输出为0,无效输出为1.
即假设驱动信号为0,发光二极管发光,也就是说,要a段发光,需要Ya为0.
根据显示器件的不同,我们就可以列出来相应的真值表.
超过10的二进制输入,全部输出为1,也就是不会发光.
然后再利用约束项,逐一输出化简即可.
前面我们已经了解过MSI74148优先编码器,现在我们来了解MSI74138二进制译码器.
74138是3线-8线二进制译码器,它有三个输入和八个输出
和之前芯片不同,它输入1为有效,输入0为无效,但是输出0为有效,输出1为有效
74138二进制译码器
输入高电平有效,低电平无效
输出低电平有效,高电平无效
总共有三个选择控制端S1,S2,S3,当且仅当S1输入为1,S2,S3输入都为0,芯片才能正常工作.
其余情况,无论输入什么,输出都为无效1.
而73138最核心的一点在于,它的输出非常有趣.(利用写或与表达式的方法写输出)
恰好能够表示A2,A1,A0三个输入端所有对应的最大项.
比方说,我们给A2,A1,A0都输入无效0,在0号输出端,输出的恰好就是三个输入变量组成的最大
项.,也可以说是对应最小项的反.
那我们又任意组合逻辑函数都可以写成标准与或表达式,即最小项之和.
因此我们就可以利用译码器实现组合逻辑函数.
比方说实现这样一个逻辑函数F.
首先我们将其变型,则它一定可以化成最简与或表达式的形式,即最小项之和.
但我们知道,每个输出端,对应得其实是对应变量组合的最大项.
所以还要用摩根定律,取最小项的反,化成对应最大项之积.(或者最小项中未出现的编号对应组成
的最大项.)
保证选通输入端为1 0 0(正常工作),连接对应输出端接到与门或与非门即可.
ps:注意输入端,此时A为最高位,B为次高位,然后依次递减.
这里也揭示了,所有逻辑函数都可以化成最小项之和的形式,而每个最小项有且只有对应的一个
输入为有效(这里是输入有效为1),即逻辑函数只有部分输入满足输出为1.
而74LS138优先译码器又恰好可以满足,只有对应的一个输出端为1
因此才能用74LS138优先译码器实现任何逻辑函数.
本节介绍了译码器,译码是编码的逆过程,它能够将二进制编码所表示的对象"翻译"出来
有二进制译码器
二-十进制译码器
显示译码器
MSI 741383线-8线译码器(输入高电平有效,输出低电平有效)