Show HN:我们作为大二电子工程学生构建了一个8位CPU
摘要
一个完全由分立逻辑门构建的8位哈佛架构CPU,使用Logisim-Evolution设计,提供开源文件和文档。由大二电子工程学生创建。
查看缓存全文
缓存时间: 2026/06/18 02:45
c0rRupT9/STEPLA-1
来源:https://github.com/c0rRupT9/STEPLA-1
STEPLA-1 8位硬连线CPU
一个完整的8位哈佛架构CPU,使用Logisim-Evolution设计和仿真,完全由单个逻辑门构建至门级。
版本: 2.4.2
状态: 开发中
STEPLA-1 是什么?
STEPLA-1 是一个功能完整的8位CPU,其所有组件(寄存器、译码器、ALU、控制单元)均由单个74系列逻辑门构建而成。没有黑盒组件。每个信号路径都可见、可追踪且有文档说明。
与基于EEPROM的设计不同,STEPLA-1 采用完全硬连线的控制单元——一个门级的AND/OR矩阵,其中每个控制信号都是一个物理门,其输入可用万用表测量。这使得该机器具有微码设计所无法企及的透明度。
主要特性
架构
- 8位哈佛架构
- 4位操作码空间,16条指令
- 4个通用寄存器(RA-RD)
- 独立的指令RAM和数据RAM(各256字节)
- 引导控制单元(BCU),用于冷启动ROM到RAM的传输
控制单元
- 完全硬连线、受PLA启发的门矩阵
- 层次化解码:操作码译码器 + 步进译码器 + AND矩阵
- 无EEPROM、无微码——纯组合逻辑
- 每个控制信号均可追溯到单个门
性能
- 可变周期指令:3到5个时钟周期
- 提前退出条件分支(延迟减少25%)
- 同步加载到一的复位(相比v2.3效率提升33%)
- 计算IPC:0.200-0.333,加权平均0.263
- 目标时钟:物理面包板上4 MHz
- 有效吞吐量:目标频率下约1 MIPS
指令集
| 操作码 | 指令 | 周期 | 描述 |
|---|---|---|---|
| 0x0 | NOP | 3 | 无操作 |
| 0x1 | HLT | 3 | 停止执行 |
| 0x2 | ADD | 5 | 寄存器相加 |
| 0x3 | SUB | 5 | 寄存器相减 |
| 0x4 | MOV | 3 | 寄存器到寄存器 |
| 0x5 | MOVI | 4 | 加载立即数 |
| 0x6 | STRD | 4 | 存储到数据RAM |
| 0x7 | OUT | 3 | 输出寄存器 |
| 0x8 | JMP | 4 | 无条件跳转 |
| 0x9 | JZ | 3/5 | 若为零则跳转 |
| 0xA | JC | 3/5 | 若有进位则跳转 |
| 0xB | LDIM | 5 | 加载立即地址 |
| 0xC | LDD | 4 | 从数据RAM加载 |
| 0xD | GETPC | 3 | 获取程序计数器 |
| 0xE | JP | 3 | 跳转到寄存器 |
| 0xF | STIM | 5 | 存储立即地址 |
STEPLA-1 的与众不同之处
大多数教育性CPU项目采用以下两种方法之一:
- EEPROM微码(Ben Eater的SAP-1):实现简单,但操作不透明
- HDL仿真(VHDL/Verilog):功能强大,但与物理现实脱节
STEPLA-1 选择第三条路:离散门仿真,可直接对应物理组件。Logisim中的每个门都对应一个可在电子市场买到的真实74系列IC。仿真即原理图。
与SAP-1对比:
| 特性 | SAP-1 | STEPLA-1 |
|---|---|---|
| 指令数 | 5 | 16 |
| 寄存器数 | 2(固定用途) | 4(通用) |
| RAM | 16字节 | 256字节 |
| 控制单元 | EEPROM微码 | 硬连线门 |
| 条件跳转 | 无 | JZ、JC(可提前退出) |
| 引导加载器 | 无 | 硬件BCU |
| 目标时钟 | ~1 MHz | 4 MHz |
| 有效吞吐量 | ~0.17 MIPS | ~1 MIPS |
仓库结构
STEPLA-1/ ├── simulation/ │ ├── STEPLA-1.circ # 主Logisim-Evolution文件 │ ├── control_unit.circ # 控制单元子电路 │ ├── register_file.circ # 寄存器选择子电路 │ └── BCU.circ # 引导控制单元 ├── programs/ │ ├── fibonacci.asm # 斐波那契数列演示 │ └── counter.asm # 基本计数器程序 ├── docs/ │ └── STEPLA-1_Spec_v2.4.2.pdf # 完整规格说明 └── README.md
快速开始
需求
- Logisim-Evolution (https://github.com/logisim-evolution/logisim-evolution) v3.8.0 或更高版本
运行仿真
- 克隆此仓库
- 在Logisim-Evolution中打开
simulations/8bitcomp.circ - 将
programs/fibonacci.asm加载到ROM中 - 将开关拨至1并按下复位按钮
- 以所需频率运行时钟
加载程序
程序通过引导控制单元自动加载。仿真启动时,BCU将指令ROM内容复制到指令RAM,然后将控制权交给CPU。BCU操作详情见规格说明第8节。
文档
完整43页规格说明涵盖:
- 控制单元理论与PLA架构
- 完整ISA及编码规则
- 每条指令的T状态微操作序列
- 时钟相位同步与双边沿设计
- BCU引导协议与T0空状态
- 针对物理面包板构建的信号调理
- 使用真实组件数据手册的时序分析
- 已知限制与v3.0路线图
📄 [阅读完整规格说明](/STEPLA-1 Control Unit Design Specifictation Manual v2.4.2.pdf)
物理构建
STEPLA-1 设计用于使用74HCT系列逻辑进行物理构建:
关键组件:
- 逻辑:74HCT08、74HCT32、74HCT14、74HCT86
- 寄存器:74HCT377、74HCT175、74HCT74
- 译码:74HCT154、74HCT138、74HCT139
- 计数器:74HCT163
- ALU:74HCT283(×2 级联)
- 存储器:AS6C62256 SRAM、AT28C64B EEPROM
- 总线:74HCT244、74HCT245
目标时钟速度:4 MHz(经时序分析验证,关键路径101ns,4 MHz下半个周期预算125ns)
路线图
v2.5.0(计划中)
- 溢出标志(VF)和负数标志(NF)
- 有符号算术支持
- JV和JN条件跳转指令
- 使用真实组件模型的Proteus ISIS仿真
v3.0.0(计划中)
- 16位指令字
- 16个通用寄存器文件
- 硬件堆栈(PUSH/POP/CALL/RET)
- 双异步控制单元
- 预取缓冲器,逼近1.0 CPI
致谢
本项目基于以下人士的工作:
- Ben Eater —— 他的8位面包板计算机系列展示了CPU设计可以完全透明
- Leon Nicolas —— 他在Logisim中级联RAM的实现提供了结构洞见,促成了STEPLA-1的硬连线控制矩阵
- Albert Paul Malvino —— 《数字计算机电子学》
- Patterson and Hennessy —— 《计算机组成与设计》
- Charles Petzold —— 《编码:隐匿在计算机软硬件背后的语言》
贡献
欢迎贡献。特别感兴趣的领域:
- 物理面包板构建文档
- 附加汇编程序
- 汇编器实现
- Proteus仿真移植
- v3.0架构讨论
请在提交大型更改前先提出Issue。
许可证
本项目开源。 MIT许可证
相似文章
我制作了一款游戏,在其中你可以用逻辑门构建CPU
一款让玩家从零开始用逻辑门构建计算机、设计电路、建造CPU并运行程序的游戏。
我设计了一个基于半字节的Verilog CPU,用于构建科学计算器
该项目使用FPGA在硬件中实现了一个功能齐全的科学计算器,包括自定义软CPU、微码固件和支持工具。它提供了一个基于Web的模拟器和开源的Verilog代码。
构建 TD4 4 位 CPU
本文详细介绍了基于《如何构建 CPU》一书及开源 PCB 设计,亲自动手组装并测试 TD4 4 位 CPU 的过程。
20000个门电路与20 MIPS [pdf]
1990年Amdahl的历史论文,详述了由20,000个逻辑门构建的20 MIPS大型机处理器设计。
在我们的自定义CPU上运行Doom并走红
作者描述了在逻辑门级别设计自定义CPU、集成带有缓存的DDR3内存,并成功在FPGA上运行Doom的经历,该经历随后走红网络。