自己动手,做个cpu

码农翻身 码农翻身     2022-12-23     373

关键词:

纯手工打造一个 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 就看着乱乱的。

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

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

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

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

自己动手做个分页插件(代码片段)

PC分页,完美支持ie8+,2KB下面就是见证奇迹的时刻dome地址https://github.com/cleartime/pageSize/blob/master/dome/index.html配置详情varconfig=el:document.getElementById("page"),//绑定到你的dompageCount:10,//总页数ps:如果后两项填写了则本字段失效,两者只需其 查看详情

自己动手写cpu光盘资源

链接提取码:22qo 查看详情

[android]自己动手做个拼图游戏(代码片段)

目标在做这个游戏之前,我们先定一些小目标列出来,一个一个的解决,这样,一个小游戏就不知不觉的完成啦。我们的目标如下:游戏全屏,将图片拉伸成屏幕大小,并将其切成若干块。将拼图块随机打乱,并保证其能有解。... 查看详情

android自己动手做个扫雷游戏(代码片段)

1.游戏规则扫雷是玩法极其简单的小游戏,点击玩家认为不存在雷的区域,标记出全部地雷所在的区域,即可获得胜利。当点击不包含雷的块的时候,可能它底下存在一个数,也可能是一个空白块。当点击中有数字的块时,游戏... 查看详情

与其想当然的overdesign,不如自己动手做个试验(代码片段)

ConmajiaJan.29th,2019早在2012年,我曾经针对C#System.Random不同的初始化方案专门做过一次试验,得出了单次默认初始化即可获得质量很好的随机数的结论。可是这么多年过去,C#从2.0升到了4.7,还能在网上看到很多新手(甚至是老鸟)... 查看详情

自己动手写cpu之第四阶段——mips编译环境的建立

将陆续上传本人写的新书《自己动手写CPU》(尚未出版)。今天是第13篇。我尽量每周四篇4.4MIPS编译环境的建立   OpenMIPS处理器在设计的时候就计划与MIPS32指令集架构兼容,所以能够使用MIPS32架构下已有的GNU开发工具... 查看详情

自己动手写cpu之第七阶段——简单算术操作指令实现过程

将陆续上传本人写的新书《自己动手写CPU》。今天是第25篇。我尽量每周四篇亚马逊的预售地址例如以下,欢迎大家围观呵!http://www.amazon.cn/dp/b00mqkrlg8/ref=cm_sw_r_si_dp_5kq8tb1gyhja4China-pub的预售地址例如以下:http://product.china-pub.com/38... 查看详情

自己动手写cpu之第九阶段——载入存储指令说明2(lwllwr)

将陆续上传新书《自己动手写CPU》。今天是第38篇,我尽量每周四篇,可是近期已经非常久没有实现这个目标了。一直都有事,不好意思哈。开展晒书评送书活动,在q=%E4%BA%9A%E9%A9%AC%E9%80%8A&ie=utf-8&src=se_lighten_f"style="color:rgb(5... 查看详情

用tensorflow做个聊天机器人

...习聊天机器人的资源,不知道小伙伴们有没有去学习呢。自己动手做聊天机器人教程我最近每天都会学一点,拿出解读来和大家分享一下。本文结构:聊天机器人的架构简图用TensorFlow实现Chatbot的模型如何准备chatbot的训练数据Cha... 查看详情

自己动手写cpu_5_5.4逻辑位移操作与空指令的说明

5.4逻辑、位移操作与空指令说明5.4.1and、or、xor、nor指令格式    指令用法 5.4.2andi、xori指令指令格式    指令用法 5.4.3lui指令格式指令用法 5.4.4sll、slv、sra、srav、srl、srlv指令格式  ... 查看详情

vue-动手做个选择城市

查看完整的代码请到 我的github地址 https://github.com/qianyinghuanmie/vue2.0-demos一、结果展示二、前期准备:1.引入汉字转拼音的插件,利用NPM安装代码指令为npminstallpinyin--save,详细步骤请到pinyin 2.引入vue-resource,调用json文... 查看详情

自己动手写把”锁”之---jmm和volatile

一、JAVA内存模型关于Java内存模型的文章,网上真的数不胜数。在这里我就不打算说的很详细、很严谨了。只力求大家能更好的理解和运用,为后边的技术点做铺垫。 内存模型并不是Java独有的概念,而是我们的计算机硬件平... 查看详情

动手做个ai机器人,帮我回消息

大家好,我是鱼皮,自从做了知识分享,我的微信就没消停过,平均每天会收到几百个消息,大部分都是学编程的朋友向我咨询编程问题。但毕竟我只有一个人,没法所有消息都一个个回复,所以也是... 查看详情

动手做个智能水族箱(代码片段)

下图是本案例除硬件连线外的3步导学,每个步骤中实现的功能请参考图中的说明。1、简介1.1、背景  伴随着人们生活水平的提高,养鱼已经成为了一种新的时尚,各种桌面鱼缸层出不穷,但是市面上的鱼缸系... 查看详情

动手做个智能水族箱(代码片段)

下图是本案例除硬件连线外的3步导学,每个步骤中实现的功能请参考图中的说明。1、简介1.1、背景  伴随着人们生活水平的提高,养鱼已经成为了一种新的时尚,各种桌面鱼缸层出不穷,但是市面上的鱼缸系... 查看详情

程序员的动手能力

...学边撸代码。而是指,如果你有个想法,并且你自己能搞定,你就去把它做出来。你的想法一定是来自于你身边真实的需求,千万不要yy一个需求,否则你做出来之后,很可能没人用,甚至连你自己都... 查看详情

自己动手从零写桌面操作系统grapeos系列教程——18.外设和io(代码片段)

学习操作系统原理最好的方法是自己写一个简单的操作系统。一、外设和I/O接口前面我们介绍过冯·诺依曼结构包含5部分,其中输入设备和输出设备统称为外部设备,简称外设。常见的外设有鼠标、键盘、显示器、硬盘等。由于... 查看详情

自己动手写cpu——第一篇

1设计目标从本章开始将一步一步实现教学版openMIPS处理器。首先介绍系统的设计目标,其中详细说明了openMIPS处理器计划实现的5级流水线。1.1设计目标openmips设计的目标如下:五级流水线,分别是:取指、译码、... 查看详情