2022-7-27 11:40:46 [显示全部楼层]
5988浏览
查看: 5988|回复: 6

纯手工自制一个16位RISC架构CPU

[复制链接]
本帖最后由 RRoy 于 2022-7-27 11:40 编辑

纯手工自制一个16位RISC架构CPU图1




这周和大家分享的这个项目来自hackaday。

纯手工自制一个16位RISC架构CPU图2

从创作的日志来看,这个项目从2018年底开始,一直到陆陆续续更新到前俩天。

纯手工自制一个16位RISC架构CPU图3

一个耗时又有趣的项目。

项目的起因是,作者在学习了MITx的 "计算结构 "课程后,发现好像自己做一个CPU也没那么难。

纯手工自制一个16位RISC架构CPU图4

在掌握了电子学的初级知识和课程中介绍的概念之后,就开始设计想要做一个基于NMOS逻辑的RISC CPU。

课程中介绍的是Beta CPU——有一个负载存储,32位RISC架构。

为了节省空间、晶体管,少掉一点头发,作者决定把自己的这个CPU减少到16位。

注: MITx的"Computation Structures"官网中对这门课的描述是This course introduces architecture of digital systems, emphasizing structural principles common to a wide range of technologies.

相当于我们国内的数字电路以及计算机组成原理的课程。

B站有UP主做搬运,有兴趣的可以看一下:【MIT公开课】6.004 计算结构 · 2019年春(完结·中英字幕·机翻)[1]

课程原文链接:Computation Structures[2]
如果把它安装在墙上,它将占据一整面墙。

纯手工自制一个16位RISC架构CPU图5

纯手工自制一个16位RISC架构CPU图6

为了让整个计算机看起来更复古,输入输出部分,作者专门搬出来自己壁橱里的一个旧的Apple II Plus来处理。

纯手工自制一个16位RISC架构CPU图7

注:Apple II Plus 发布日期 1979年6月,已经是43年前的事了……

纯手工自制一个16位RISC架构CPU图8

作者用钉板、原型板、2N7000晶体管、电阻(主要是SIP和一些分立器件)、LED、一些HP-5082显示芯片、一些电致发光线和许多可爱的彩色跳线来构建这么一款CPU。

纯手工自制一个16位RISC架构CPU图9

作者给整个计算机起名为——Spikeputer,目标是它能够执行简单的程序,并且能够让计算过程可视化。

纯手工自制一个16位RISC架构CPU图10

下面是作者提供的一段介绍:

Spikeputor将会是一台功能齐全的计算机,它的CPU完全由NMOS逻辑制成,使用约5000个MOSFET(2N7000)、电阻和LED来显示逻辑。

HP-5082-7340 Hex显示芯片将被战略性地加入来显示主要CPU组件输出的数字内容,尽管如果你阅读二进制,LED将提供同样的信息。

利用电致发光线来可视化主要部件之间的逻辑路径。

CPU的时钟频率将可以从最大速度(预测为数万赫兹范围)下调至单步。(补充:GHz=千兆赫)

由于制作Spikeputor的主要驱动力是让它能够可视化计算过程,所以速度并不是最重要的,虽然还是会采取一些步骤(例如时钟树)来提高计算机的整体性能。

纯手工自制一个16位RISC架构CPU图11

纯手工自制一个16位RISC架构CPU图12


Spikeputor CPU的设计特点和主要部件
  • 16位的地址空间
  • 寄存器内存:七个16位寄存器,加上1个硬编码为0的寄存器。
  • 多功能ALU
    • 加法和减法,支持负数补码
    • 比较(等于、小于、小于或等于)
    • 布尔逻辑(AND, OR, XOR, Identity)
    • 移位运算
  • 用简单的逻辑门实现的控制逻辑(没有微代码或ROM)
  • 用于程序计数器、指令、常数、CPU阶段和一些必要的状态标志的附加寄存器
  • 单字操作码用于寄存器之间的操作
  • 寄存器和16位常数之间操作的双字操作码
    • ALU功能(见上文)
    • 内存功能:加载、相对于PC的加载和存储
    • 有条件(BEQ, BNE)和无条件的分支,带分支点存储
  • IRQ和RESET处理(包括自动使用寄存器R6作为异常指针)
  • 所有I/O的直接内存访问(DMA)。


