写点什么

逻辑运算系列(二): 组合逻辑电路

2019 年 9 月 10 日

逻辑运算系列(二): 组合逻辑电路

随着半导体制作工艺的发展,许多常用的组合逻辑电路被制作成了中规模集成芯片,一直被广泛应用。作为本系列的第二篇文章,本文将重点讲解组合逻辑电路的相关概念。


算术逻辑单元,简称 ALU,是中央处理器(CPU)的执行单元和核心组成部分,由“与门”和“或门”构成的算术逻辑单元,主要功能是进行二位元算术运算,比如加、减、乘(不包括整数除法)。基本上,所有现代 CPU 的体系结构,是以二进制的补码形式表示。


关于二进制,这里稍微解释下,二进制的最高位(二进制由左到右,最左边为最高位)也叫做符号位,代表二进制的正负,正数为零,负数为一,二进制分为原码、反码和补码。当二进制为正数时,原码、反码和补码相同,当二进制为负数时,将源码按位取反,得到反码,然后最低位加一得到补码。计算机就是以补码形式储存的。


半加器


接下来看第一个 ALU——半加器。半加器和全加器是算数逻辑单元的中的基本单元,每完成一位二进制数相加都可以得到一种逻辑电路,如果只考虑两个加数本身,而不考虑低位进位本身的加法运算,称为半加,实现这个逻辑功能的电路叫做半加器,如下图:



上面是逻辑图,下面是真值表:



上图,A、B 表示加数,S 是本位和,C 表示进位数,可以看出这是一个由异或门和与门组成的逻辑电路。


全加器


全加器可以把来自被加数、加数和低位的进位信号相加,并根据求和结果给出该位的进位信号。




其中,A 和 B 为加数和被加数,其中 C 为低位进位数,S 为本位和,v 为高位进位数,,由两个半加器和一个或门组成。


多位数半加器


串行进位加法器,若由多位数相加,则可采用并行相加串行进位的方式来完成,将低位的进位输出信号接到高位的进位输出端。因此,任意 1 位加法运算必须在低一位的运算完成后才能进行,这种进位方式称为串行进位。例如,三个二进制数据相加,可以采用三个全加器,构成三位数加法器。


当然,这种方式既有好处也有坏处,好处是逻辑电路比较简单,但运算速度不够快。



由于串行进位加法器受到进位信号的限制,运行速度不是很快。所以,人们又设计出了多位数超前进位加法逻辑电路,使每位的进位只被加数决定,与低位进位无关。


超前进位的所有位数进位是同时完成的。一个 CP 脉冲就能完成整个进位过程。优点是运算速度快,明显的缺点是电路复杂。这里就不详细介绍了,后续章节会详细介绍。


还有就是减法运算,加法和减法主要通过输入的高电平或者低电平来控制,逻辑电路也是一样的。


编码器


编码器,数字系统中常用的数据是二进制码表示,用一个二进制代码表示特定含义的信息称为编码,具有这种编码逻辑的逻辑电路叫做编码器。



以 4 线-2 线为例,它有 2^n 个输入,n 位二进制码输出相对应,编码器有两种,分别是普通编码器和优先编码器,各有不同的作用,普通编码器任何时候只允许输入一位编码信号。


稍微介绍一下,四个输入接口 I0 到 I3 为高电平有效,输出的是二进制代码 Y1,Y0,任何时候 I0 到 I3 中只能有一个值为 1,并且输出一组二进制代码。除了表中四种组合有效外,其余全部无效,输出为零。


下面是真值表。



下面看看优先编码器,同样以 4 线-2 线为例,优先编码器和普通编码器的区别在于,优先编码器可以同时输入两个以上编码信号。但只对其优先权最高的一个编码,也就是说可以识别信号的优先级。


功能如下图所示,可知 I0 到 I3 的级别,相对于 I0,只有当 I1、I2、I3 均为零的时候,才有无效电平输入,而且 I0 为 1 的时候,输出 00,但是 I3 不一样,无论其他三个数是否输入有效电平,均输出为 11,由此可见,I3 的优先级别最高,这四个输入的优先级从高到低分别为 I3、I2、I1、I0。


