自己动手,做个CPU

手工打造八位CPU:从零入门电子DIY的实战教程

纯手工打造一个 CPU 这个事儿。

在电子专业的同学眼里,很容易。

在计算机专业的同学眼里,稍稍有点复杂,有的专业课的实验课可能会带着同学做一个,或者用 Logisim 这样的仿真软件去模拟实现一个。

在非计算机专业的同学眼里,就有点不敢想象了。

我就属于第三种。

纯手工做一个 CPU 有很多好处,做完了以后确实对计算机组成的原理有了更为深入且直观的理解,而且也能稍稍涉足到电子领域,产生兴趣。

所以有那么几个月的时间,我就真正去实践了一下,做出来了一个能跑的玩具版的八位 CPU。

哦,这不是最终版的,熟悉我的读者朋友知道,完整版的 CPU 已经因为当时和女朋友吵架,被她怒掰成了两半。

如果最终做出来,应该是这个样子。

感兴趣的朋友,又不知道如何开始,可以走一遍我的老路,今天分享给大家。

当时我完全不知道这玩意该咋弄,网上找了好久也没找到个靠谱的能教我一步步做的,但后来居然发现了这个神奇的网站。

https://eater.net/

这网站真的是绝了,作者叫 Ben Eater,是个极客,里面放了很多教你如何做各种东西的视频,而且是保姆级教学。

而被我发现了,置顶的一个教学就是 Build an 8-bit CPU from scratch,用面包板搭建一个八位的 CPU。

于是就照着这个视频一步一步做了。

可以点开看一下。

 看整体大纲,就是分模块一个个做的,你说你要是花上一段时间都做一遍之后,怎么可能对计算机组成原理不了解呢?简直如数家珍啊。

当然我当时遇到的第一个问题就是,买什么材料,这些在这个页面也都包含了,就在前几章里。

不过这都是美国的购买方式,当时我也是花了好长时间,把它对应成了在中国的电子元器件的名称。

一共是284.85元(含12块邮费)!

可以想象下当时我的痛苦,在完全没有任何电子知识的情况下,把英文的那些描述转换成中国可以买到的电子器件,我感觉我都可以成为 Ben Eater 在中国的代言人了。

准备好这些器材之后,就跟着视频一步一步搭建就好了,我当时是真的跟着视频一步步搭建的,连人家的手法和姿势都不敢不一样,哈哈。

比如最先搭建的就是时钟模块,用的是 555 定时器。

比如由两个 74LS173 和一个 74LS245 构成一个寄存器以及连接到总线上的过程。

然后一根线一根线插,感觉我当时的手都快变小了。

哦当然,如果你对电子知识一窍不通零基础的话,比如我,还得先从如何认识色环电阻的阻值开始学起。

以及不同种类的电容长什么样。

电解电容

独石电容

等等。

总之吧,这个东西快不得,如果你能坚持下来,最后全都搞起来,会变成这个样子(理想情况)

正面图看的话,是这个样子。

我总共耗时了两个月时间,不过是因为我一般都是平时中午回家睡觉前,搞个半小时左右,所以每天也就搞半小时而已,周末多搞一点,也就出来了。

把这个弄出来之后,好多原理真的是清晰了不少,包括以前知道的知识,在自己动手真正实现的时候,又有完全不同的理解,尤其是整个控制器电路的设计与实现,真的是让我大吃一惊。

如果你也想做一个 CPU,不论是帮助自己理解 CPU 原理,还是纯粹想玩一玩,或者想让自己入门电子 DIY 这块寻找一个有趣的突破口,都可以直接登陆这个网站跟着 Eater 大佬的保姆级教学一点点做。

不过这个是纯英文的,而且没有字幕,不过好在也有国人帮忙配上了字幕,并且放到了 B 站上。

https://space.bilibili.com/3065282/#/channel/detail

哦对了,说个小秘密,买这些导线的时候,别买那种固定规格的长度的导线,那样很难调整长度,最终你做出的 CPU 就看着乱乱的。

买那种直接一卷的线,然后用剪线钳剪出不同的长度,这个过程看似麻烦,但后期整个线排布得漂漂亮亮的时候,能节省不少时间。

是的,不要幻想着一遍成,有次我有个导线插错了一个洞洞,找了好几个小时才找出问题...

最后,加油!欢迎大家入坑,也欢迎随时加我好友交流整个过程。

我们明天见。(哈哈这么说好像我是日更博主一样,占便宜了)

### 自制CPU教程:计算机组成原理实现方法 #### 1. 理解基础概念 构建一个简易的CPU涉及多个方面,包括但不限于指令集架构设计、硬件组件的选择与连接、微程序控制器的设计等。为了简化这一过程,可以从最基本的部件开始着手,逐步增加复杂度。 #### 2. 指令集定义 在创建自己的CPU之前,首先要确定该处理器支持哪些类型的指令。这涉及到选择合适的寻址模式和支持的操作码。例如,在基本模型机的设计中,完成了相关指令格式及其编码的设计,实现了机器指令微代码,并编写了能够执行特定任务的应用程序[^1]。 #### 3. 数据路径规划 接下来考虑的是数据流经各个单元的方式。单周期CPU提供了一种直观的方法来理解这一点。它具有独立的指令存储器和数据存储器,当访问这些资源时,会依据给定的地址并通过相应的读/写信号来进行操作。此外,还存在用于临时保存中间计算结果的寄存器文件,它们可以通过指定地址进行读取或更新[^4]。 ```python class RegisterFile: def __init__(self): self.registers = [0]*32 def read(self, reg_addr): return self.registers[reg_addr] def write(self, reg_addr, value, we_signal, clk_edge): if we_signal and clk_edge: self.registers[reg_addr] = value ``` #### 4. 控制逻辑搭建 为了让上述硬件按照预期工作,还需要一套有效的控制系统。可以采用硬连线控制或是更灵活的微程序化方案。后者允许通过修改内部表格而非重新布线就能改变行为特性。这种灵活性使得开发者可以在不改动物理结构的情况下调整甚至扩展原有功能。 #### 5. 验证与优化 一旦初步版本准备完毕,则需对其进行详尽测试以验证正确性和效率。这里可能需要用到专门针对CPU性能评估而开发的各种工具,比如CPUmark这样的综合性评测软件可以帮助全面衡量系统的各个方面表现;而对于那些希望深入探究具体细节的人来说,像Hot CPU Tester这样专注于压力测试及参数测量的应用则更为合适[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值