内存

为了能够执行更多琐碎的程序,Spikeputor CPU将与高速静态存储器RAM(2 x 32K AS6C62256)和ROM(2 x 32K AT27C256R)芯片连接。此外,还会创建一个镜像的只写 "屏幕存储器",也是由(大约5000个)晶体管制成,提供一个48乘18的可寻址LED阵列。存储器地址将被限制在字的边界内。试图寻址奇数的存储器位置会返回相应的偶数的16位字。由于没有任何16K的SRAM和ROM芯片可用,我使用了32K的芯片,并会设计一个内存系统,从RAM和ROM中选择16K的库进行读取操作。完整的32K字(64kbytes)的RAM可以在任何时候被写入。


输入/输出
I/O功能作者用1986年的Apple II Plus计算机上运行的定制软件和硬件来实现。作为项目的一部分,作者还设计了一个名为BIAS(连接苹果和Spikeputor的板卡)的自定义外设卡,以及苹果上的软件,来提供键盘输入、屏幕输出和长期数据存储和检索。I/O控制器将直接访问Spikeputor内存,并在所有读写操作中停止Spikeputor CPU。

还实现了16位通用输入和输出信号,镜像到固定的高内存位置。


结构
整个Spikeputor被组装在一系列的无焊接面包板上。每个主要部件(ALU、寄存器存储器、控制逻辑/程序计数器/状态寄存器和屏幕存储器)被布置在一个10.16cm×5.08cm的钉板上。每个钉板可以包含一个9×6的阵列(54)的面包板,并根据需要为一些小的电路留出一些空间。四块挂板中的每一块都被安装在墙上,在安装的下方有空间放Apple II Plus的桌子。


电源
电力需求在25w左右。Spikeputor使用+5V电源,由一组8端口的USB电源提供(每块钉板一个),非常方便。电致发光线的电源是单独的(额外5w)。

欣赏一下图片和视频:

纯手工自制一个16位RISC架构CPU图13

纯手工自制一个16位RISC架构CPU图14

纯手工自制一个16位RISC架构CPU图15

简单的小游戏:



斐波那契数列计算:




计算圆周率:






参考资料

MIT公开课: https://www.bilibili.com/video/av86045726/

Computation Structures: https://ocw.mit.edu/courses/6-004-computation-structures-spring-2017/

原文链接:https://hackaday.io/project/162814-the-spikeputor

项目作者:spudfishScott

译文首发于DF创客社区

▼ 纯手工打造!19岁天才少年自制1200个晶体管的CPU

纯手工自制一个16位RISC架构CPU图16

▼ 小伙一本正经用石头打造CPU,号称99秒“解决”芯片危机

纯手工自制一个16位RISC架构CPU图17

糖醋花生  高级技师

发表于 2022-7-28 15:15:39

这是,自己做电脑???牛
回复

使用道具 举报

dbc0301  高级技匠

发表于 2022-7-28 16:20:34

就像原作者说的,底层原理没有那么难。做到最后就像用乐高拼一个大号死星一样,需要耐心、谨慎和一定的数电知识。
回复

使用道具 举报

派大星ym  初级技匠

发表于 2022-7-29 11:09:33

酷酷酷酷
回复

使用道具 举报

 初级技匠

发表于 2022-8-18 11:48:57

腻害腻害
回复

使用道具 举报

星辰大海://。,  中级技师

发表于 2022-9-9 22:05:50

厉害厉害
回复

使用道具 举报

唯一的苗  学徒

发表于 2022-9-21 18:04:50

这家伙是把计算机组成原理学明白了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail