1987年的IBM PS/2电脑内置了一颗低调的显卡芯片MCGA(Multi-Color Graphics Array),长期以来业界认为它的功能已完全被文档化。但GitHub上一个开源逆向工程项目推翻了这个假设——项目作者成功提取了两颗MCGA内部门阵列的完整网表,并从中发现了至少四处官方手册中完全未提及的硬件功能。
逆向工程对象
MCGA由两颗主要门阵列组成:内存控制器(SLA6430,4342个基础单元)和视频格式化器(SLA6330,3312个基础单元)。两者均采用日本精工(Seiko)的SLA系列工艺,2微米CMOS双层金属制程。项目作者使用化学开封去除芯片封装,经显微镜拍照、图像缩放校准后,导入KiCAD手动追踪晶体管级连线,最终还原出完整的原理图和布局。
意外发现
从门阵列网表中提取的寄存器行为揭示了MCGA设计阶段埋下的"彩蛋":
隐藏的同步锁相功能:寄存器0x12的第3位(官方手册标注为"Reserved = 0")实际控制外部同步信号输入。将该位置1后,MCGA可以从视频接口的第11、12针脚(原本标注为ID0/ID1)接收外部行/场同步信号,实现与外部视频源的帧同步。配合25MHz或14MHz时钟输入端的外部PLL电路,这套机制可用于专业视频制作中的信号锁定。
时钟切换暗门:寄存器0x10的第2位控制显卡使用哪个时钟源。默认使用25.175MHz标准像素时钟;将该位清零可切换至14.318MHz输入,这是CGA时代遗留的时钟信号。这意味着MCGA在硬件层面天然支持CGA兼容模式的时序切换。
工厂测试模式:寄存器0x20和0x18/0x19地址构成一套未文档化的制造测试寄存器访问通道。其中一个只写寄存器(第4地址位)的两个比特位控制计数器加速模式——在芯片测试机上向计数器高低四位注入额外时钟脉冲,缩短测试时间。这些功能从未出现在任何公开技术参考手册中。
为何重要
MCGA是IBM试图以低成本方案统一图形显示的早期尝试,其设计细节长期不为人知。这项逆向工程不仅为复古计算爱好者提供了精确的硬件文档,也为理解1980年代图形芯片的设计哲学——如何在有限晶体管预算内塞入尽量多功能——提供了实物案例。项目已在GitHub公开完整原理图和KiCAD工程文件,并计划下一步将网表转换为Verilog硬件描述语言,以便在FPGA上重现MCGA的完整行为。
编注:信源为GitHub开源项目页面与配套技术说明,材料侧重芯片级电路细节与寄存器行为;涉及MCGA兼容性问题、VGA体系历史背景未在本文讨论范围内。