基于 FPGA 的 LGP-30 复刻项目
© 1999-2025 Jürgen Müller juergen@e-basteln.de Vintage Computing – LittleGP-30
基于 FPGA 的 LGP-30 复刻项目
LGP-30 是一台 1956 年发布的商用计算机。由于其简单的设计和相对较低的成本,它可以被视为第一台“个人计算机”——供单个用户作为他们的“桌面计算机”使用。(它可以放在你的桌子旁边,而且尺寸也和桌子差不多。)
在真空管时代设计,它总共只需要 113 个真空管,其中只有 24 个用于 CPU 本身! 这种简单性是通过位串行 CPU 设计实现的,该设计与磁鼓存储单元紧密集成。 磁鼓不仅包含主存储器,还包含 CPU 的三个 32 位寄存器,以及用于控制指令解码和执行的多个具有定时信号的磁道。
本页面描述了一个真实的位串行实现及其时序的复刻版本,但使用了现代组件。 CPU 和磁鼓存储器在 FPGA 中重新创建——通过实现由 LGP-30 的发明者发布的完整逻辑方程式(在一篇科学论文和计算机的服务手册中)。 磁鼓虽然在 FPGA 内部的板载内存中实现,但可以通过可选的视频显示其内容来实现。
这样,人们就可以玩转 LGP-30 的所有怪癖,包括程序的时序行为,这在很大程度上取决于指令和数据在磁鼓上的位置。 对于那些想真正深入了解位串行设计的细节的人来说,时钟频率可以减慢(一直到单步、逐位时钟),并且可以在 LCD 上检查 CPU 基于真空管的触发器的内容(全部 15 位!)。
最初的 LGP-30:“比桌子还小”!
基于 FPGA 的复刻版本:比桌子小得多……
这个复刻版本基于一个低成本的 FPGA 开发板,即 Numato Mimas (Xilinx Spartan 6 FPGA)。 我添加了一个前端板来提供所有必要的 I/O,并对 FPGA 进行了编程,以实现 LGP-30 逻辑单元,将来自外部 ASCII 终端的字符转换为 LGP-30 的“Flexowriter”打字机使用的代码,并驱动 LCD 和外部 HDMI 显示器以可视化 LGP-30 的内部工作原理。
目前,这只是一个网页,用于托管复刻版本的数据文件和说明。 下面有非常全面的构建说明 - 如果你想了解更多,请从那里开始。 这只是一个业余爱好项目,我不提供套件,但我目前有一些备用的 PCB。 如果您有任何问题或意见,请随时通过以下电子邮件地址与我联系!
最新版本的 LittleGP-30 PCB 除了经典的 RS-232 端口外,还具有用于连接到 PC 的原生 USB 端口。 这使得可以通过单根 USB 电缆轻松地从任何现代 PC 进行数据传输和电源供应。 更新后的二进制文件也为所有较旧的 LittleGP-30 板带来了一些改进:触发器的内容显示并在 HDMI 屏幕上解码,以便更容易地在单步模式下跟随操作。 LCD 上还有一个更好的“示波器”显示,改进的编码器去抖动和磁鼓定位,以及通过编码器调整 LCD 对比度的选项。
值得炫耀的权利:这个项目曾在 Hackaday 上做过专题报道。 ;-)
复刻项目文件
如果您想构建和使用最新版本的 LittleGP-30,请参阅“最新”文件。 这具有上面所示的“宽面板”布局,以及板载的 USB 和 RS-232(迷你 DIN 连接器)接口。
除非另有说明,否则这些文件也适用于早期版本的 LittleGP-30 PCB。 一些特定于版本的文件可以在下面的“旧 PCB 版本的文件”下找到。
最新项目文件
- 构建说明 包括原理图、零件清单等。
- LittleGP-30 主板和前面板覆盖层的 Eagle 原理图和布局
- 主板 和前面板覆盖层 的 Gerber 文件
- 用于 FPGA 配置(Spartan 6)的二进制文件。 也适用于早期的宽面板版本。 对于最初的“袖珍计算器”版本,请参阅下面的专用二进制文件。
- 作为 Microsoft PowerPoint 文件的开关标签。 适用于任何宽面板版本。
- INF 文件,用于将 USB 接口与 Windows 10 之前的 Windows 版本一起使用。 从 XP 开始的所有 Windows 版本以及 Linux 和 Mac OS(USB CDC 设备)都内置了驱动程序。 除了描述 USB 设备之外,Windows XP 到 Windows 8 还需要此 .INF 文件。
- 初始化文件,用于配置 Tera Term 终端程序 以与 LGP-30 复刻版本一起使用。
- 磁鼓映像,用于快速设置磁鼓存储器,例如,用于玩 blackjack 或 lunar lander。
- VHDL 源码 – 用于 Xilinx ISE 的 ZIP 压缩项目文件。 仅当您想研究或修改 FPGA 源代码时才需要。 源代码文件对于所有电路板版本都是相同的。 对于最初的“袖珍计算器”PCB,只需在项目中包含相应的 UCF 文件(引脚分配)。
旧 PCB 版本的相关文件
- 仅具有 RS-232(Sub-D 连接器)的早期宽面板版本的构建说明。 上面的所有其他项目文件也对此版本有效。
- 原始“袖珍计算器”PCB(纵向格式)的构建说明。
- 用于 FPGA 配置(Spartan 6)的二进制文件,适用于最初的“袖珍计算器”版本。
开发工具
- Numato Mimas Spartan 6 开发板 – 在线下订单硬件、文档和下载工具
- Xilinx Web ISE 开发环境。 一个 6 GB 的下载包 - 下载上面的二进制文件不需要! 下载前需要在 Xilinx 网站上免费注册。
- Xilinx 技术支持页面 和一个 论坛帖子,解释了如何在 Windows 8 或 Windows 10 下运行 Xilinx ISE。 遗憾的是,Xilinx 不再维护此开发套件,但也认为没有必要在后继软件套件 Vivado 中支持其 Spartan 6 平台......
LGP-30 文档
斯图加特大学托管了一个很棒的 LGP-30 程序和文档档案。 一些文档是德语的(有一个获得许可的制造商和分销商负责完全德语化的 LGP-30),但也提供了大量英语手册和程序库说明:
- ASCII 转换的纸带 和程序文档。
- 手册 和更多程序文档。
- 包含 CPU 的完整逻辑方程式的推导和完整原理图的服务手册。 德语; 有关解释 LPG-30 逻辑的英语论文,请参见下文。
- 斯图加特大学自己的原始、工作 LGP-30 的历史和维修。
Cory Heisterkamp 正在恢复可能是在北美最后一台接近正常工作的 LGP-30。 他有一个关于恢复项目的非常好的网站,该网站还托管了 LGP-30 的发明者 Stanley Frankel 的两篇经典论文。 强烈推荐!
- Cory 的修复项目。
- Stanley Frankel 撰写的 “磁鼓计算机的有用应用”,Electrical Engineering,1956 年 7 月。
- Stanley Frankel 撰写的 “简单通用计算机的逻辑设计”,IRE Transactions,1957 年 3 月。 本文描述了 CPU 的完整逻辑方程式,只有少量遗漏(在文章中提到)。 如果你想了解 Frankel 优雅设计的内部运作,而不是打算构建 LGP-30 的精确副本,那么本文比服务手册更简洁、更容易理解,当然是英文的。
自下而上:Numato Mimas FPGA 板、LittleGP-30 接口板和前面板覆盖层。
有外壳和没有外壳的 LittleGP-30 复刻版本