手搓CPU(加法器)

基本原理

门电路

基本门电路

常见的基本门电路:

  1. 与门(AND Gate)
  2. 或门(OR Gate)
  3. 非门(NOT Gate)
  4. 异或门(XOR Gate)
  5. 与非门(NAND Gate)
  6. 或非门(NOR Gate)

常见门电路的图形表示:

img.png

每种门电路都有自己的逻辑规则,并且通过真值表(Truth Table)来描述输入与输出的关系。

1. 与门(AND Gate)

与门的输出规则是:只有所有输入都是1时,输出才是1,其他情况下输出为0。

真值表

输入A 输入B 输出
0 0 0
0 1 0
1 0 0
1 1 1

电路的基本结构:

img.png

2. 或门(OR Gate)

或门的输出规则是:只要有一个输入是1,输出就是1,只有所有输入都是0时,输出为0。

真值表

输入A 输入B 输出
0 0 0
0 1 1
1 0 1
1 1 1

电路基本结构:

img.png

3. 非门(NOT Gate)

非门的输出规则是:输出与输入相反,输入为1时输出为0,输入为0时输出为1。

真值表

输入 输出
0 1
1 0

4. 异或门(XOR Gate)

异或门的输出规则是:只有两个输入不同,输出才是1,相同的情况下输出为0。

真值表

输入A 输入B 输出
0 0 0
0 1 1
1 0 1
1 1 0

二进制加法

  • 十进制例子
1
2
3
4
  28
+ 22
------
50
  • 对应的二进制表示
1
2
3
4
5
  11100
+ 10110
--------
110010

  • 总结
    • 观察到,二进制加法,低位遵从以下规则:

      | 输入A | 输入B | 输出 |
      |——-|——-|——|
      | 0 | 0 | 0 |
      | 0 | 1 | 1 |
      | 1 | 0 | 1 |
      | 1 | 1 | 0 |
      如果两个输入不同,输出为1;如果两个输入相同,输出为0。这正好是计算机硬件中的异或门的规则。

    • 二进制进位:当相加的两个数都是一的时候需要向左进一位,这正好是计算机硬件中的与门电路。

半加器

通过异或门计算个位,与门计算是否有进位,这样我们就得到了一个做加法运算的基本单元,我们称之为半加器
半加器的电路图如下:

img.png

A、B两个位(bit)的输入不仅输入到异或门,而且同时输入到与门电路。异或门只管低位的结果,与门电路用来判断是否有进位。

全加器

对于加法,半加器只有两个输入,实际上要完成加法,还有可能有来自低位的进位作为一个输入。所以,一个完整的加法器需要有三个输入。这时候就需要从半加器进行扩展,组成一个全加器,实现一个完整的加法。
全加器电路组成分析:

img.png

img.png

img.png

all-addder-4.png

搭建

这里实现一个4位(二进制)数字加法器。

搭建原理

  • 电路图
    前面的全加器能够计算一位二进制的加法,现将四个全加器组合起来,则能实现4位二进制的加法。

all-adder-6.png

all-adder-7.png

元件组成

TODO

动手操作

TODO

参考


手搓CPU(加法器)
https://blog.ishare.cool/2024/10/06/handmade-cpu/
作者
吴哥
发布于
2024年10月6日
许可协议