相信一些贴吧的巨友已经看过一些了。想想还是这里比较好更,就暂且住这了。
事情是这样子的,大学学的是电子工程,这个专业不只是要学各种硬件、信号处理,软件也是主修课程。大三时就经常写单片机玩,在码代码的时候就想,程序是怎么被执行的,为啥这一串0101会变成程序。出于好奇,我把编译后的二进制文件打开研究了起来,再结合已经学过的数电知识,对cpu的运行机制顿然感悟,此时一个自制8位cpu的想法油然而生。
自己做cpu,不仅可以打发时间,还能经常动脑防止老年痴呆,一旦成功了,毕业后可能也比较容易找工作。
说干就干,借助强大的quartus仿真功能,把设计了快一年的电路进行仿真,结果很快乐,过程很秃顶。

部分电路

.vwf
仿真通过之后开始设计pcb,打算用74芯片搭建起来,pcb设计也弄了好久,这期间最害怕的是电路搭错,当时这渣渣布线技术真是差到了极点

总算弄好了,开始买材料。花了两个月的伙食进了一批芯片和一些设备,自己打印电路板,结果一切准备完毕准备开始焊的时候,大四毕业设计来了,就把做cpu的事放一放,这一放,就是5年。
因为新冠疫情,我从深圳回到小北海工作,在这,终于有时间做自己喜欢做的事情了,cpu的项目重启!
前面都是废话。现在开始。
要着手做一个科技项目,首先做的就是要设计和验证设计,现在看来,大学期间的设计也是比较愚蠢的,只能重新设计。
寄存器是组成cpu的重要部分,它拥有储存数据的功能,它由一个RS触发器和一些控制逻辑单元组成。它大概长这样

寄存器
拥有了寄存器,我们就可以使用它来把数据传给ALU计算了。
想了一想,把难度拉到最满,采用二极管三极管把cpu造出来。
首先用实际电路搭个寄存器进行验证

一位寄存器
寄存器验证成功后,接着设计一个6位的移位器,这个寄存器组是cpu的控制单元,使用编码器配合它来控制整个数据通路,这就相当于站在十字路口中央指挥交通的交警。

6位移位寄存器组
这个移位寄存器,我并没有选择下降沿触发的寄存器,而是用两个通用寄存器串联实现的,用这样方式做出一个多功能的控制器。后面可能有解释
第二个器件是造个PC,也就是程序计数器,通过它来指定cpu运行程序的哪个地方,它的功能比较多,自动增1、清零、程序跳转、调用函数、函数返回等功能都要借助它来实现








程序计数器--PC
造这个的过程也是十分秃头的,逻辑错误,原理缺陷,焊错虚焊,各种玄学问题是十分多的,好在有很强的毅力,不然都坚持不下去。
下一个是造rom和ram,也就是硬盘和内存,由于这两个东西不属于cpu的部分,还有它非常的庞大,普通人是不太可能手工焊出来的。为了手动编程简单点,所以这里我用上了比较容易操作的hm628512

ram和指针

hm628512

rom
有了这四大模块,cpu的基础就搭建好了,此时它也是可以运行起来了,只是没有任何功能,就像是路修好了,但是还没开放通车。还差各种车辆,和一个称职的交警叔叔。也就是ALU和译码器。

ALU背面


ALU部分

译码器
在这几个功能的加持下,cpu总算是可以跑起来了,等等,还差个玩意,缓存!就是要在路口处画上停止线,让数据到这里登一等,好让交警判断什么时候该谁走

寄存器
终于,该有的都有了,最后来个合体

cpu半成品
当然,没那么容易就造成了,这只是一个十分简单的cpu,目前只能跑跑一些比较简单的程序,速度还不快。想要让它更快的跑起来,还需要不断的往上面添加东西,不断的优化,减少面积。
喜欢的可以先关注着,后面小编会完善它,录着视频,到时候发出来给大家看看,一起讨论学习。