Apollo Guidance Computer — архитектура и системное ПО. Часть 1

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

Ссылка на часть 2

В предлагаемой вашему вниманию публикации рассмотрены основы архитектуры, аппаратной структуры, и структуры системного ПО бортового компьютера миссий Apollo — AGC (Apollo Guidance Computer). Тем, кто хочет изучить тему подробно, я рекомендую книгу [1] и другие материалы, ссылки на которые приведены в конце статьи.

Apollo Guidance Computer





В программе Аполлон этот компьютер использовался в двух космических аппаратах: в командном модуле и в лунном модуле. В обоих случаях он крепился на «холодную плиту» с циркулирующей водно-гликолевой смесью, для охлаждения.


Водоблок с трубками для подключения охлаждающей жидкости

Интересный факт: полное название компьютера, использовавшегося в программе Аполлон — AGC-4, так как имелись более ранние разработки. Его предшественник, AGC-3 был построен на феррит-транзисторных ячейках.


Структурная схема системы навигации

Используемые сокращения:

AOT — Alignment Optical Telescope
LR — Landing Radar
RR — Rendezvous Radar
CDU — Coupling Data Unit
DSKY — (AGC) Display and Keyboard
LGC — LM Guidance Computer (or AGC)
PTA — Pulse Torque Assembly
IMU — Inertial Measurement Unit
PSA — Power Servo Assembly
OSS — Optical Subsystem
ISS — Inertial Subsystem
RS — Radar Subsystem
Технические характеристики

Спецификация


Длина слова: 16 бит (14 бит + знак + чётность)
Память: ROM (rope core) 36Kслов; RAM (core) 2Kслов
Цикл обращения к памяти (ROM и RAM) — 11,72 мкс
Устройства ввода-вывода: DSKY (два устройства в корабле)
Быстродействие: время сложения — 20 мкс
Тактовая частота: 2.048 МГц
Технология: биполярная РТЛ, планарные корпуса
Размеры: AGC — 24" x 12.5" x 6" (HWD) (61 см x 32 см x 15 см); DSKY — 8" x 8" x 7" (HWD) (20 см х 20 см х 18 см)
Вес: AGC — 70 фунтов (32 кг); DSKY — 17.5 фунтов (8 кг)
Напряжение питания 28 В.
Потребление: режим работы: 70 Вт @ 28VDC; режим ожидания 15.0 Вт
Количество произведённых устройств: AGC: 75; DSKY: 138
Стоимость: неизвестно. В 2009 году DSKY был продан с аукциона за $50788.

Компьютер был полностью герметично закрыт, и не содержал каких-либо частей, нуждающихся в обслуживании. Но несмотря на это, инженеры опасались, что новые цифровые микросхемы могут выйти из строя в космосе, поэтому в ранних версиях предусмотрели возможность замены блоков. В последующих версиях, когда все убедились в надёжности компьютера, требование к ремонтопригодности было исключено из ТЗ.


Рисунок AGC из технической документации


AGC в открытом виде

Корпус AGC состоит из двух половин, с установленными модулями. Половины корпуса имеют разъёмы, которыми соединяются друг с другом электрические цепи. В середине правой половины корпуса расположены модули ОЗУ, отсутствующие на фотографии. О них пойдёт речь ниже.

Основы схемотехники




Компьютер полностью построен на микросхемах, которые содержат по два элемента NOR-3 (тревходовое ИЛИ-НЕ), и выполнены по резисторно-транзисторной технологии. Схема микросхемы приведена на рисунке выше. Принцип действия такого элемента прост: если вывод 5 соединить с 0, а вывод 10 — с плюсом питания, то, если на входах 2-4 нули, то транзисторы 1-3 (если считать слева направо) будут закрыты, и на выходе 1 будет лог. 1, т.к. он притянут к плюсу резистором. Если хотя бы на один вход подать 1, то соответствующий транзистор откроется, и притянет выход 1 к нулю.

Легко видеть, что при соединении двух или более выходов этих элементов образуется функция AND (И). При этом достаточно оставить питание (вывод 10) подключенным только к одному элементу. Но иногда питание оставляют подключенным у всех элементов, соединённых выходами, это позволяет получить повышенную нагрузочную способность выхода.



Элемент с неподключенным питанием изображается на схеме с заштрихованным концом (см. рис).

Первая версия компьютера содержала 4100 микросхем, по одному элементу ИЛИ-НЕ в каждом, во второй версии, которая использовалась в полётах, было 2800 микросхем, по два элемента ИЛИ-НЕ в корпусе.



Память


Память AGC состоит из ОЗУ объёмом 2Кслова и ПЗУ объёмом 36Кслов. Под поле адреса отводится всего 12 бит, что позволяет адресовать 4Кслова, и память разделена на банки. Для переключения банков используется специальный регистр размером 4 бита, что даёт в результате 16битный адрес, позволяющий адресовать 64Кслов.

