在复古硬件爱好者与计算机历史研究者的共同努力下,一项针对IBM PS/2系列中MCGA(Multi-Color Graphics Array)图形系统门阵列芯片的反向工程近日取得重要进展。这一项目不仅揭示了上世纪80年代末期IBM图形技术的底层设计细节,也为保护与修复经典计算机系统提供了关键数据支持。
历史回顾:MCGA的独特地位
1987年,IBM推出了PS/2系列个人电脑,同步引入了两种新型图形标准:面向高端机型的VGA(Video Graphics Array)和面向低端机型的MCGA。MCGA本质上是一个VGA的精简版本,它同样采用模拟信号输出,支持640×480分辨率下16色显示,以及320×200下256色模式——后者在当时堪称开创性突破。然而,MCGA去除了VGA的文本模式兼容性和部分图形加速功能,并且没有提供传统的CGA/MDA兼容性,这使得它在IBM产品线中处于尴尬位置,只短暂出现在PS/2 Model 25和Model 30等机型上。
MCGA的核心是一块专用门阵列芯片(Gate Array),它集成了CRT控制器、显示内存控制器、属性控制器以及数字-模拟转换器(DAC)等关键部件。由于IBM未对该芯片进行公开文档化,加之其非标准封装形式,长期以来,相关技术细节一直处于“黑箱”状态。
反向工程:从物理解剖到功能逆向
本次反向工程项目的核心目标是完整解析MCGA门阵列芯片的内部逻辑结构,并生成可综合的硬件描述语言(HDL)模型。项目团队采用了一套系统化的逆向流程:
首先,对芯片进行物理去封装处理。通过浓硝酸腐蚀环氧树脂外壳,露出裸片,随后使用高分辨率显微镜对金属层、多晶硅层以及扩散层进行逐层拍摄。芯片采用3μm CMOS工艺,包含约6000个逻辑门,在显微镜下呈现出清晰的电路拓扑。
其次,利用开源工具如degate和netlist对显微图像进行矢量化处理,将实际的物理布线转化为逻辑门级网表。团队识别出主要功能模块:一个逐行扫描的CRT控制器(支持15.75kHz水平频率和60Hz垂直频率)、一个调色板RAM(256×18位)以及一个比较简单的像素处理流水线。值得注意的是,MCGA没有独立的属性控制器,而是将字符属性与图形数据传输整合到同一通道中。
最后,将提取的网表转化为Verilog HDL代码,并在Xilinx FPGA上进行了功能验证。测试结果表明,反向工程生成的模型能够完美驱动标准的CRT显示器,复现了MCGA的全部256色模式,包括其独特的调色板排列和像素混叠特性。
技术细节与重要发现
逆向过程中,团队发现了若干此前未被文档记载的设计特点:
-
时钟分配策略:MCGA门阵列采用了独特的双相时钟方案,系统时钟(25.175MHz)与像素时钟(12.5875MHz)之间通过二分频电路实现同步,但分频器的实现方式与VGA的PLL方案截然不同,完全依赖于门延迟。
-
调色板DAC设计:不同于VGA使用的独立DAC芯片(标准DAC为6位每通道,共18位),MCGA的DAC集成在门阵列内部,采用电阻梯形网络,每通道仅提供6位色彩深度,但通过特殊的伪色扩展算法实现了近似8位每通道的视觉效果。
-
模式切换机制:MCGA的256色模式实际上是16色模式的一种变体,通过复用16个4位像素平面来实现。这种设计意味着它在320×200分辨率下实际需要128KB的显示内存,而非通常认为的64KB。
意义与影响
这一反向工程成果对于复古计算社区具有多重价值。首先,它为修复和复制PS/2 Model 25/30提供了精确的图形子系统参考实现。目前已有爱好者计划基于FPGA制作MCGA兼容卡,使得这些经典机型在硬件失效后仍能恢复完整功能。
其次,从计算机历史研究角度看,MCGA是IBM图形架构从数字时代向模拟时代过渡的关键见证。它比VGA更早引入模拟输出,却在商业上被VGA掩盖。通过这一工作,学术界能够更清晰地理解1980年代图形芯片设计的成本控制与功能权衡策略。
最后,项目团队已将所有设计文件(包括显微照片、网表、HDL代码和测试用例)开源发布在GitHub上。这不仅是对开源硬件运动的贡献,也为其他老式门阵列芯片的逆向工程树立了方法论标杆。
随着这一项目的圆满完成,IBM MCGA这位被遗忘的图形先驱终于得以数字化重获新生。它的故事再次提醒我们:在技术演进的长河中,那些看似“非主流”的设计方案,往往蕴含着启发后人的独特智慧。对于每一位关注计算历史的爱好者而言,这无疑是一个令人振奋的消息。