← 返回信息流
AI 资讯Hacker News·2 小时前

IBM MCGA Gate Array逆向工程揭秘

原标题:IBM MCGA Gate Array Reverse Engineering

速览

本文详细记录了IBM MCGA Gate Array的逆向工程过程。通过拆解和分析该芯片,揭示了其内部架构与设计细节。这项工作有助于理解早期IBM显示技术的实现原理。

AI 深度解读

IBM MCGA Gate Array 逆向工程深度解读

背景

IBM MCGA(Multi-Color Graphics Array,多色图形阵列)是一款低成本视频芯片组,随 IBM PS/2 系列中的 Model 25 和 Model 30 机型一同发布。虽然 Epson Equity 1e 等设备也使用与 MCGA 兼容的视频技术,但其底层芯片并不相同。

MCGA 芯片组主要由两个门阵列(Gate Array)组成:内存控制器门阵列和视频格式化门阵列。这些芯片的制造来源多样,部分采用 IBM 内部工艺制造,另一部分则使用了外部供应商 Seiko(精工)提供的门阵列部件。

此次逆向工程工作的核心对象是 Seiko SLA6430 门阵列。该芯片基于 2um CMOS 工艺,拥有两层金属布线。其内部包含 4,342 个基本单元(Basic Cells, BCs),每个单元包含 4 个晶体管,排列成 167 行 26 列。该芯片实现了 MC6845 同步生成器集成电路的功能,负责管理视频 RAM 与 ISA 总线的接口、字符 RAM 接口,以及包括时钟选择和显示器 ID 读取在内的其他杂项功能。

核心内容

本次逆向工程不仅揭示了芯片的物理结构,还通过对比不同版本的芯片,发现了 MCGA 中未被文档记录的技术细节。

芯片物理结构与逆向过程

逆向工程主要涉及两个关键芯片:

  1. 内存控制器门阵列 (Seiko SLA6430)

    • 规格:2um CMOS 工艺,双层金属,4,342 个基本单元(167x26 排列)。
    • 功能:实现 MC6845 同步生成器,管理视频 RAM 至 ISA 总线接口,管理字符 RAM 接口,处理时钟选择和显示器 ID 读取。
    • 数据来源:逆向工程后的原理图和布局位于 mcga72x8300flat 子目录。
  2. 视频格式化门阵列

    • 功能:解码 ISA 内存和 I/O 端口地址,管理 RAMDAC 接口,并在图形和文本模式下生成像素数据。
    • 版本对比
      • IBM 内部工艺版 (72x8205-gl14105fs):在去盖(decapping)过程中,顶层金属层被意外移除,导致无法提取网络列表(netlist)。
      • Seiko 版 (72x8205-sla6330j):成功完成逆向工程。该芯片为 Seiko SLA6330 门阵列,包含 3,312 个基本单元(144x23 排列),每个单元含 4 个晶体管。详细数据位于 mcga72x8205flat 子目录。

制造工艺与布局分析

  • 图像缩放与处理:原始图像 72x8300 从 21808x21778 像素缩放至 10904x10889 像素。输出 JPG 文件压缩率为 85%,分辨率为 48 DPI,并导入 KiCAD 中进行布局分析,缩放因子设为 0.103170,使得基本单元之间的间距在 KiCAD 单位中对应为 "3mm"。
  • 封装库创建:为每种识别出的基本单元类型创建了封装库,并与原理图符号关联。为了适应原始芯片中许多基本单元的镜像情况,所有焊盘均放置在中心,以便封装可以旋转。
  • 布线逻辑
    • 该门阵列使用两层金属。
    • 允许的接触点有限:金属 1 到金属 2、金属 2 到多晶硅(栅极)、金属 2 到扩散区。
    • 电源与地线:金属 2 层每列有两条平行导线,右侧为 VCC,左侧为 GND。因此,每个基本单元左侧的两个晶体管为 NMOS,右侧两个为 PMOS。
    • 晶体管共享:在基本单元中,两个晶体管共享一个栅极,每个栅极有三个连接焊盘。接触点可将 VCC 或 GND 连接到共享通道连接处的扩散区,或连接到单个/两个晶体管的隔离通道连接处。
    • 信号路径:进入或离开逻辑门的外部信号通常使用横跨整个单元的金属 1 层水平走线连接。逻辑门内部的布线通常在金属 2 层完成。
    • 额外电源线:除了金属 2 层上携带电源和地的垂直平行线外,金属 1 层上还有另一组携带电源和地的水平线。逆向工程布局中未在这些线上放置信号走线,因为它们仅用于供电。
  • 网络提取方法:从封装焊盘开始,追踪底层金属,连接所有相连的焊盘,赋予网络名称,然后反向传播至原理图(这与通常的 KiCAD 流程相反)。

发现的技术细节与寄存器揭秘

通过逆向工程,研究人员发现了 MCGA 芯片中一些未被官方技术参考手册完全记录的功能:

  1. Genlock(同步锁定)功能

    • MCGA 能够锁定外部 HSYNC(行同步)和 VSYNC(场同步)信号。
    • 这些信号引出至视频连接器:引脚 12 (ID1) 为 VSYNC,引脚 11 (ID0) 为 HSYNC。
    • 启用方法:向寄存器 0x12(字符生成器接口和同步极性,或显示感知)的第 3 位写入 1。
    • 文档矛盾:在 PS/2 Model 30 的技术参考手册中,该位被标记为“Reserved = 0”(保留位,值为0)。
    • 硬件需求:启用此模式可能需要在 25MHz 或 14MHz 时钟输入端连接外部时钟 PLL。
  2. 寄存器 0x10 (Mode Control) 位 3 - "Compatibility"(兼容性)

    • 该位仅影响 80x25 文本模式。
    • 当启用时,水平时序寄存器值乘以 2。
    • 特殊调整:对于寄存器 0x00(水平总数),值加 1;对于寄存器 0x02(起始水平同步),值减 1。
  3. 寄存器 0x10 (Mode Control) 位 2 - "Clock = 1"

    • 控制驱动视频电路的时钟源。
    • 默认状态:大部分视频电路使用 25.175MHz 时钟。
    • 修改:将该位设为 0,可将时钟频率切换至 14.318MHz 输入。
  4. 寄存器 0x10 (Mode Control) 位 6

    • 官方文档标记为 "Reserved = 0",但尚未完全理解其具体功能。
  5. 寄存器 0x20

    • 这是一个制造测试模式寄存器。
  6. 计数器加速模式

    • 基本计数器加速模式通过将时钟信号注入每个计数器的最高四位和最低四位,使计数器更快地溢出。
    • 这是为了辅助芯片工厂测试。
  7. 扩展模式寄存器 0x1A

    • 包含两个未记录的位。
  8. 制造测试寄存器访问

    • 通过访问特定位置可获取更多制造测试寄存器:
      • 寄存器 0x19:制造寄存器地址
      • 寄存器 0x18:制造寄存器数据
    • 访问方法:向寄存器 0x19 加载地址,然后在 0x18 处读取或写入内容。
    • 地址为 4 的只写寄存器仅实现特定的
查看原文 →github.com