Diferencia entre revisiones de «Apollo Guidance Computer»
Línea 137: | Línea 137: | ||
=== Otros registros === |
=== Otros registros === |
||
<!-- |
|||
[[File:ApolloGuidanceComputerwithDSKY.agr.jpg|thumb|DSKY and AGC on display at the [[Computer History Museum]]. The AGC is opened up showing its logic modules.]] |
[[File:ApolloGuidanceComputerwithDSKY.agr.jpg|thumb|DSKY and AGC on display at the [[Computer History Museum]]. The AGC is opened up showing its logic modules.]] |
||
[[File:AGClogicmodule.agr.jpg|thumb|Prototype logic module from Block I AGC.]] |
[[File:AGClogicmodule.agr.jpg|thumb|Prototype logic module from Block I AGC.]] |
||
Línea 143: | Línea 143: | ||
[[File:Agc nor2.jpg|thumb|AGC dual nor gate]] |
[[File:Agc nor2.jpg|thumb|AGC dual nor gate]] |
||
[[File:Agc nor2a.jpg|thumb|AGC dual nor gate schematic]] |
[[File:Agc nor2a.jpg|thumb|AGC dual nor gate schematic]] |
||
El AGC tenía varios registros adicionales que se usaban internamente durante el transcurso de una operación: |
|||
The AGC had additional registers that were used internally in the course of operation: |
|||
{|border="0" |
{|border="0" |
||
|- valign="top" |
|- valign="top" |
||
| |
|'''S''' ||: |
||
| Registro de 12 bits de dirección de memoria, la parte inferior de la dirección de memoria |
|||
|12-bit memory address register, the lower portion of the memory address |
|||
|- valign="top" |
|- valign="top" |
||
|'''Bank/Fbank''' ||: |
|'''Bank/Fbank''' ||: |
||
| Registro de 4 bits de la ROM, para seleccionar el 1 k de palabras de la ROM cuando se direcciona en el modo conmutable-fijo |
|||
| 4-bit ROM bank register, to select the 1 kiloword ROM bank when addressing in the fixed-switchable mode |
|||
|- valign="top" |
|- valign="top" |
||
|'''Ebank''' ||: |
|'''Ebank''' ||: |
||
| Registro de 3 bits de la RAM, para seleccionar las 256 palabras de la RAM cuando se direcciona en el modo conmutable-borrable |
|||
|3-bit RAM bank register, to select the 256-word RAM bank when addressing in the erasable-switchable mode |
|||
|- valign="top" |
|- valign="top" |
||
|'''Sbank''' (super-bank) ||: |
|'''Sbank''' (super-bank) ||: |
||
|1 |
| Extensión de 1 bit al Fbank, necesario porque las últimas 4 kilopabalras de la ROM de 36-kilopalabras no es alcanzable usando solo Fbank |
||
|- valign="top" |
|- valign="top" |
||
|'''SQ'''||: |
|'''SQ'''||: |
||
| Registro de secuencia de 4 bits; la instrucción actual |
|||
|4-bit sequence register; the current instruction |
|||
|- valign="top" |
|- valign="top" |
||
|'''G'''||: |
|'''G'''||: |
||
| Registro de 16 bits del buffer de memoria, para mantener la transmisión de palabras de datos desde y hacia la memoria |
|||
|16-bit memory buffer register, to hold data words moving to and from memory |
|||
|- valign="top" |
|- valign="top" |
||
|'''X'''||: |
|'''X'''||: |
||
| La entrada 'x' del ''sumador'' (el sumador se usaba para realizar toda la aritmética [[complemento a uno]]) o el incremento del contador de programa (registro '''Z''') |
|||
| The 'x' input to the ''adder'' (the adder was used to perform all [[ones' complement|1's complement]] arithmetic) or the increment to the program counter ('''Z''' register) |
|||
|- valign="top" |
|- valign="top" |
||
|'''Y'''||: |
|'''Y'''||: |
||
| |
| La otra entrada ('y') al sumador |
||
|- valign="top" |
|- valign="top" |
||
|'''U'''||: |
|'''U'''||: |
||
| |
|No es realmente un registro, sino la salida del sumador (la suma en complemento a 1 del contenido de los registros '''X''' e '''Y''') |
||
|- valign="top" |
|- valign="top" |
||
|'''B'''||: |
|'''B'''||: |
||
| |
| Registro buffer de propósito general, también usado para pre-cargar la siguiente instrucción. Al comienzo de la siguiente instrucción, los bits superiores de '''B''' (con el siguiente código de operación) eran copiados a '''SQ''', y los bits inferiores (la dirección) eran copiados a '''S'''. |
||
|- valign="top" |
|- valign="top" |
||
|'''C'''||: |
|'''C'''||: |
||
| No es un registro independiente, sino el complemento a uno del registro '''B''' |
|||
| Not a separate register, but the 1's complement of the '''B''' register |
|||
|- valign="top" |
|- valign="top" |
||
|'''IN'''||: |
|'''IN'''||: |
||
| Cuatro registros de entrada de 16 bits |
|||
|Four 16-bit input registers |
|||
|- valign="top" |
|- valign="top" |
||
|'''OUT'''||: |
|'''OUT'''||: |
||
| Cinco registro de salida de 16 bits |
|||
| Five 16-bit output registers |
|||
|} |
|} |
||
--> |
|||
=== Conjunto de instrucciones === |
=== Conjunto de instrucciones === |
||
<!-- |
<!-- |
Revisión del 13:01 4 abr 2012
Apollo Guidance Computer | ||
---|---|---|
Información | ||
Tipo | equipamiento | |
Fabricante | ||
El Computador de Navegación del Apolo ó Apollo Guidance Computer (en adelante AGC) era un elemento fundamental del programa Apolo. Su papel en el programa espacial fue proporcionar el control y la capacidad de cálculo necesarios para controlar la orientación, y la navegación del módulo de mando (CM, de Command Module) y del módulo lunar (LM, de Lunar Module). Este ordenador destaca por haber sido uno de los primeros computadores basados en CIs.
El AGC y su interfaz DSKY se desarrollaron a principios de los 1960s por el MIT Instrumentation Laboratory para el programa Apolo.
El AGC en el Apolo
Cada vuelo a la Luna (a excepción del Apolo 8, que no llevó módulo lunar en su misión a la órbita lunar) tenía dos AGCs, uno en el módulo de mando y otro en el módulo lunar. El AGC del módulo de mando estaba situado en el centro del sistema de navegación y orientación (G&C) de la nave. El AGC del módulo lunar llevaba su propio sistema primario de orientación, control y navegación del Apolo, conocido por el acrónimo de PGNCS (pronunciado como pings).
Cada misión lunar tuvo dos ordenadores adicionales:
- El computador digital de la lanzadera (LVDC) en el anillo de instrumentación del propulsor Saturn V, y
- el sistema de orientación para aborto (AGS) del módulo lunar, para su uso en caso de fallo eventual del LM PGNCS. El AGS se podía usar para despegar desde la Luna, y para reencontrarse con el módulo de mando, pero no para alunizar.
Diseño
El AGC se diseñó en el MIT Instrumentation Laboratory bajo la dirección de Charles Stark Draper, con el diseño hardware a cargo de Eldon C. Hall.[1] Los primeros trabajos sobre la arquitectura llegaron de manos de J.H. Laning Jr., Albert Hopkins, Ramon Alonso,[2] [3] y Hugh Blair-Smith.[4] La empresa Raytheon fabricó el hardware de vuelo, y Herb Thaler[5] también estaba en el equipo de diseño.
El computador de vuelo del Apolo fue el primero en usar circuitos integrados (CIs). Mientras que la versión Block I usaba 4100 CIs, conteniendo cada uno una sencilla puerta NOR de 3 entradas, la versión posterior Block II (usada en los vuelos tripulados) empleó 2800 CIs, cada uno con dos puertas NOR de 3 entradas.[1]: 34 Los CIs, de Fairchild Semiconductor, se implementaron usando lógica resistencia-transistor (RTL) en un flat-pack. Fueron conectados mediante wire wrap, y luego el cableado se incorporó en un molde plástico de epoxy. Al usar un único tipo de integrado (las doble NOR3) para todo el AGC, se evitaron los problemas que plagaban los primeros diseños de computadores basados en CIs, como el computador de guiado Minuteman II , que usaba una mezcla de puertas con lógica diodo-transistor y otras con lógica diodo-resistor.
El computador tenía 2048 palabras de memoria de núcleos magnéticos borrable y 36 kilopalabras de memoria de núcleos cableados de solo lectura. Ambas tenían un ciclo de 11,72 micro-segundos. La longitud de la palabra de memoria era de 16 bits: 15 bits de datos y 1 bit de paridad impar. El formato de palabra de la CPU de 16 bits eran 14 bits de datos, 1 bit de overflow, y 1 bit de signo (en representación complemento a uno).
Interfaz DSKY
La interfaz de usuario con la que se accedía al AGC era la DSKY ( abreviatura del inglés display and keyboard, que en castellano significa teclado y pantalla), pronunciado comúnmente como dis-key. Poseía un vector de indicadores luminosos, varios visualizadores numéricos y un teclado tipo calculadora. Los comandos se introducían como números de dos dígitos: Verbo, y Nombre. El Verbo describía el tipo de la acción a realizar y el Nombre especificaba el dato afectado por la acción indicada por dicho verbo.
Los numerales se mostraban a través de visualizadores de siete segmentos electroluminescentes de alto voltaje de color verde. Para controlar estos visualizadores se usaban relés electromecánicos que limitaban su velocidad de refresco (la versión posterior Block II usaban rectificadores controlados de silicio más veloces). En ellos se podían visualizar tres números de 5 dígitos con signo en base octal o decimal, y se usaban típicamente para mostrar vectores tales como la actitud del vehículo espacial o un cambio de velocidad necesario (delta-V). Aunque los datos se almacenaban internamente en unidades métricas, estos se mostraban según el sistema anglosajón de unidades. Esta interfaz tipo calculadora[nb 1] fue la primera de su clase, y el prototipo para todas la interfaces de paneles de control similares.
El modulo de mando tenía dos DSKYs conectadas a su AGC; una situado en el panel de instrumentos principal y una segunda en la bahía de equipos cerca de un sextante que se usaba para alinear la plataforma de navegación inercial. El módulo lunar tenía una única interfaz DSKY para su AGC. Unos indicadores de actitud (FDAI), controlados por el AGC, se situaban sobre la DSKY en la consola del comandante y en el LM.
En 2009, se vendió un DSKY por $50788 en la subasta pública organizada por Heritage Auctions.[6]
Temporización
El cristal oscilador del reloj del AGC tenía una frecuencia de unos 2.048 MHz. Esta señal se dividía por dos para producir un reloj de 1.024 MHz de cuatro fases que usaba el AGC para realizar las operaciones internas. Además, la señal de 1.024 MHz se dividía por dos para producir una señal de 512 kHz denominada frecuencia maestra; esta señal se usaba para sincronizar los sistemas externos del Apolo.
A su vez, la frecuencia maestra primero se dividía mediante un escalador por cinco, usando un contador en anillo para producir una señal de 102.4 kHz. Luego era dividida por dos a través de 17 etapas consecutivas: desde F1 (51.2 kHz) hasta F17 (0.78125 Hz). La etapa F10 (100 Hz) era retroalimentada hacia el AGC para incrementar el reloj en tiempo real y otros contadores involuntarios usando el Pinc (detallado a continuación). La etapa F17 se usaba para cargar intermitentemente el AGC cuando trabajaba en modo standby.
Registros centrales
El AGC tenía cuatro registros de 16 bits con propósitos computacionales conocidos como los registros centrales:
A : | El acumulador, para uso general |
Z : | El contador de programa - la dirección de la siguiente instrucción a ser ejecutada |
Q : | El resto de la instrucción DV , y la dirección de retorno en las instrucciones TC
|
LP : | El producto inferior en las instrucciones MP
|
También habían cuatro posiciones en la memoria central, en las direcciones 20-23, denominadas posiciones de edición porque lo que estuviera almacenado allí sería devuelto desplazado o rotado un bit, excepto para lo que fuera desplazado a la derecha 7 bits, para extraer uno de los 2 códigos de operación de 7 bits empaquetados en una palabra. Esto era común a los AGCs del Bloque I y del Bloque II.
Otros registros
El AGC tenía varios registros adicionales que se usaban internamente durante el transcurso de una operación:
S | : | Registro de 12 bits de dirección de memoria, la parte inferior de la dirección de memoria |
Bank/Fbank | : | Registro de 4 bits de la ROM, para seleccionar el 1 k de palabras de la ROM cuando se direcciona en el modo conmutable-fijo |
Ebank | : | Registro de 3 bits de la RAM, para seleccionar las 256 palabras de la RAM cuando se direcciona en el modo conmutable-borrable |
Sbank (super-bank) | : | Extensión de 1 bit al Fbank, necesario porque las últimas 4 kilopabalras de la ROM de 36-kilopalabras no es alcanzable usando solo Fbank |
SQ | : | Registro de secuencia de 4 bits; la instrucción actual |
G | : | Registro de 16 bits del buffer de memoria, para mantener la transmisión de palabras de datos desde y hacia la memoria |
X | : | La entrada 'x' del sumador (el sumador se usaba para realizar toda la aritmética complemento a uno) o el incremento del contador de programa (registro Z) |
Y | : | La otra entrada ('y') al sumador |
U | : | No es realmente un registro, sino la salida del sumador (la suma en complemento a 1 del contenido de los registros X e Y) |
B | : | Registro buffer de propósito general, también usado para pre-cargar la siguiente instrucción. Al comienzo de la siguiente instrucción, los bits superiores de B (con el siguiente código de operación) eran copiados a SQ, y los bits inferiores (la dirección) eran copiados a S. |
C | : | No es un registro independiente, sino el complemento a uno del registro B |
IN | : | Cuatro registros de entrada de 16 bits |
OUT | : | Cinco registro de salida de 16 bits |
Conjunto de instrucciones
Memoria
Interrupciones y contadores involuntarios
Modo Standby
Buses de datos
Software
El bloque II
EL problema del PGNCS
Código de error 00404
Aplicaciones después del Apollo
Véase también
- Apollo PGNCS - el sistema primario de navegación y orientación del Apollo
- AP-101 - computadores (derivados del IBM S/360) que se usaron en el transbordador espacial
- Historia del hardware de computador
Notas
- ↑ The first advanced desktop calculators hit the market in roughly the same time frame, with scientific and then programmable pocket calculators appearing during the following decade. The first programmable handheld calculator, the HP-65, was tried on backup computations aboard the Apollo Command/Service Module in the Apollo-Soyuz Test Project in 1975.
Referencias
- ↑ a b c Hall, Eldon C. (1996), Journey to the Moon: The History of the Apollo Guidance Computer, Reston, Virginia, USA: AIAA, p. 196, ISBN 156347185X.
- ↑ «Ramon Alonso's introduction», AGC History Project (Caltech archive, original site closed) (MIT), July 27, 2001, consultado el 30 de agosto de 2009.
- ↑ «Ramon Alonso's interview (Spanish)», Ramón Alonso, el argentino que llevó a la Apollo 11 a la Luna (Diario La Nacion), March 7, 2010.
- ↑ «Hugh Blair-Smith biography», AGC History Project (Caltech archive, original site closed) (MIT), January, 2002, consultado el 30 de agosto de 2009.
- ↑ «Herb Thaler introduction», AGC History Project (Caltech archive, original site closed) (MIT), 14-September-2001, consultado el 30 de agosto de 2009.
- ↑ [1]
Enlaces externos
- Wikimedia Commons alberga una categoría multimedia sobre Apollo Guidance Computer.
Documentación sobre el AGC y su desarrollo
- AGC4 Memo #9, Block II Instructions – The infamous memo that served as de facto official documentation of the instruction set
- Computers in Spaceflight: The NASA Experience – By James Tomayko (Chapter 2, Part 5, The Apollo guidance computer: Hardware)
- Computers Take Flight – By James Tomayko
- The Apollo Guidance Computer - A Users View (PDF) – By David Scott, Apollo mission astronaut
- Lunar Module Attitude Controller Assembly Input Processing (PDF) – By José Portillo Lugo, History of Technology
- The MIT AGC Project – With comprehensive document archive
- Luminary software source code listing, for Lunar Module guidance computer. (nb. 622 Mb)
- Colossus software source code listing, for Command Module guidance computer. (nb. 83 Mb)
- National Air and Space Museum's AGC Block I and Dsky
- Annotations to Eldon Hall's Journey to the Moon – An AGC system programmer discusses some obscure details of the development of AGC, including specifics of Ed's Interrupt
Documentación del diseño del hardware del AGC, y particularmente el uso de los nuevos circuitos integrados en lugar de transistores
- Apollo Guidance Computer Schematics
- AGC Integrated Circuit Packages
- Integrated Circuits in the Apollo Guidance Computer
Documentación del software operativo del AGC
- Delco Electronics, Apollo 15 - Manual for CSM and LEM AGC software used on the Apollo 15 mission, including detailed user interface procedures, explanation of many underlying algorithms and limited hardware information. Note that this document has over 500 pages and is over 150 megabytes in size.
- Stengel, R., Manual Attitude Control of the Lunar Module, J. Spacecraft and Rockets, Vol. 7, No. 8, Aug 1970, pp. 941–948.
- Source code for Command Module code (Comanche054) and Lunar Module code (Luminary099) as text.
Algunos proyectos y simuladores basados en el AGC
- AGC Replica – John Pultorak's successful project to build a hardware replica of the Block I AGC in his basement. Mirror site: AGC Replica.
- Virtual AGC Home Page – Ronald Burkey's AGC simulator, plus source and binary code recovery for the Colossus (CSM) and Luminary (LEM) SW
- Project Apollo for Orbiter – Addon for Orbiter spaceflight simulator, working towards a full simulation of the CSM and LEM including the Virtual AGC.
- Eagle Lander 3D Shareware Lunar Lander Simulator with a working AGC and DSKY (Windows only)
Reportajes
- Weaving the way to the Moon (BBC News)