Более подробно банки памяти будут обсуждаться в разделе, посвящённом системному ПО.

ПЗУ


ПЗУ компьютера выполнено по технологии rope memory (см. фото внизу).



Внешний вид модуля Rope memory:



Принцип действия «верёвочной памяти» (rope memory) проиллюстрирован на рисунке снизу:



К сожалению, документация на блоки Core Rope Memory не сохранилась, но энтузиасты сумели разобраться с интерфейсом, подключить блок к компьютеру и считать содержимое, а затем запустить его на симуляторе.

Общий объём ПЗУ AGC составляет 36,864 слов по 16 бит. AGC имеет 6 блоков ПЗУ, каждый по 6 килослов (т.е. около 12 кб). Через каждый сердечник пропущено (или не пропущено) до 192 проводов, кодирующих данные, т.е. каждый сердечник кодирует 192 бита.

Прошивка каждого блока ПЗУ занимала 8 недель и обходилась в $15000. Всё это делалось вручную.

ОЗУ


ОЗУ AGC имеет объём 2048 16-битных слов. ОЗУ компьютера выполнено на магнитных сердечниках, как и у большинства компьютеров того времени.


Модуль ОЗУ, установленный в компьютер.

Видно, что модуль ОЗУ занимает ширину двух обычных модулей логики. ОЗУ состоит из «плоскостей» (planes), каждая из которых соответствует биту в слове данных, всего плоскостей 16. Каждая плоскость представляет собой решётку 64x32 кольца, всего 2048 колец. Через каждое кольцо проходит четыре проводника: координатные линии X и Y, линия считывания и линия запрета записи (inhibit line). Линии X и Y илут соответственно вертикально и горизонтально, линия считывания проходит через все кольца одной плоскости по диагональным направлениям, а линия запрета записи проходит также через все кольца плоскости вертикально.

Также плоскость называлась «ковриком» (mat). На рисунке ниже представлена одна плоскость размером 64x32 кольца.


Схема укладки линии считывания


Модуль ОЗУ в разрезе


Модуль ОЗУ. Рентгеновский снимок


Модуль ОЗУ в открытом виде


Модуль ОЗУ в сборе

DSKY




DSKY расшифровывается как Display and Keyboard Unit, модуль дисплея и клавиатуры, и предназначен для обеспечения взаимодействия AGC и экипажа.




DSKY в разобранном виде

По сути, DSKY является просто простым терминалом к AGC. Он построен на основе реле, которые переключают сегменты люминисцентного индикатора, питающиеся напряжением 250VAC частотой 800 Гц, и на транзисторах. В более поздних версиях DSKY электромеханические реле были заменены тиристорами, так как вносили существенную задержку при отображении информации.


Структурная схема DSKY


Функциональная схема DSKY



На рисунке показана схема подключения дисплея. Используются поляризованные реле с двумя обмотками, запоминающие своё состояние. Импульс, поданный на одну обмотку, включает индикатор, на другую — выключает. Обмотки реле включены в матрицу.

AGC подаёт в выходной канал 010 (восьмеричный номер канала) 15-битное число. Биты 12-15 подаются на декодер, имеющий 12 выходов, включающих строки матрицы.

Также блок имеет отдельные индикаторы для отображения сигналов PROG, TRACKER, GIMBAL LOCK и NO ATT, и других сигналов.

Ввод информации осуществляется с клавиатуры. Каждая кнопка подсвечивается лампочками на напряжение 115VAC частотой 400 Гц. При нажатии каждой клавиши, кроме PRO, генерируется 5-битный код. Код подаётся на порт компьютера, и генерируется прерывание, по которому код считывается. Когда кнопка отпускается, генерируется специальный сигнал reset. Клавиша STBY используется для перевода компьютера в режим ожидания, и обратно в режим работы, при повторном нажатии.

Клавиатура имеет 10 цифровых клавиш, и 9 дополнительных клавиш: VERB, NOUN, CLR, PRO, KEY REL, ENTR, RESET, +, и -.



Кнопки содержат переключающие контакты, включенные таким образом, чтобы исключить генерацию двух кодов одновременно (см. рисунок ниже). Коды клавиш поступают в порт ввода AGC.



К цепи кнопок подведено напряжение +28В. Подключение к компьютеру выполнено следующим образом:



Фильтр на входе предохраняет систему от дребезга контактов и случайных помех.


DSKY, вид сзади

Стандартной процедурой ввода команды в DSKY является последовательность: VERB-DIGIT-DIGIT, NOUN-DIGIT-DIGIT и ENTR. Это отражает идеологию взаимодействия пользователя с AGC: вводится глагол (VERB), и номер действия, которое нужно сделать, и существительное (NOUN), также кодируемое номером, которое указывает объект, на который направлено действие. Список кодов глаголов и существительных содержится в инструкции, которая была у астронавтов.

