ⓘ CDP1802. El RCA CDP1802 es un microprocesador de 8 bits LSI en formato DIP 40 fabricado en tecnología CMOS implementado utilizando la arquitectura COSMAC ​ Los ..

                                     

ⓘ CDP1802

El RCA CDP1802 es un microprocesador de 8 bits LSI en formato DIP 40 fabricado en tecnología CMOS implementado utilizando la arquitectura COSMAC ​ Los aficionados por lo general se refieren a el simplemente como "el 1802". En la actualidad sigue siendo fabricado por Intersil Corporation como un microprocesador de alta fiabilidad. El 1802 tiene una arquitectura diferente de la mayoría de los otros microprocesadores de 8 bits.

En 1970 y 1971, Joseph Weisbecker desarrolló una nueva arquitectura de computadoras de 8 bits. ​

Los sucesores del 1802 son el CDP1804, el CDP1805 y el CDP1806, que tienen un conjunto de instrucciones extendido, otras características mejoradas como RAM y ROM incorporadas y un temporizador incorporado, con algunas versiones funcionando a velocidades de reloj más rápidas, aunque no con una diferencia de velocidad significativa. Algunas características también se pierden, como la funcionalidad de cargador de arranque automático DMA. También hay algunos cambios menores en la función de los pines.

                                     

1. Introducción

El RCA 1802 tiene un diseño CMOS de núcleo estático sin una frecuencia de reloj mínima, de modo que puede ejecutarse a velocidades muy bajas y baja potencia, incluyendo una frecuencia de reloj de cero para suspender el microprocesador sin afectar su funcionamiento. Tiene dos buses separados de 8 pines: un bus de datos bidireccional de 8 bits y un bus de direcciones multiplexando la parte alta y baja de las direcciones en dos ciclos, al contrario de lo normal, que es multiplexar las direcciones y los datos.

El 1802 tiene un puerto de salida Q de un solo bit, programable y comprobable, y cuatro pines de entrada que son probados directamente por una rama de su conjunto de instrucciones EF1-EF4.

Puede direccionar 64K de memoria, RAM y ROM en cualquier combinación. Mantiene un espacio separado para periféricos que controla mediante cuatro líneas N, que toman un valor 1 a 7 cuando se direcciona un periférico. Permite la transmisión de datos entre memoria y periféricos directamente, sin pasar por el acumulador. Contiene un DMA rudimentario, utilizando R2 como puntero.

Su modo entrada/Salida I/O es flexible y programable, y tiene un reloj monofásico con un oscilador integrado. Su conjunto de registros consta de dieciséis registros de 16 bits. El contador de programa PC puede residir en cualquiera de estos, y se puede configurar mediante la instrucción SEP Rn, proporcionando una forma sencilla de implementar múltiples PCs y realizar llamadas de subrutina. Vea las llamadas de subrutina más abajo. De forma similar, los punteros y el direccionamiento indirecto usan el registro X instrucción SEX Rn, o los 16 registros pueden usarse como registros de propósito general. Las interrupciones DMA In y Out utilizan registros específicos.

                                     

2. Arquitectura

El 1802 consta de un array de 16 registros de 16 bits, R0 a R15. Cualquiera de estos registros se puede usar como contador de programa, punteros de datos, punteros de pilas o simplemente para guardar datos. Tras el reset, R0 es el contador de programa. Se puede mover la información de los registros al acumulador y viceversa, la parte alta R0.1 y la parte baja R0.0 separadamente. Además de los registros, el 1802 contiene:

  • EI: Habilita la interrupción. Un bit.
  • P: Indica que registro actúa como contador de programa. Es de 4 bits.
  • T: Registro temporal que contiene los valores de P y X, se usa bajo control del programa.
  • DF: Indicador de acarreo. Un bit.
  • D: Acumulador de 8 bits.
  • X: Indica que registro actúa como puntero de datos. Es de 4 bits.
  • Q: Flag de usuario. Un bit.
                                     

3. Instrucciones y direccionamientos

  • Skip, que solo salta un byte. También existe un Skip Long incondicional que salta dos bytes.
  • No existen saltos relativos, sino que se dividen en tres tipos
  • Cortos, que cambian la parte baja del contador de programa, esto es: M→RP.0
  • La única forma que el 1802 tiene para acceder la memoria es indirectamente a través de los registros. Esto es MRn), pero permite incrementar el registro, es decir: MRn++), de modo que Rn queda apuntando al siguiente byte. Como el contador de programa es uno de los registros, el direccionamiento inmediato no es más que MRP++). Es necesario incrementar el registro para que apunte la siguiente instrucción.
  • Largos, que cambian los 16 bits, permitiendo saltar a cualquier parte de la memoria.
  • Carece de pila, de modo que ésta, si se usa, debe mantenerse mediante programa. Las versiones 1805 y 1806 incluyen "Standard Call" y "Standard Return". Son más lentas que modificar P, pero permiten un número ilimitado de subrutinas anidadas.
  • Tiene instrucciones que realizan tanto la resta "acumulador menos memoria", D - MRN)→ D, como "memoria menos acumulador", MRN) - D → D.
  • No posee aritmética BCD, aunque sus derivados 1805 y 1806, sí.


                                     

4. Versiones

La tecnología del 1802 lo hizo atractivo para aplicaciones donde el bajo consumo era prioritario: equipos portátiles y militares. Para este ámbito, así como el aeroespacial existen versiones "endurecidas" Hardened frente a radiación y en silicio sobre zafiro SOS. Huges lo fabricó como segunda fuente y en 2006 Harris lo mantiene en su catálogo, tanto comercial como hardened.

  • El 1805 es un 1806 con RAM interna.
  • El 1806 es un 1802 con el juego de instrucciones extendido y temporizador.
                                     

5. Aplicaciones

Resistencia la radiación

Además de la tecnología C2L CMOS de "silicio en masa", el 1802 también estaba disponible fabricado en la tecnología Silicon on Sapphire SOS de proceso de semiconductores, que le da un grado de resistencia a radiación y la descarga electrostática ESD. Junto con sus capacidades extremas de baja potencia, esto hace que el chip sea adecuado en aplicaciones espaciales y militares. ​

                                     

6.1. Chips de soporte Chips de gráficos

En los primeros microcomputadores basados en 1802, el chip de vídeo, CDP1861 para el formato de vídeo NTSC, CDP1864 para PAL, utilizó el controlador DMA incorporado para mostrar gráficos bitmap en blanco y negro en pantallas estándar de TV. El 1861 también fue conocido como el sistema de gráficos Pixie, pantalla, chip y generador de vídeo, ​

El chip 1861 podría mostrar 64 pixels horizontalmente y 128 píxeles verticalmente, aunque al volver a cargar el registro R0 DMA a través del programa de controlador de software 1802 requerido y la rutina de servicio de interrupción, la resolución podría reducirse a 64 × 64 o 64 × 32 para usar menos memoria o para hacer píxeles cuadrados. 64 × 32 píxeles cuadrados creados y 256 bytes de memoria 2K bits. Esta fue la resolución habitual para el sistema de programación de juegos Chip-8. Dado que el búfer de trama de gráficos de vídeo era a menudo similar o igual en tamaño al tamaño de la memoria, no era inusual mostrar su programa/datos en la pantalla que le permite ver la computadora pensar es decir, procesar sus datos. Los programas que corrieron amok y se sobrescribieron accidentalmente podrían ser espectaculares.

Aunque las versiones más rápidas de 1802 podían operar a 4-5 MHz a 5 V, era más rápida 6.4 MHz a 10 V), normalmente se operaba a 3.58 MHz dividido por 2 1.76 MHz para satisfacer los requisitos de la norma 1861 que dio una velocidad de poco más de 100.000 instrucciones por segundo.

El circuito integrado CDP1862 Color Generator Circuit IC, un chip auxiliar del 1861, podría utilizarse para generar gráficos en color. Algunos sistemas informáticos, como el Pecom 64, utilizaban el VIS Video Interface System, que consistía en los chips auxiliares CDP1869 y CDP1870, para gráficos de color de mayor resolución.



                                     

7. Ejemplo de código

Este ejemplo de fragmento de código es una rutina de diagnóstico que prueba las operaciones ALU Arithmetic and Logic Unit.

. TEST ALU OPS 0000 90 GHI 0. PREPARAR R6 0001 B6 PHI 6 0002 F829 LDI DOIT. PARA ENTRADA DE OPCODE 0004 A6 PLO 6 0005 E0 SEX 0. X=0 AHORA 0006 6400 OUT 4.00. ANUNCIA USLISTO 0008 E6 SEX 6. AHORA X=6 0009 3F09 BN4 *. ESPERAR POR IT 000B 6C INP 4. OK, COGER IT 000C 64 OUT 4. Y MOSTRARLO 000D 370D B4 *. ESPERE PARA LA LIBERACIÓN 000F F860 LDI #60. AHORA PREPARADO PARA 0011 A6 PLO 6. PRIMER OPERANDO 0012 E0 SEX 0. MOSTRAR SO 0013 6401 OUT 4.01 0015 3F15 BN4 * 0017 E6 SEX 6. COGER Y MOSTRAR 0018 6C INP 4. A 0060 0019 64 OUT 4. TAMBIÉN INCREMENTO R6 001A 371A B4 * 001C E0 SEX 0. DITTO SEGUNDO OPERANDO 001D 6402 OUT 4.02 001F E6 SEX 6 0020 3F20 LOOP: BN4 *. ESPERAR POR IT 0022 6C INP 4. COGER IT NOTA: X=6 0023 64 OUT 4. ECHO IT 0024 3724 B4 *. ESPERE PARA LA LIBERACIÓN 0026 26 DEC 6. BACK UP R6 EN 0060 0027 26 DEC 6 0028 46 LDA 6. OBTENGA EL PRIMER OPERANDO A D 0029 C4 DOIT: NOP. REALIZAR LA OPERACION 002A C4 NOP. SPARE 002B 26 DEC 6. VOLVER A 0060 002C 56 STR 6. RESULTADO DE LA SALIDA 002D 64 OUT 4. X=6 STILL 002E 7A REQ. DESACTIVAR Q 002F CA0020 LBNZ LOOP. ENTONCES SI CERO, 0032 7B SEQ. VOLVER A ENCENDER 0033 3020 BR LOOP. REPETIR EN CUALQUIER CASO

Nota: La rutina anterior supone que el microprocesador CDP1802 está en un estado de reinicio inicial o que se ha configurado como tal antes de ejecutar este código. Por lo tanto, el contador de programa PC y el indicador de registro indirecto X se ajustan a un registro de 16 bits R0. Es por eso que se puede generar un valor inmediato, como en el ejemplo OUT 4.00, porque PC y X apuntan a R0. El PC se incrementa después de que el byte de instrucción de opcode se recupera de la memoria, por lo que apunta la siguiente dirección cuando se ejecuta OUT 4. Por lo tanto, emite el valor en memoria apuntado por RX = R0, que es el siguiente byte inmediato. La instrucción OUT también incrementa el registro X, que es R0, que es también el PC, por lo que emite el valor inmediato después de la salida y continúa la ejecución del programa en la siguiente dirección de instrucción después del valor inmediato. Es por eso que ves la rutina establecida X SEX para registrar R6 y R0 según sea necesario. También tenga en cuenta que, aunque el código de operación OUT incrementa el registro RX, para producir fácilmente una sección de memoria buffer, INP no lo hace. Almacena el valor en la dirección señalada por RX y en el acumulador de bytes de datos de 8 bits, pero RX no se modifica.

La rutina también supone que OUT 4 mostrará el valor en el LED de 8 bits del sistema de la CPU o en la pantalla hexadecimal de 2 dígitos, e IN 4 obtendrá el valor de los ocho conmutadores o posiblemente el teclado hexadecimal. El código de operación BN4 bucle; * = esta dirección, "rama si la línea EF4 de entrada de un solo bit es lo", se usa para probar si se pulsa el botón momentáneo de "Entrada". El bucle opcode B4 if hi espera que se suelte el botón. SEQ y REQ activan y desactivan la línea Q única, que suele estar conectada a un LED.

El 1802 es una "máquina de bytes", pero tiene 16 registros de 16 bits, R0-RF a veces denominado 0-F sin el prefijo R. Para hacer frente a los datos de registro de 16 bits, el programador debe obtener y poner los valores Hi Lo de los registros utilizando el acumulador D como intermediario. Estos bytes altos y bajos de los registros a veces se denominan Rn.0 lo y Rn.1 hi. Las ramas cortas son opcodes de 2 bytes con direccionamiento de página absoluta y un límite de dirección de 256 bytes. Las ramas largas son opcodes de 3 bytes con ramificación de direcciones de 16 bits.

Esta información debe hacer que la rutina sea más comprensible para cualquier programador informático que esté lo suficientemente informado como para leer "pseudo-código" y que esté al menos familiarizado con el ensamblaje y la programación del lenguaje de máquina.