本文来源:EETOP
如果你想自己DIY CPU,第一个想到的一定是采用FPGA来实现,对于一个电子行业的朋友来说做一个简单的CPU应该不算太难。当然也有一些另类做法,比如有人在我的世界游戏里,采用红石搭建过CPU。还有不久前一个国外的小伙用230片纯74逻辑芯片搭建一个RISC-V处理器。
现在更牛x的来了!最近B站上大火的一个视频,或许给了DIY CPU一个更完美诠释:
纯手工!纯分立晶体管!完全手工焊接!DIY 自制CPU!
视频链接:
https://www.bilibili.com/video/BV1sy4y1j7Ue
这位叫做“奶味的”Up主,耗时整整半年,用他那双勤劳的双手,逐点焊接,最终打造出了一个纯分立器件的完整CPU!
手工做一个CPU能用么?
当然可以,他还做了一个demo展示,来看一下效果吧。
纯手工DIY出一个CPU,还成功运行了流水灯效果,直接引发了一大波网友们的惊呼:
接下来,让我们一同看下自制CPU的完整过程
以下文字图片来自百度贴吧,由网友描述:
https://tieba.baidu.com/p/7432882849?see_lz=1
原材料是二极管,三极管和电阻
上个几年前画的原理图。
从头开始更,首先工作是验证门电路
理论通过之后,先从最容易的做起,先造一个移位寄存器,数据从一个方向进,一个时钟周期移动一个位置,最后从另一个方向出。这个就像是现在马路中间的交警,指挥着数据什么时候该往哪里走
直接更完pc,不过这图还不是完全体,此时亮灯不正常,原理图有很大的问题
下条指令想做跳转来着,发现缓存不够用
升级了一个缓存,这样就可以实现跳转了,明天尽量运行流水灯
这是PC--程序计数器刚出炉的图,与移位寄存器相互配合工作。
一个晚上才一条指令,改了一整排二极管,头疼
用hm628512做rom和ram,就是硬盘和内存。然后造一部分ALU-算数逻辑单元出来,这块包子有左移、右移、与、或、非、同或、异或这么多功能,这主要是归功于元件复用,建造面积才不那么大。
这几天说要跑个流水灯,却一直鸽着,原因就是PC又双叒叕坏了,终于找到原因并把它揪了出来。
这二极管,玄学性被击穿,拆下来焊盘都没了
焊制通用缓存
把线都连起来,做好测试,装机调试
完善了的程序计数器。之前在做跳转指令的时候,它很不听话,胡乱跳。经过两周的时间找问题,改了大量的电路,还挑出了一个损坏的二极管,终于在昨天使用1Hz的工作频率下,正常运行过一会,但是发现有1/4的概率会跳错位置,并且在高于4Hz的频率下,完全不能运行。与工作频率有关的,那肯定有电流不足的原因,心想,完了,全部电阻都使用10k阻值的,如果真的是这个原因,那全盘皆输,只能重新来。终于终于在今晚,把最有可能电流不足的的一个地方减少了一个二极管,然后它成功运行了起来,泪目!整合所有模块,指令跳转已无异常。目前这个cpu,在555最高工作频率下有3条指令是可以运行的了,可以跑个流水灯。得攒钱买个更快的波形发生器才行。
造cpu的这个过程,真的是要多艰难有多艰难,要多烧脑有多烧脑,白天上班写程序,晚上继续肝cpu,休息不足,用脑过度,头疼了一个月了。更得不快,还请各位hxd多担待担待。
现在,这个全部由三极管、二极管和电阻焊接而成的CPU就完成了!
//如何编程
因为这个CPU的指令集和架构都是自主研发的,所以没有适配的编程语言。
那怎么能让它跑起来呢?
这位Up主的对策是:纯手写最原始代码——二进制编程!
然后一步一步通过拨动开关手工输入进去
程序编好了!接下来,便是见证奇迹的时刻。
在看完这波“神级”操作之后,想必大家都想了解这位大神。
大神原名林乃卫,广西北海人。
做这个项目的灵感,来源于在他写代码时分析可执行文件中的二进制。
那时候大神便萌生出了一想法:
CPU是怎么执行这一串0101的?
在结合数电课程的知识之后,大神猜测到了大致的原理,于是就想试一试。
最初他想用门级电路来做的,但是感觉难度不是很高,又想把整个过程从零开始理解透。
于是,便决定从最基础的模拟电路开始。
而整个过程最难的部分,便是“器件每一级的连接”和“CPU的运行速度”:
在此之前没有看过关于CPU原理方面的书籍,是靠自己对门电路的理解而设计的一套电路 ,想设计一套属于自己的架构。
从最基础的三极管开关到门级电路,网上找的电路图根本没法用,需要自己设计。虽然设计好后理论通过了,但是门级之间组合成功能级器件就有新的问题,功能级的电路再多个 组合起来成为功能模块又会产生新的问题,模块与模块之间连接更会产生新的问题.
这每一级的问题都很有可能要修改基础电路,然后又会从头开始产生新的问题。
因为没有专业的设备去调试,我用的是一盏LED和蜂鸣器,想尽办法也将速度提高到100kHz左右 而已,这是十分慢的,过程也十分艰难。
至于器件方面,大神均是从网上购得,然后再将它们一点一点地焊接成为模块。
这个CPU大致耗费了1000多个三极管、2000多个二极管,电阻数量也达到了2000多,焊点近万。目前的费用大概花了1000多元。
*声明:本文系原作者创作。文章内容系其个人观点,我方转载仅为分享与讨论,不代表我方赞成或认同,如有异议,请联系后台。