作者: Steven Leibson, Senior Content Manager at Intel®
1969 年 7 月 16 日‚ 一艘载有三名宇航员的飞船从地球出发了‚ 目的地是 38 万公里之外的月球。这艘飞船从诞生以来就注定会吸引来自全世界的密切关注‚ 因为它将去执行一项具有划时代意义的任务——载人登月。它就是美国著名的阿波罗 11 号飞船。如今‚ 半个世纪过去了‚ 人们依旧会惊叹于这项任务的伟大﹑梦幻与唯一。2019 年 7 月 20 日‚ 是阿波罗 11 号登月 50 周年纪念日。为庆祝这一纪念日‚ 人们计划开展或已经开展了许多纪念活动。来自旧金山湾区的一支团队 (Marc Verdiell﹑Ken Shirriff﹑Carl Claunch﹑Mike Stewart) 则用 Terasic DE0-Nano
修复了一台 Block II 阿波罗导航计算机 (AGC)。
阿波罗导航计算机 (AGC) 由美国国家航空航天局 (NASA) 开发‚ 主要用来控制阿波罗宇宙飞船上的导航与制导系统。AGC 是最早使用集成电路的计算机之一‚ 得益于当时美国倾全国之力对阿波罗计划的支持‚ 阿波罗导航计算机代表了当时最先进的科技水平‚ 从尺寸上来说‚ 它已经不再是早期那种占据几个房间的 “巨无霸”‚ 已经小到能放进一个大小只有几英尺 (1 英尺= 0.3048 米) 的盒子里了。
而且‚ 阿波罗导航计算机内部并没有中央处理器‚ 它使用了大约 5600 个门电路来执行计算‚ 每秒大约可以执行 40000 次简单的加法运算。虽然‚ 按照今天的标准‚ 这个计算能力连你手中的智能手机都比不过‚ 但是在当时‚ 它在太空发射的严峻环境中稳定地对阿波罗宇宙飞船进行实时制导‚ 帮助执行了阿波罗 11 号﹑12 号﹑13 号﹑14 号﹑15 号﹑16 号和 17 号飞往月球并返航以及将所有宇航员送上月球的艰巨任务‚ 在阿波罗计划中功不可没‚ 是一台具有重要历史意义的计算机。
然而‚ 这台阿波罗导航计算机在执行完成任务后‚ 却已沉睡了接近半个世纪。来自旧金山湾区的科学家们是如何克服重重困难‚ 唤醒这台一直没有开过机‚ 运行状况不明的 Block II AGC 的呢?
众所周知‚ AGC 是使用两种类型的内存设计的:RAM 和 ROM。由于当时半导体内存尚未发明, 因此 AGC 的 ROM 是磁绳内存 (magnetic rope memory),RAM 是磁心内存 (magnetic core memory)。
从 1953 年到 1971 年‚ 核心内存一直在计算机内存领域占据主导地位。在 20 世纪 50 年代和 60 年代设计的大型机和小型机都使用核心内存作为 RAM。核心内存在数千个手工编织成线栅的铁氧体环中存储 "1" 和 "0"。但手工制作的核心内存价格昂贵还不是特别紧凑。这台诞生于 20 世纪 60 年代的 AGC 没有任何磁绳内存模块‚ 其核心内存最终却无法使用。
在修复 AGC 的过程中‚ 科学家们遇到了诸多内存相关的挑战‚ 其中最严峻的一个挑战是:将该计算机基于 3 输入 NOR 门的异步 RTL 逻辑设计转换为同步 FPGA 逻辑。该修复团队的 Mike Stewart 瞑思苦想,最终决定将 FPGA 的逻辑元件转换为时钟 NOR 门‚ 这样时钟会减慢 FPGA 的逻辑‚ 从而更准确地复制 1962 年基于 RTL NOR 门的实施时序。那么问题又来了:用什么来替换古老 AGC 缺失的磁绳内存和非运行核心内存呢? Stewart 巧思匠心‚ 将之前在 Terasic DE0-Nano 上做的 AGC 磁绳和核心内存仿真的工作移植于此。
之前‚ Mike Stewart 使用原始 AGC 原理图复制了 AGC 硬件‚ 在 Terasic DE0-Nano FPGA 开发板内部 (基于 Cyclone® IV FPGA) 创建了 AGC 硬件仿真‚ 使用 Intel® Quartus® Prime 软件套件‚ 成功地在 FPGA 中复制了整个 AGC‚ 包括其核心和磁绳内存的功能。毫不夸张地说‚ 这一前期的工作‚ 为修复这台 AGC 打下了夯实的基础。此时‚ 他只需将 Terasic DE0-Nano 开发板的 3.3V 逻辑连接到 AGC 的 4V 逻辑 (带一些电平转换器) 即可。
Marc Verdiell﹑Ken Shirriff﹑Carl Claunch 和 Mike Stewart 四位卓越的科学家‚ 克服重重障碍‚ 终于守得云开见月明‚ 成功挑战修复 50 年前的阿波罗导航计算机! 虽然其最终没能赶上阿波罗 11 号登月 50 周年纪念日庆典‚ 但从工程角度讲‚ 这无疑是让世界为之震撼的壮举!
DE0-Nano
是一款拥有 22,320 个逻辑单元 (LEs) 的 Cyclone IV 系列的开发平台‚ 其外围接口也相当丰富‚ 除了 2 个可用于扩展的 GPIO 接口外‚ 板载的同步动态随机存取存储器 (SDRAM) 和电可擦除只读存储器 (EEPROM)‚ 可用于较大容量的数据存储和帧缓冲‚ 同时也配备了一般用户频繁使用的 LED 指示灯和按键等外围设备。
其设计相当精致‚ 具备有尺寸小和重量轻的优势‚ 并且不需要携带过多的硬件设备就能够重新被配置‚ 另外‚ 它为设计者提供了包含有一个 USB mini-AB 接口‚ 2 针的外接电源接头‚ 和 2 个 5V 直流电源接口共 3 种供电模式‚ 对大部分移动设计而言‚ 电源的便携性也相当具有优势‚ 适用于自动控制装置、便携式项目的原型电路等设计。
阅读原文
https://blogs.intel.com/psg/how-to-restore-an-original-50-year-old-apollo-guidance-computer-with-a-little-assist-from-an-fpga/