Нажатие кнопки VERB на клавиатуре очищает индикатор VERB. Затем астронавт вводит две цифры, которые интерпретируются как номер глагола, затем то же самое делается с существительным (NOUN). До тех пор, пока кнопка ENTR не нажата, коды можно исправить повторением ввода NOUN или VERB. После нажатия ENTR каждые 1.5 секунды мигают цифры на индикаторах VERB и NOUN, это означает, что оператор должен ввести данные, зависящие от операции. После этого начинается выполнение операции.


Внутри DSKY

Данные могут вводиться в восьмеричной и десятичной форме. Компьютер считает, что если знак "+" или "-" не введён, то данные будут в восьмеричной форме. Если при вводе восьмиричного числа нажать кнопки 8 или 9, будет мигать индикатор OPR ERR. Если нажаты клавиши "+" или "-", то соответствующий знак появляется на дисплее, означая, что компьютер готов к приёму десятичного числа. Если оператор ошибся, он может нажать на клавишу CLR и повторить ввод. Нажатие на ENTR завершает ввод. Для сброса сигнала OPR ERR и возврата в режим ввода используется кнопка RSET.

Кнопка RSET используется для гашения всех предупреждающих сигналов: TEMP, GIMBAL LOCK, PROG, RESTART и TRACKER. Это может быть полезно для того, чтобы выяснить, был ли предупреждающий сигнал кратковременным или вызвавшая его ошибка присутствует в данный момент.


Внутри DSKY

Декодер содержит четыре драйвера линий реле и диодную матрицу, а также ключи возбуждения строк релейной матрицы. Биты 12-15 выбирают один из рядов релейной матрицы.


Декодер релейной матрицы

Рассмотрим, как включается ряд 1. Ему соответствует код 0001. Он подаётся через интерфейс A25 и разъём J9 на корпусе DSKY, и на линии CE225 — CE228. Сигналы подаются в инверсной форме, т.е. CE226 — CE228 принимают значение лог. 1, а CE225 — лог. 0. Логическая 1 на входе закрывает транзистор Q1, транзистор Q2 также закрыт, и транзистор Q3 открыт. Таким образом, для выходов X линий CE226-CE228 и для выхода Y линии CE225 состоянием будет лог. 1. Диодная матрица имеет 8 входов, подключенных к прямым и инверсным выходам транзисторных ключей (выходы X и Y на рисунке). В нашем случае диоды CR53 модулей D2, D3 и D4, а также диод CR63 модуля D5 должны быть смещены в обратном направлении. Если эти диоды закрыты, включается блок CKT004, возбуждающий ряд 1, при этом напряжение +28В проходит по цепи Q1 (CKT011), R8, CR44, R9 (CKT004) и открывает транзисторы Q4, Q5 (CKT004). Транзисторы, открывшись, подключают первый ряд реле к нулю, что означает, что ряд выбран.

Нижний ряд диодов в диодной матрице (CR54 в модулях D2-D5) используется для детектирования наличия лог. 0 в битах 12-15 канала 10. Если хотя бы один ноль присутствует, хотя бы один из диодов открыт и напряжение 0VDC подаётся на источник напряжения драйверов выборки строки. Если все четыре бита равны 0, то все четыре диода закрыты, и напрядение +28VDC приложено к входу драйвера питания. Транзистор Q2 открывается, и транзистор Q3 закрывается. Транзистор Q1 закрыт, и выход драйвера представляет собой разомкнутую цепь, и напряжение на драйвера строк не подаются.


DSKY, вид снизу

Для управления индикаторами статуса и ошибок используется релейная матрица в модуле драйвера индикатора (рис. ). Кроме реле, она содержит 6 идентичных транзисторных драйверов (D1-D6).


Модуль драйвера индикаторов DSKY

Релейная матрица показана на рисунке ниже:


Релейная матрица

Каждый драйвер реле принимает от биты 1-11 канала 10. Рассмотрим бит 11 (цепь 006 в модуле D6). Если бит 1 канала 10 установлен в лог. 1, он в инверсном виде поступает в интерфейсную цепь A25, на разъём J9 в цепь CE224. Это открывает транзистор Q8, который закрывает транзистор Q9. Напряжение 28В присутствует на выводе 10 столбца реле, включающего знаки "+" и "-" на дисплее. Диодной матрицей выбирается строка. Путем выбора строки и столбца компьютер может переключать каждое единичное реле в матрице.

Реле матрицы управляют индикаторами DSKY. Ряд 12 управляет индикаторами состояния и аварийными сигналами.