优先编码器允许两个以上的的输入同时为 1,但只对优先级别较高的输入进行编码。当所有电路输入为 0 时,输出 Y1、Y2 均为 0。而当 Y0 为 1 时,输出的 Y1、Y0 也全为零。造成这个的原因是输入条件不同,输出代码相同。



实际使用的编码器一般输入都比较多,下面看一个典型的优先编码器。



这里的 GS 是优先编码工作状态,EI 是高电平有效的输出使能端,EO 为输出使能端。当 EI 为 1 时,允许编辑器工作,EI 为 0 时,禁止编码器工作,此时不论 8 个输入端为何种状态,输出皆为低电平,而且 GS 和 EO 也均为低电平。


GS 的主要功能是,当 EI 为 1 时,至少有一个输入端有高电平信号输入时,GS 为 1,表明编码器处于工作状态。反之,则 GS 为 0。这就相当于一个判断该编码器是否处于工作状态的一个提示。



上面是真值表,可以看出,EI 为 0 时,I7 到 I0 没有输入,也没有输出,GS 和 EO 也分别为零,此编码器处于关闭状态。等于 1 时,允许编码,I7 的优先等级最高。


接下来看译码器。译码和编码相反,译码是编码的逆过程,主要是具有特定含义的二进制码转化为对应的输出信号,这就是译码过程。后续会更新一些汇编和 CPU 指令等内容,欢迎关注。


相关文章:


《逻辑运算系列(一):入门篇》


2019 年 9 月 10 日 15:495605

评论

发布
暂无评论
发现更多内容

架构师训练营第一周学习总结

不谈

食堂就餐卡系统设计

Z冰红茶

ARTS-week3

王钰淇

ARTS 打卡计划

架构师训练营第一周总结

Cloud.

极客大学架构师训练营

随遇而安的适配器模式 | Spring 中的适配器

海星

Java spring 面试 设计模式 Java 25 周年

作业一:食堂就餐卡系统设计

Geek_36d3e5

食堂就餐卡系统设计

赵龙

迷宫的生成: DFS与BFS算法的实现

lmymirror

DFS 迷宫 Cocos Creator BFS

食堂就餐卡系统设计

李广富

Week 01 学习总结

卧石漾溪

极客大学架构师训练营

Week 01 命题作业

卧石漾溪

极客大学架构师训练营

食堂就餐卡系统设计

wyzwlj

极客大学架构师训练营

架构训练营-食堂就餐卡管理系统

架构训练营-第一课总结

架构设计文档学习总结

jason

架构师0期 | 架构师是怎样炼成的?

刁架构

极客大学架构师训练营

架构师训练营 第一周 学习总结

一雄

学习 极客大学架构师训练营 第一周

01学习总结

赵龙

第01周命题作业-食堂就餐卡系统架构设计

Jaye

极客大学架构师训练营

C02-商业模式与架构设计

吴传卜

考虑用静态工厂方法代替构造器

dreamer

Java 互联网 后端 开发

机器学习复习-线性回归

JustBuyIt

学习 线性回归

重新定义失败

史方远

个人成长 随笔杂谈

虽则悲欢不尽相同

zhoo299

随笔

架构师思维

林昱榕

极客大学架构师训练营

第三季已经起航,送你一份活动手册吧

赵新龙

写作 社群

架构师训练营 第一周 作业 食堂就餐卡系统设计

一雄

极客大学架构师训练营 作业 第一周

如何成为一个架构师

_MISSYOURLOVE

极客大学架构师训练营

食堂就餐卡系统设计

stardust20

程序员如何破除「迷茫」

顿晓

学习 程序员 架构 迷茫

架构师训练营-第一课学习总结

King

学习 感悟 极客大学架构师训练营

NLP领域的2020年大事记及2021展望

NLP领域的2020年大事记及2021展望

逻辑运算系列(二): 组合逻辑电路-InfoQ