返回
hardware2026年6月27日1 分钟

IBM MCGA门阵列逆向工程:从芯片到电路图

#逆向工程#门阵列#MCGA#IBM#Seiko#视频芯片#PS/2

1. 项目概述

IBM的MCGA(多色图形阵列)是一款低成本视频芯片组,随PS/2型号25和30推出。Epson Equity 1e使用与MCGA兼容的视频方案,但未采用相同芯片。IBM芯片组由内存控制器门阵列和视频格式化器门阵列组成。其中一些芯片采用IBM内部门阵列工艺制造,另一些则使用Seiko的外部门阵列部件。

2. 内存控制器门阵列(72X8300)

该门阵列实现了MC6845同步发生器IC,管理视频RAM与ISA总线之间的接口,管理字符RAM接口,以及一些其他杂项功能,包括时钟选择和监视器ID回读。我逆向工程的示例采用Seiko SLA6430门阵列实现。它包含4,342个基本单元(BC),每个单元有4个晶体管。BC排列为167行和26列。这是一个2微米CMOS工艺,具有2层金属层。图像来自72x8300-sla6430j。逆向工程的原理图和版图可在mcga72x8300flat子目录中找到。

3. 视频格式化器门阵列(72X8205)

格式化器门阵列解码ISA内存和IO端口地址,管理RAMDAC接口,并在图形和文本模式下生成像素数据。该IC有两张图像。第一张,72x8205-gl14105fs,似乎是采用IBM内部门阵列工艺制造的。不幸的是,在开盖过程中,顶层金属层被移除,因此无法提取网表。第二张,72x8205-sla6330j,已被逆向工程:见mcga72x8205flat子目录。它是一个Seiko SLA6330门阵列。包含3,312个基本单元,每个单元有4个晶体管。BC排列为144行和23列。

4. 72x8300(内存控制器门阵列)新发现

基于逆向工程工作,发现了关于MCGA的新信息。MCGA可以同步锁定到外部HSYNC和VSYNC信号。这些信号被引出到视频连接器:引脚12(ID1)是VSYNC,引脚11(ID0)是HSYNC。要启用此模式,请将寄存器0x12(字符发生器接口和同步极性,或显示感测)的位3写为1。在PS/2型号30的技术参考手册中,该位被列为“保留=0”。推测这种同步锁定模式需要一个连接到25MHz或14MHz时钟输入的外部时钟PLL。寄存器0x10(模式控制)位3“兼容性”仅影响80x25文本模式。它导致水平时序寄存器乘以2(对于0x00,水平总数,加1;对于0x02,开始水平同步,减1)。寄存器0x10(模式控制)位2“时钟=1”控制驱动视频电路的时钟。在默认状态下,大部分视频电路使用25.175MHz时钟。您可以通过将该位更改为0来将时钟频率设置为14.318MHz输入。寄存器0x10(模式控制)位6“保留=0”尚未完全理解。寄存器0x20(保留)是一个制造测试模式寄存器。位功能:7 14.318MHz备用时钟模式(未知);6 VCK引脚备用模式(通常VCKIN仅连接到VCK);5 加速模式:未知;4 加速模式:光标位置高计数器;3 加速模式:光标位置低/字符计数器;2 加速模式:垂直总数调整计数器;1 加速模式:垂直计数器;0 加速模式:水平计数器。计数器加速模式基本上将时钟信号注入每个计数器的高四位和低四位,因此计数器更快耗尽。这有助于芯片测试器中的工厂测试。

5. 72x8205(视频格式化器门阵列)新发现

扩展模式寄存器0x1A有两个未记录的位:位功能:1 未知,可能强制256色模式,即使使用其他分辨率;0 未知,可能将边框颜色强制到整个显示。通过访问以下位置可以获得额外的制造测试寄存器:寄存器0x19 - 制造寄存器地址;寄存器0x18 - 制造寄存器数据。要访问特定的制造测试寄存器,将地址加载到寄存器0x19,并在0x18处读取或写入内容。制造测试寄存器包括:地址0 未实现;地址1 只读。包含发送到RAMDAC的最新数据内容(P[7:0]引脚);地址2 只读。包含从VRAM接收的最新数据内容(CP[7:0]引脚);地址3 只读。包含来自格式化逻辑的未知16色模式数据;地址4 只写寄存器,操作见下文。地址4的只写寄存器仅实现以下两位:位功能:0 制造硬复位,等同于复位引脚。写'1'使设备复位,写'0'解除复位;1 写'1'禁用大量输出,包括发送到RAMDAC的输出。

6. 逆向工程过程信息

72x8300图像从21808x21778缩放至10904x10889。输出jpg文件设置为85%压缩以节省空间,设置为48DPI,并以0.103170的比例因子导入KiCAD。这导致KiCAD单位中BC到BC的间距为“3mm”。为每个识别出的基本单元类型创建了库封装,并与原理图符号关联。所有焊盘都放置在中心,以便封装可以旋转,因为原始图像中的许多BC是镜像的。门阵列使用两层金属,理解层间连接可能具有挑战性。通常,只有少数允许的接触:金属1到金属2;金属2到多晶硅(栅极);金属2到扩散区。每列在金属2上有两条平行导线,分别承载VCC(右侧)和GND(左侧)。因此,每个BC中的左侧两个晶体管是NMOS,右侧两个晶体管是PMOS。在一个BC中,两个晶体管共享一个栅极,每个栅极有三个连接焊盘。接触可以将VCC或GND连接到两个晶体管之间共享沟道连接上的扩散区,或一个晶体管、另一个晶体管或两者的隔离沟道连接。进入或离开逻辑门的外部信号通常使用金属1上横跨整个单元的水平走线连接。逻辑门内部的布线通常在金属2上完成。除了金属2上承载电源和地的垂直平行导线外,还有另一组金属1上的水平导线也承载电源和地。我的逆向工程版图没有在这些线上放置走线,因为它们不是信号线。走线从封装焊盘开始,跟随底层金属,连接到所有其他连接的焊盘,赋予网络名称,然后反向传播到原理图(与通常的KiCAD过程相反)。

7. 未来计划

研究从KiCAD网表生成Verilog。

8. 资源与活动

关于IBM MCGA逆向工程芯片的资源。自述文件。哦!加载时出错。请重新加载此页面。活动:29颗星;2个观察者;2个分支。报告仓库。发布:无发布。包:0。哦!加载时出错。请重新加载此页面。贡献者:哦!加载时出错。请重新加载此页面。此时无法执行该操作。


🔗 原文链接:https://github.com/schlae/IBM_MCGA