Коды матрицы реле

В таблице выше приведено соответствие между содержимым канала 10 и цифрой индикатора, управляемой соответствующим реле. Одной цифрой управляет пять реле. Биты 6-10 используются для управления первой цифрой, биты 1-5 управляют второй цифрой, бит 11 управляет знаком ("+" или "-"). Коды цифр приведены в таблице:


Коды цифр

Лог. 1 соответствует включенному реле.



В таблице выше показаны соответствия кодов и индицируемых цифр.

Схема подключения индикаторов к реле приведена на рисунке ниже.


Схема релейной матрицы индикаторов

Цепи состояния и аварийных сигналов состоят из драйверов и неполяризованных реле.


Цепи состояния и аварийных сигналов

Например, когда сигнал ISS WARNING находится в лог. 0, он открывает транзистор Q13 и подаёт питание +28В на реле K21. Реле K21 включается и пропускает входной сигнал ALARM COMMON на дисплей и в секцию PGNCS как сигнал ISS WARNING.


Кабель подключения DSKY к компьютеру и бортовым системам

Питание блока DSKY осуществляется напряжениями 28В и 14В постоянного тока, поступающими с компьютера, также подаётся сигнал синхронизации частотой 800 Гц, который используется для генерации напряжения 250VAC частотой 400 Гц для питания дисплея.


Схема источника питания DSKY

Источник питания состоит из трёх двухтактных транзисторных каскадов, развязанных трансформаторами. На вход подаётся прямоугольный сигнал напряжением около 14В и частотой 800 Гц. Уровень напряжения может управляться с панели космического корабля и служит для регулировки яркости индикаторов. Трансформаторы T1 и T2 повышают напряжение, на выходе стоит дроссель с насыщением L2. Дроссель нужен для стабилизации напряжения на индикаторах. Индикаторы являются ёмкостной нагрузкой, величина ёмкости зависит от количества включенных индикаторов. Изменения в нагрузке вызывают изменение напряжения в цепи обратной связи, которое через мостовой выпрямитель подаётся на управляющую обмотку L2. Если включено больше индикаторов, напряжение на управляющей обмотке увеличивается, сердечник начинает входить в насыщение, если количество включенных индикаторов уменьшается, то напряжение на управляющей обмотке уменьшается, сердечник выходит из насыщения, таким образом напряжение на выходе поддерживается постоянным.


Ранний вариант DSKY. Этот вариант не использовался в полётах.

Литература и ссылки:



1. The Apollo Guidance Computer: Architecture and Operation. Frank O'Brien, Springer Praxis Books, 2010

2. Принципиальная схема AGC

3. http://www.righto.com/ Блог с кучей статей по AGC

4. https://hackaday.com/2016/09/02/decoding-rediscovered-rope-memory-from-the-apollo-guidance-computer/ — Decoding Rediscovered Rope Memory From The Apollo Guidance Computer

5. https://hackaday.com/2016/07/05/don-eyles-walks-us-through-the-lunar-module-source-code/ — Don Eyles Walks Us Through The Lunar Module Source Code

6. https://github.com/chrislgarry/Apollo-11 — репозиторий с исходными кодами ПО

7. https://github.com/shirriff/rope-simulator — репозиторий со схемами симулятора ПЗУ.

8. https://dodlithr.blogspot.com/search/label/Apollo%20Systems — большая подборка материалов по AGC и DSKY.

9. http://www.ibiblio.org/apollo/ — онлайновый симулятор AGC.

10. https://github.com/virtualagc — репозиторий с множеством полезной информации, включая Verlog-версию AGC, а также схемы и платы реплики AGC, и оригинальные схемы AGC и DSKY (в репозитории https://github.com/virtualagc/virtualagc)
Источник: https://habr.com/ru/post/461095/


Интересные статьи

Интересные статьи

Привет, Хабр! Сегодня я продолжу рассказывать о применении Machine Learning и Computer Vision на предприятиях горнодобывающей промышленности нашей страны. На этот раз своё внимание мы обр...
Сравнивать CRM системы – дело неблагодарное. Очень уж сильно они отличаются в целях создания, реализации, в деталях.
Вероятно, фронтенд-разработчикам знакомо нечто подобное: вводишь в поисковике «лучшие JavaScript-фреймворки» и получаешь в ответ целую гору результатов, из которой очень непросто выбрать именно т...
Этот пост будет из серии, об инструментах безопасности, которые доступны в Битриксе сразу «из коробки». Перечислю их все, скажу какой инструмент в какой редакции Битрикса доступен, кратко и не очень р...
Пьяный программист сидит с открытым Norton Commander на экране. На обоих панелях открыт диск С. «Ну и зачем мне два диска С с одними и теми же файлами?» — подумал он и стер все его содержимое, на...