除了 SimpleZ80 项目,Grant Searle 还设计了另一款经典的单板计算机 Simple6502。顾名思义,它的核心是 6502 CPU,项目的原始资料可以在 http://searle.x10host.com/6502/Simple6502.html 找到。
之前成功制作 SimpleZ80 的经历带来了不少乐趣,所以我决定把 Simple6502 也复刻出来。不过,上次体验的“绕线大法”实在有些费时费力,这次就决定换一种更“现代化”的方式——自己设计并打样一块 PCB 来玩。
原版电路分析与修改思路
首先,我们来看看 Grant 设计的原始电路图。这是一个典型的 6502 最小系统,包含了 CPU、RAM、ROM、串口以及必要的时钟和复位电路。

在动手前,我结合自己手头的元件和实际需求,对原设计进行了一系列调整,目标是让电路更精简、更符合我的使用习惯。这些修改主要基于对 计算机基础 知识的灵活应用。
- 时钟电路简化:我手头的 6502 CPU 可以直接支持 4MHz 时钟。因此,原图中 U8(74LS14)分频器和 U7A、U7B 组成的晶体振荡电路都可以省去,直接使用一个有源晶振提供时钟信号。
- 逻辑器件替代:原设计使用 74LS00 与非门芯片(U6)来实现地址译码等组合逻辑。我计划用一颗 ATF16V8B 可编程逻辑器件(PLD)来替代它。使用 PLD 的好处是逻辑定义更加灵活自由,修改起来也方便,无需变动硬件连线。
- 存储器配置优化:我打算使用一颗 32KB 的 ROM,并通过一个跳线(Jumper)来选择使用其高 16K 或低 16K 空间。这样,我可以通过拨动跳线,轻松在不同固件或操作系统之间切换。
- 复位电路增强:在 RESET 回路中增加了一个电容,与电阻构成简单的 RC 延时电路,确保上电复位信号更稳定可靠。
- 串口连接现代化:原电路使用 MAX232 芯片进行 RS-232 电平转换。我打算直接使用常见的 USB 转 TTL 串口模块连接 MC68B50 串行接口芯片,这样既省去了 MAX232,也方便用现代电脑进行调试。
- 供电方式选择:增加了一个 Type-C 插座作为电源输入,并设置了一个供电选择跳线。可以选择由 USB 端口供电,或者由串口模块的 5V 输出供电,增加了灵活性。
经过这一番“瘦身”和优化,整个系统所需的集成电路数量大幅减少,核心部分仅需 5 颗芯片,电路结构清晰了不少。
原理图与PCB设计
基于以上的修改思路,我使用立创EDA绘制了新的原理图。下图展示了修改后的核心电路连接。

原理图确认无误后,便进入了 PCB 布局布线阶段。考虑到这个电路的时钟频率不到 2MHz,对布线要求并不苛刻,我“偷了个懒”,大量使用了自动布线功能以提高效率。当然,关键的网络(如电源、时钟、复位信号)还是进行了手动优化。
最终的 PCB 布局如下图所示,整体尺寸紧凑,元件排列也考虑了焊接和调试的便利性。

设计文件检查完毕后,我已经将 PCB 图纸发送给板厂打样,目前正在生产中。手边还缺一颗合适频率的有源晶振,需要另外下单采购。等所有元器件到齐,就可以开始焊接和调试了。
硬件制作的过程本身就是一种乐趣,它融合了设计、动手和调试的全流程。如果你也对这类复古计算机DIY感兴趣,欢迎来 云栈社区 交流分享你的项目和心得。
延伸阅读:在开始这个PCB项目之前,我曾尝试在面包板上搭建过一个更基础的6502系统,相关经历可以参阅此文:分享:面包板上的 6502 计算机。从面包板的混乱到PCB的规整,这个过程本身就体现了对系统 架构 理解的深化。
|