大二EE学生用硬件描述语言构建8位CPU
速览
该资讯介绍了两名电子工程(EE)大二学生成功构建8位CPU的项目。这一成果展示了他们在硬件描述语言和数字逻辑设计方面的扎实基础。对于计算机组成原理的学习和硬件开发实践具有积极的示范意义。
AI 深度解读
Show HN: 我们作为大二EE学生构建了一台8位CPU
背景
在计算机组成原理的教学与实践中,学生通常面临两种主流的学习路径:一是基于 EEPROM 微码的简化设计(如 Ben Eater 著名的 8 位面包板计算机系列),其实现简单但内部运作机制较为黑盒;二是使用 VHDL/Verilog 等硬件描述语言进行仿真,虽然功能强大,但往往抽象于物理现实之外,难以直观对应到具体的电子元件。
STEPLA-1 项目由两名电子工程(EE)大二学生发起,旨在探索第三条路径:完全基于离散逻辑门(Discrete Logic Gates)的底层设计。该项目在 Logisim-Evolution 中完成设计与仿真,从最基础的逻辑门层级构建了一个功能完整的 8 位 CPU。其核心理念是“透明度”——每一根信号路径、每一个控制信号都对应真实的物理逻辑门,使得机器内部运作完全可见、可追踪且可文档化。
核心内容
STEPLA-1 是一个基于 8 位哈佛架构(Harvard Architecture)的中央处理器,当前版本为 2.4.2,处于开发阶段。与基于微码或 EEPROM 的设计不同,STEPLA-1 的控制单元完全由硬连线逻辑(Hardwired Control Unit)构成,本质上是一个基于门级 AND/OR 矩阵的 PLA(可编程逻辑阵列)启发式设计。这意味着每一个控制信号都是由物理逻辑门生成的,其输入端甚至可以用万用表进行探测,这是微码设计无法比拟的透明度。
架构细节
- 架构类型:8 位哈佛架构,指令存储与数据存储物理分离。
- 指令集:4 位操作码空间,共 16 条指令。
- 寄存器:4 个通用寄存器(RA-RD)。
- 存储器:指令 RAM 和数据 RAM 各 256 字节。
- 启动机制:包含引导控制单元(BCU),负责在冷启动时将 ROM 中的引导程序传输至 RAM。
控制单元设计
控制单元采用分层解码机制,包括操作码解码器、步序解码器以及 AND 矩阵。它不依赖 EEPROM 或微码,纯粹由组合逻辑构成。这种设计使得 CPU 的行为完全由电路的物理连接决定,消除了软件层面的抽象层。
性能指标
- 指令周期:可变周期指令,执行时间为 3 到 5 个时钟周期。
- 优化策略:
- 早期退出的条件分支:减少约 25% 的延迟。
- 同步加载到一重置机制:相比 v2.3 版本,效率提升 33%。
- 吞吐量:计算出的 IPC(每时钟周期指令数)在 0.200 到 0.333 之间,加权平均为 0.263。
- 目标频率:在物理面包板上目标时钟频率为 4 MHz。
- 有效吞吐量:在目标频率下约为 1 MIPS(每秒百万条指令)。
项目结构与使用
项目目录结构清晰,包含主仿真文件、控制单元子电路、寄存器文件子电路、BCU 子电路以及示例程序(如斐波那契数列演示和基础计数器)。
运行步骤:
- 安装 Logisim-Evolution v3.8.0 或更高版本。
- 克隆仓库并打开
simulations/8bitcomp.circ。 - 将
programs/fibonacci.asm加载到 ROM 中。 - 将开关拨至 1 并按下复位按钮。
- 以所需频率运行时钟。
启动时,BCU 会自动将指令 ROM 的内容复制到指令 RAM,随后将控制权交给 CPU。
物理构建可行性
STEPLA-1 的设计不仅限于仿真,还详细规划了物理构建方案,使用 74HCT 系列逻辑芯片:
- 逻辑门:74HCT08 (AND), 74HCT32 (OR), 74HCT14 (NOT), 74HCT86 (XOR)
- 寄存器:74HCT377, 74HCT175, 74HCT74
- 解码器:74HCT154, 74HCT138, 74HCT139
- 计数器:74HCT163
- ALU:两片 74HCT283 级联
- 存储器:AS6C62256 SRAM, AT28C64B EEPROM
- 总线驱动器:74HCT244, 74HCT245
时序分析显示,关键路径延迟为 101ns,在 4 MHz 频率下半周期预算为 125ns,因此 4 MHz 的目标频率是可行的。
未来路线图
- v2.5.0(计划中):增加溢出标志(VF)和负数标志(NF),支持有符号算术,新增 JV/JN 条件跳转指令,并引入包含真实元件模型的 Proteus ISIS 仿真。
- v3.0.0(计划中):指令字扩展至 16 位,通用寄存器文件扩展至 16 个,增加硬件栈(PUSH/POP/CALL/RET),采用双异步控制单元,并引入预取缓冲区以接近 1.0 CPI 的性能。
关键要点
- 全离散逻辑设计:STEPLA-1 从逻辑门级别构建,没有使用任何“黑盒”组件,所有信号路径均可追踪,实现了极高的设计透明度。
- 硬连线控制 vs 微码:摒弃了常见的 EEPROM 微码方案,采用纯组合逻辑构成的硬连线控制单元,使控制信号可直接通过物理探针测量。
- 教育意义与物理映射:Logisim 中的每一个逻辑门都直接对应市场上可购买的 74 系列 IC 芯片,仿真图即原理图,降低了从仿真到实物搭建的认知门槛。
- 性能优化:通过早期退出条件分支和同步加载机制,显著降低了延迟并提升了效率,目标实现 1 MIPS 吞吐量。
- 开源与社区驱动:项目采用 MIT 许可证开源,欢迎贡献者参与物理面包板搭建文档、汇编程序编写、汇编器实现及 v3.0 架构讨论。
- 致敬经典:项目灵感来源于 Ben Eater 的透明 CPU 设计、Leon Nicolas 的 RAM 级联结构,以及 Malvino、Patterson & Hennessy、Charles Petzold 等经典教材的理论基础。
意义与影响
STEPLA-1 项目为电子工程教育和计算机体系结构爱好者提供了一个极具价值的参考案例。它证明了即使作为大二学生,也能通过严谨的设计和方法论,构建出功能完整且高度透明的底层计算系统。
首先,它填补了“高级抽象仿真”与“物理实物搭建”之间的空白。对于学习者而言,HDL 仿真往往掩盖了时序、信号完整性等物理现实问题,而 STEPLA-1 通过详细的时序分析和元件选型指南,展示了如何将数字逻辑理论转化为可运行的物理电路。
其次,该项目强调了“理解”优于“实现”。通过完全硬连线的控制单元,开发者必须深入理解每一个控制信号的生成逻辑,这种深度参与有助于建立对计算机底层工作原理的直觉性认知,这是黑盒式微码设计难以提供的。
最后,作为一个开源项目,STEPLA-1 不仅提供了代码和文档,还规划了从 8 位到 16 位、从同步到异步、从简单寄存器到硬件栈的演进路线。这为后续更复杂的 CPU 设计(如 RISC-V 或 x86 的简化版)奠定了坚实的工程基础和教育范式。
