注:本小节内容紧张是对《But How Do It Know? - The Basic Principles of Computers for Everyone》一书的理解总结,这本书目前还没人翻译。
建议英文条件好的同学都去买英文原来看下,或者网上也有电子书。
芯片电路图
学过数字电路的同学是不是觉得上面的电路图并不繁芜?目测就一百多个门电路和封装好的译码器、移位器等拼一块儿竟然就成了一个8位CPU芯片。
最右边是输入机器码的地方。
赤色是每个时钟电路的通路。

记住这一点:CPU芯片实质上只是在不断的重复取指令、打算、输出结果,而取值、打算、输出实质上便是芯片内部的不同通路。
而不同通路的选择以及值的通报靠的是门电路。
下面我们就来从头开始DIY自己的8位CPU芯片,借此理解芯片的事情事理。
开始动手DIY芯片之前,我们要理解一下根本的数字电路。
这些并不繁芜,只要你懂基本的逻辑运算就可以。
门电路只不过换了一种符号体系来表示数学运算。
与非门
c = !(a & b),个中c是输出,a、b是输入。
这个打算公式表达的含义便是将a、b做与运算后再取非。
把稳:a和b都是一根线,换句话说都是一个bit。
对应数字电路的与非门:
与非门
真值表
请各位同学记住:这是这个芯片里面最主要的基本电路。
非门
c = !(a & a)。
与非门大家看懂了,这个就没啥好说的了。
纯粹便是拿与非门实现了非门电路
非门
1bit存储单元
来了,重点来了,我们开始用基本的门电路搭建一bit的存储单元。
数字电路有很多的稳定的状态(简称稳态),有的稳态输出0,有的稳态输出1。
输出从0切换为1,或者从1切换为0,都只不过是外部条件触发从一个问题切换到另一个稳态。
废话不再多说,上电路图:
1bit存储单元
我们来剖析下电路的输出:
1.i=0 s=1。
此时a=1,b=0,c=1,o=0。
2.i=1 s=1。
此时a=0,b=1,o=1,c=0。
规律1:当s=1时,o的值和i保持同等。
i便是输入,o便是输出。
3.i=0, s=0。
此时a=1,b=1,o和c的值既可以是0,也可以是1,或者说保持原有值。
4.i=1, s=0。
此时a=1,b=1,o和c的值既可以是0,也可以是1,或者说保持原有值。
规律2:当s=0时,o的值坚持自己的值不变,无论i怎么变革。
看到没!
!
!
规律1+规律2是不是造就了一个可以保存输入值的电路,这便是1bit内存单元。
支持写入,支持读取。
8bit存储单元
1bit我们做好了,8bit便是凑集8个1bit单元。
用一个开关位掌握(如果多个开关位也可以,那就表示CPU支持位操作指令)
8bit存储单元
总线
我们先来先容一个新的电路,由多个与门电路组成。
这个电路当e关闭时,无论i输入怎么变革,输出的值都是0。
当e打开时,输出和输入保持同等。
使能电路
我们把这个电路和前一个电路串联起来,得到下面这个电路,这个便是我们后面要用到的8bit寄存器了。
这个电路很主要,前面的B许可我们读取输入并保存起来(无论输入后面怎么变革)。
后面的E许可我们该输出的时候才输出:
寄存器电路
再来加入一个关键观点总线:
我们把8bit线的连接用“=”符号更换,这便是总线了。
这里也能看出一个主要观点,总线实在是有位数的观点的。
简化后的表达
其他表示方法
译码器
再来末了一个译码器电路。
实在便是将abc的值,翻译成详细的值。
译码器
好了,我们可以连续了。
有了这些背景知识,你就可以做一个CPU了。
下个小节我们正式开始