怎么自己做芯片(手工做芯片)
导语:1.4:从芯片说起~自己动手做ALU
芯片现在做到哪一步了?
我们有了256字节的RAM,有了寄存器、总线。我们把CPU框图展现出来(红框表示已经做完的部分):
R0\R1\R2\R3是4个通用功能寄存器。TMP\ACC是一个关键器件(马上揭晓)的输入、输出寄存器。其中ACC通过总线既做输入,也做输出。ACC全称“accumulate ”。
现在我们的芯片还只能支持“通过总线读写寄存器、内存”,其他什么都干不了。下面我们就给它加上最关键的功能:ALU。
ALU
ALU全称“arithmetic and logic unit”(算数运算和逻辑运算单元)。
算数运算:加、减、乘、除、左移、右移。(卷积等复杂的数学运算,我们这个芯片就不支持了。DSP芯片干的就这活儿)。
逻辑运算:大于、小于、等于、非、或、与、异或。(同样也不支持集合运算等复杂逻辑运算。热门的NPU芯片就能做复杂的逻辑运算)。
有了ALU,芯片才算有了“能力”,要不然芯片只能读、写内存,那还要它干啥。
1位加法
从最简单的问题出发,我们先看下如何完成1位的加法。
先只考虑:0+0=0,0+1=1,1+1=0。很容易想到如下电路:
1+1=0的同时,还要产生一个进位。我们得把产生的进位考虑进去,再加一个输出表示是否有进位:
0+0=0,我们只考虑了最低位计算的情况,如果是高位计算,低位有进位怎么办?再加一个输出表示低位是否有进位:
完事。是不是很easy,从简单到复杂。我们会一直遵循这个方法解决问题。
8位加法
8位加法就简单了,并联我们的1位加法电路。把前一个的移位输出作为下一个的输入。
左移
这个貌似最简单。无脑画电路图:
其他数学运算
减、乘、除最后都可以用乘法和位移运算搞定。大家可以随便找本计算机教科书来参考。
逻辑运算
都有现成的门电路可以使用。只不过数据宽度记得是8(总线的数据宽度)。
组合所有运算电路
ALU可以支持多种运算,那种运算实际生效呢?还记得我们用4X16译码器选择RAM中的字节。同样我们可以利用译码器作为开关位,选中那种运算实际生效。
ALU完整电路
免责声明:本站部份内容由优秀作者和原创用户编辑投稿,本站仅提供存储服务,不拥有所有权,不承担法律责任。若涉嫌侵权/违法的,请与我联系,一经查实立刻删除内容。本文内容由快快网络小余创作整理编辑!