分享

1.4:从芯片说起自己动手做ALU

 山峰云绕 2022-01-07

芯片现在做到哪一步了?

我们有了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完整电路

评论:

看到这篇文章很感慨!多年前深圳户口调干考试,计算机类试卷的最后一题,就是给你一些运算电路,加法器,ALU什么的,让你画线设计连成一台8位CPU。幸好我学习了三天微机原理(只有三天时间,以前我学机械工程的,跨行业考试),仔细看过CPU结构。后来刚好通过分数线顺利调入深圳。真是险过剃头。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多