计算机的逻辑部件
本节逻辑引导:
中央处理器(CPU)—>运算器+控制器—>运算器的核心部件—>算术逻辑计算单元(ALU)—>基本结构是超前进位加法器。
一、加法器(adder)是啥东西
首先我们知道计算机的计算对象都是二进制的数字(0,1),他们可以与十进制等进制进行转换,还可以实现逻辑的运算(这一点在逻辑代数中,我们是可以深刻体会到的)。因此,如何能够实现一种对二进制数字进行我们人类定义的运算呢?加法器就是其中一种(其实减法、乘法、除法也是加法器实现的),这里我们并不关心其电路的具体实现,我们从略微高的层次使用组合逻辑电路的知识。
这是半加法器:[外链图片转存失败(img-zYffSJFV-1567863754030)(C:\Users\asus\AppData\Roaming\Typora\typora-user-images\1567860643649.png)]
[外链图片转存失败(img-Vqr51G5p-1567863754031)(C:\Users\asus\AppData\Roaming\Typora\typora-user-images\1567860667645.png)]
这是全加器:[外链图片转存失败(img-AC7l1ucC-1567863754032)(C:\Users\asus\AppData\Roaming\Typora\typora-user-images\1567860714964.png)]
**注意:**半加器和全加器是对两个一位二进制数进行相加的元件,一个考虑到低位进位,一个不考虑,那么半加法器有啥用呢?其实我也不知道,应该还是有些用的吧。
二、我想计算多位的二进制求和咋办呢?
1.串行加法器
[外链图片转存失败(img-GEOuKU6v-1567863754033)(C:\Users\asus\AppData\Roaming\Typora\typora-user-images\1567861281467.png)]
由低位向高位,对应位一起输入,重点是一个保存进位的触发器,使用硬件很少,但是速度很慢。实际上,这个求和过程与我们小时候用笔写求和的算式的原理是一致的,只不过这里的保存进位的触发器就只有两种状态(0,1);
2.并行加法器
各位求和并行进行,使用全加器,涉及到对于进位的那个数的处理方法不同;
2.1串行进位并行加法器
[外链图片转存失败(img-8EBS6fj7-1567863754034)(C:\Users\asus\AppData\Roaming\Typora\typora-user-images\1567862029723.png)]
这就是串行进位并行加法器(这真的并行了吗?)不还是要等串行上来的低位进位吗?感觉像是在哄傻子一样 -_-! 。然而,可能在传递的实际实现中,可能会有一些优化,至少比串行加法器好,不是吗?
2.2超前进位加法器
**<基本思想>:**考虑任一位的进位时,把比它低的所有各位的两个相加数可能对本位的影响都一并考虑进去,形成统一的进位逻辑,从而使较高位的进位能与比它低的所有各位的进位同时形成.
[外链图片转存失败(img-ihrGhUpK-1567863754035)(C:\Users\asus\AppData\Roaming\Typora\typora-user-images\1567862295099.png)]
[外链图片转存失败(img-cgErGgOb-1567863754036)(C:\Users\asus\AppData\Roaming\Typora\typora-user-images\1567862477919.png)]
在每一位进行计算的时候,低位传来的进位是已经准备好的了,本质是那个生成函数、传递函数进行的逻辑运算。
从4位到……:
[外链图片转存失败(img-V9MQqie7-1567863754037)(C:\Users\asus\AppData\Roaming\Typora\typora-user-images\1567862926172.png)]
如何提速:
1.去掉反相器,正负逻辑交替使用;
2.二级分组超前进位法:把一级分组的小组看成位,每四个小组看成一个中组,每个小组有四个进位,称最高一位进位为小组进位。
[外链图片转存失败(img-S4Hihh5Z-1567863754037)(C:\Users\asus\AppData\Roaming\Typora\typora-user-images\1567863167285.png)]
[外链图片转存失败(img-01HiMNlx-1567863754038)(C:\Users\asus\AppData\Roaming\Typora\typora-user-images\1567863276844.png)]