Articulo de referencia

COP400

El COP400 o COP II es una familia de microcontroladores de 4 bits introducida en 1977 por National Semiconductor como un producto sucesor de su microcontrolador COP PMOS origina...

El COP400 o COP II es una familia de microcontroladores de 4 bits introducida en 1977 por National Semiconductor como un producto sucesor de su microcontrolador COP PMOS original. [ 1 ] Los miembros de la familia COP400 son microcomputadoras completas que contienen temporización interna, lógica, ROM, RAM y E/S necesarias para implementar controladores dedicados. [ 2 ] Algunos dispositivos COP400 fueron fabricados por Western Digital como la familia WD4200. [ 3 ] [ 4 ] En la Unión Soviética se fabricaron varios microcontroladores COP400 como la serie 1820 (por ejemplo, el COP402 con la designación КР1820ВЕ1 ). [ 5 ]

El COP400 se implementa en tecnología CMOS o MOS de puerta de silicio de canal N. Generalmente se presentaba en encapsulados DIP de 24 o 28 pines . El tiempo de ciclo de instrucción de los miembros más rápidos de la familia es de 4 microsegundos. La familia COP400 ofrecía varias configuraciones de memoria y distribución de pines.

Entre los productos más destacados que utilizaron chips de la familia COP400 se incluyen el Apple Lisa , los juegos electrónicos de Milton Bradley y Mattel , el Coleco Head to Head Basketball, el Grundy Newbrain y otros.

Memoria

El COP400 utiliza espacios de memoria separados para la ROM y la RAM . Las direcciones de la ROM tienen un máximo de 11 bits, mientras que las direcciones de datos tienen un máximo de 7 bits.

Imagen del chip COP410L de National Semiconductor. 512 bytes de ROM en la esquina superior izquierda, 128 bits de RAM en la esquina superior derecha. Haga clic para ampliar.

memoria de sólo lectura

La memoria de programa consta de una ROM de 512, 1024 o 2048 × 8 bits. Los bytes de la ROM pueden contener instrucciones de programa, datos de programa o punteros de direcciones de salto. Debido a las características especiales de las instrucciones JP y JSRP, la ROM suele concebirse como organizada en páginas de 64 bytes cada una. Asimismo, debido a las operaciones únicas que realizan las instrucciones LQID y JID, a veces las páginas de la ROM deben considerarse organizadas en bloques de 256 bytes.

RAM

La memoria de datos consta de una RAM de 32, 64 o 128 × 4 bits, organizada en varios registros de datos de 16 dígitos de 4 bits. El direccionamiento de la RAM se implementa mediante el registro B de 6 o 7 bits, que actúa como puntero. Los 2 o 3 bits superiores del registro B (Br) seleccionan uno de los 4 u 8 registros de datos, y los 4 bits inferiores (Bd) seleccionan uno de los 16 dígitos de 4 bits del registro seleccionado. El contenido de 4 bits del dígito de la RAM al que apunta el registro B se suele cargar, intercambiar o modificar en el registro A.

registros de la CPU

La configuración de registros que se muestra en el diagrama corresponde a los miembros de la familia COP400 con ROM máxima (2048 × 8 bits) y RAM máxima (128 × 4 bits). Los miembros de la familia con solo 512 o 1024 bytes de ROM tendrán un PC de 9 o 10 bits. Aquellos con 64 o 32 posiciones de RAM tendrán un registro Br de 2 bits. [ 6 ]

El registro A de 4 bits (acumulador) es el registro de origen y destino para la mayoría de las operaciones aritméticas, lógicas y de acceso a memoria de datos. También se puede utilizar para cargar las porciones Br y Bd del registro B, para cargar e introducir 4 bits de los datos del latch Q de 8 bits, para introducir 4 bits del puerto L de 8 bits y para realizar intercambios de datos con el registro SIO.

Al transferir datos a un registro de 8 bits (como Q o un puerto de E/S de 8 bits), los 4 bits menos significativos se toman de la RAM(B), la ubicación de RAM a la que apunta el registro B, y los 4 bits más significativos se toman de A. Al transferir datos desde un registro de 8 bits, se invierten las mitades: los 4 bits menos significativos se escriben en A y los 4 bits más significativos se escriben en la RAM(B).

Una ALU de 4 bits realiza las funciones aritméticas y lógicas, almacenando los resultados en A. Las operaciones ASC y CASC generan un acarreo al registro C de 1 bit, que se utiliza con mayor frecuencia para indicar un desbordamiento aritmético.

Todo el direccionamiento de la ROM se realiza mediante el registro PC de 9, 10 u 11 bits. Su valor binario selecciona uno de los bytes contenidos en la ROM, generalmente la siguiente instrucción del programa. El valor de PC se incrementa automáticamente en 1 antes de la ejecución de la instrucción actual para apuntar a la siguiente ubicación secuencial de la ROM. Esto garantiza que, al ejecutar una llamada a subrutina, el PC guardado sea la dirección de la siguiente instrucción, y al ejecutar cualquier transferencia de control, la dirección de destino escrita en PC se utilice sin modificaciones. El PC se reinicia automáticamente para apuntar a la siguiente página de 64 bytes o bloque de 256 bytes de memoria de programa. Los bits superiores de PC también se utilizan para completar las direcciones de 8 bits especificadas por las instrucciones JID y LQID.

Los registros de guardado de subrutinas (SA, SB y SC) implementan tres niveles de subrutina, proporcionando una pila de llamadas de hardware LIFO (último en entrar, primero en salir) . Algunas implementaciones no incluyen el registro SC. Un detalle de la implementación es que la instrucción LQID utiliza un nivel de la pila. La dirección de la ROM que se va a obtener se copia al registro PC, y la pila se utiliza para guardar temporalmente su valor, por lo que LQID tiene el efecto secundario de sobrescribir SC con una copia de SB.

Registros y puertos de E/S

Los dispositivos de E/S del COP400 no tienen números de puerto ni direcciones de memoria asociadas. El lenguaje ensamblador del COP400 hace referencia a todos los registros y puertos de E/S físicos directamente por su nombre.

Base

Casi todos los dispositivos de la familia COP400 implementan lo siguiente: [ 6 ]

  • Se proporcionan cuatro entradas de propósito general, IN 0 - IN 3. Los paquetes de 24 pines no tienen IN 0 - IN 3 .
  • El registro D proporciona cuatro salidas de propósito general y es el registro de destino para el contenido de 4 bits de Bd. El registro D es útil para sincronizar hasta 16 dispositivos externos asociados con la RAM a la que apunta el registro B.
  • El registro G contiene cuatro puertos de E/S bidireccionales de propósito general.
  • El registro Q es un registro interno de 8 bits con retención, utilizado para almacenar datos cargados desde o hacia la RAM (B) y la A, así como datos de programa de 8 bits desde la ROM. Su contenido se envía a los puertos L cuando los controladores L están habilitados bajo control de programa. Además, el contenido de L puede leerse directamente en la RAM (B) y la A.
  • El registro SIO funciona como un registro de desplazamiento serie de 4 bits (entrada/salida) o como un contador binario, según el contenido del registro EN. SIO puede intercambiarse síncronamente con A, lo que le permite recibir o enviar un flujo continuo de datos serie. Cuando no se utiliza como registro de desplazamiento o contador, puede almacenar el contenido de A.
  • El registro EN es un registro interno de 4 bits que se carga bajo control de programa mediante la instrucción LEI. El estado de este registro selecciona o deselecciona una función específica asociada a cada bit.
  • Aunque no es directamente accesible mediante software, el contador de base de tiempo de 10 bits divide la frecuencia del ciclo de instrucción entre 1024, activando un indicador al desbordarse. La instrucción SKT comprueba si se activa este indicador (y, si se activa, lo restablece), lo que permite al programador implementar rutinas de temporizador. Algunos modelos de gama baja de la familia COP400 no disponen de este contador de base de tiempo ni de la instrucción SKT. Algunos dispositivos COP400 de gama alta pueden leer y escribir los ocho bits superiores del temporizador.

Gama alta

Hay algunos miembros de gama alta de la familia COP400, como el COP440 y el COP2440, que tienen 40 pines. Estos tienen registros y puertos adicionales: [ 7 ]

  • El puerto R es un puerto de E/S bidireccional adicional de ocho bits, similar al puerto Q. El puerto R contiene registros y controladores. Los datos que se van a enviar se almacenan en el registro R. La ruta de entrada va desde los pines hasta el acumulador y la memoria RAM. Los datos de entrada en los pines R no se almacenan en el registro R mediante ninguna señal externa. Esto debe hacerse indirectamente por el programa. Los controladores R, al igual que los controladores L, pueden configurarse en un estado de alta impedancia.
  • Estos dispositivos cuentan con un puerto bidireccional adicional de cuatro bits, el puerto H. El puerto H es esencialmente una réplica del puerto G, con la diferencia de que no se puede probar directamente.
  • El registro EN se expande a 8 bits. EN 4 - EN 5 seleccionan las fuentes de interrupción. EN 6 selecciona la fuente del contador T. EN 7 controla los controladores de salida del puerto R. El registro EN de 8 bits se escribe con la instrucción CAME y se lee con CEMA. Los 4 bits inferiores se pueden escribir con LEI.

Conjunto de instrucciones

La familia COP400 está diseñada para tener un código muy compacto. Todas las instrucciones tienen una longitud de uno o dos bytes. Las instrucciones más utilizadas son de un byte. En algunos casos, existen versiones especiales de un byte para instrucciones de dos bytes. Algunas características que se pueden utilizar para hacer que el código objeto sea más compacto son:

  • La instrucción LBI carga el registro B de siete bits con un valor inmediato. La instrucción en su forma general ocupa dos bytes. Existe una versión de LBI de un byte que solo puede asignar los valores 0, 1, 2 y 3 a Br y 9, 10, 11, 12, 13, 14, 15 y 0 (decimal) a Bd. La instrucción LBI de un byte puede acceder a 32 ubicaciones de RAM.
  • Se pueden apilar varias instrucciones LBI en serie. Solo se ejecutará la primera. Las instrucciones LBI subsiguientes se ejecutarán como NOP . Esto permite múltiples puntos de entrada con diferentes direcciones de inicio para una rutina compartida.
  • JSR, en su forma general de bifurcación de subrutina, ocupa dos bytes y puede acceder directamente a cualquier ubicación de memoria. JSRP es una bifurcación de subrutina de un byte que solo puede acceder a las ubicaciones de la tercera página de 64 bytes. Esta página se denomina página de subrutina o página 2, numerada desde cero. No se puede codificar una JSRP desde dentro de las páginas 2 o 3.
  • La instrucción JMP, en su forma de salto general, ocupa dos bytes y puede acceder directamente a cualquier ubicación de memoria. La instrucción JP ocupa un byte y puede acceder a cualquier ubicación en la página actual de 64 bytes. Los bits superiores del contador de programa (PC) permanecen sin cambios. Si la instrucción JP se ejecuta en la página 2 o 3, puede acceder a cualquiera de las 128 direcciones de memoria en dichas páginas. Esto resulta útil para crear un punto de entrada JSRP de un byte en la página 2, que luego puede saltar a una subrutina en la página 3 con una instrucción JP de un byte.
  • El registro B puede utilizarse para apuntar a hasta cuatro cadenas de RAM con una sobrecarga mínima. Las instrucciones de acceso a memoria LD, X, XIS y XDS pueden realizar una operación OR exclusiva con los dos bits menos significativos de Br y un valor inmediato de dos bits. Esto permite que la parte del registro de B (Br) se cambie a una de las otras cadenas de dígitos que comparten la misma dirección de dígito (Bd).
  • La porción del registro Bd puede usarse simultáneamente como puntero de memoria y contador de bucle. La instrucción XIS ​​se omitirá si Bd, después de incrementarse, desborda a cero, continuando así el bucle. De igual manera, la instrucción XDS se omitirá si Bd, después de decrementarse, desborda a 15 (decimal).

Tipos compatibles: El tipo 1 es de gama muy baja, como el COP410. El tipo 2, como el COP420, es el más común. El tipo 3 suele tener recursos para admitir 40 pines, incluso si el encapsulado no los tiene. El tipo 4 no se muestra porque no hay evidencia de que se haya producido. La tecnología CMOS incluye COP424C, COP425C, COP426C, COP444C, COP445C y COP404C.

Código de ejemplo

Este código de ejemplo demuestra varias de las características de ahorro de espacio del conjunto de instrucciones:

  • Instrucciones LBI de un solo byte
  • Múltiples instrucciones LBI en serie que crean múltiples puntos de entrada
  • Se realiza una operación XOR LD con Br para que B se invierta al destino y una operación XIS ​​para que B vuelva a su posición original.
  • Bd comparte las tareas de puntero y contador de bucle a través de la función skip en XIS.
  • salto de un solo byte, JP

Interrumpir

Los primeros dispositivos COP400 que tienen 28 pines o más admiten una sola interrupción . La línea IN 1 se utiliza como entrada de interrupción. La interrupción se habilita estableciendo el bit 1 del registro EN a 1 con una instrucción LEI. En respuesta a un pulso bajo de al menos dos ciclos de instrucción de duración en IN 1, se completan todas las instrucciones de transferencia de control como JP y se ejecutan todas las instrucciones LBI secuenciales. Luego, el PC se agrega a la pila de subrutinas y el control se transfiere al manejador de interrupciones en la dirección 0xFF. No se pueden llamar subrutinas en la rutina de servicio de interrupción en dispositivos con una pila de hardware. [ 6 ] Curiosamente, los dispositivos posteriores como el COP440 admiten cuatro fuentes de interrupción y dos rutinas de servicio, pero solo se puede seleccionar una fuente de interrupción a la vez. Se admiten subrutinas dentro de las rutinas de servicio de interrupción en dispositivos con un puntero de pila.

Ampliaciones arquitectónicas

Aunque la mayoría de los dispositivos COP400 estaban destinados a aplicaciones de gama baja, se crearon varias extensiones de la arquitectura para abordar aplicaciones más exigentes. En 1985, se añadieron a algunos dispositivos una CPU dual, una pila más profunda en la RAM y espacios de direcciones más grandes. [ 7 ]

CPU dual

En 1981, National Semiconductor anunció versiones de "doble CPU" del COP400. Estos procesadores de un solo chip, de tipo barril , contienen dos CPU aparentemente independientes que comparten instrucciones, memoria y la mayoría de los dispositivos de E/S. En realidad, las CPU no son completamente independientes y comparten recursos de hardware, de forma similar a los procesadores Intel con tecnología Hyper-Threading (HTT). Al igual que HTT, la versión de doble CPU funciona duplicando ciertas secciones del procesador —aquellas que almacenan el estado arquitectónico— , pero sin duplicar los recursos de ejecución principales, como la ALU , los buses y la memoria. Se establecen estados arquitectónicos separados para cada uno de los dos procesadores virtuales mediante la duplicación de A (acumuladores), B (registros de puntero), C (indicadores de acarreo), N (punteros de pila) y PC (contadores de programa). [ 6 ]

Cuando se desactiva el reinicio, ambos procesadores comienzan en la ubicación 0, que contiene una instrucción CLRA. Luego, un procesador salta a la ubicación 401 (hexadecimal) y, un ciclo de instrucción después, el segundo procesador ejecuta la ubicación 1. A continuación, los procesadores ejecutarán alternativamente un byte de código cada uno.

A la frecuencia de reloj máxima, el tiempo de ejecución de una instrucción (instrucción de un solo byte) para cada procesador es de 4 microsegundos; por lo tanto, el tiempo de ciclo de instrucción para cualquiera de los procesadores es el doble, es decir, 8 microsegundos.

Algunas versiones con doble CPU incluyen el COP2440N de 40 pines, el COP2441N de 28 pines y el COP2442N de 24 pines.

Pila de retorno en RAM

Los primeros dispositivos COP400 incluían una pila de retorno de hardware dedicada de dos o tres niveles. Los dispositivos posteriores, como el COP440, incorporan una pila de retorno de cuatro niveles implementada con un puntero de pila de 2 bits y memoria RAM. Las versiones con doble CPU disponen de dos pilas de retorno de cuatro niveles independientes, implementadas con dos punteros de pila de 2 bits y dos áreas de memoria RAM distintas.

Espacio de direcciones más grande

El conjunto de instrucciones básico del COP400 admite direcciones ROM de hasta 11 bits (2048 bytes), mientras que las direcciones de datos son de un máximo de 7 bits (128 ubicaciones). Los dispositivos del grupo 4 ampliaron el límite de memoria añadiendo instrucciones JMP, JSR y LBI de tres bytes con más bits de dirección. Estas admiten direcciones ROM de un máximo de 15 bits (32 768 bytes), mientras que las direcciones de datos son de un máximo de 9 bits (512 ubicaciones). Entre los dispositivos que admiten estas instrucciones se incluyen el COP408, el COP484, el COP485 y el COP409. Se desconoce si alguno de estos dispositivos del grupo 4 llegó a producirse.

Aplicaciones

COP420C utilizado en un módem DBT-03 de 1200 baudios.
Placa de E/S de Apple Lisa . El chip COP421, de 24 pines, se encuentra en la parte inferior. Haga clic para ampliar.

Propiedad intelectual

El microcontrolador T400 es una implementación de código abierto del microcontrolador COP400 escrita en VHDL . Es compatible con los dispositivos COP420/421 y COP410L/411L. El T400 está diseñado para reemplazar el chip original en los SOC que recrean sistemas heredados. El T400 se ha implementado en varias familias de FPGA . El T400 está disponible bajo la Licencia Pública General de GNU . [ 13 ]

Emulador

Existe un emulador MAME de código abierto para la familia COP400 y varios juegos portátiles y calculadoras especializadas. [ 14 ] [ 15 ]

Véase también

  • National Semiconductor COP8

Referencias

  1. "National Semiconductor: El COP antes del COPS" . El Museo CPUSHACK . 27 de septiembre de 2014. Consultado el 23 de diciembre de 2021 .
  2. Guía del usuario de la familia de microcontroladores COP400 COPS . National Semiconductor . Consultado el 23 de junio de 2025 .
  3. "Western Digital y la COP" . El Museo CPUSHACK . 2 de octubre de 2015. Consultado el 22 de diciembre de 2021 .
  4. "Microcontroladores de canal N de un solo chip WD4200/WD4210" . Consultado el 23 de diciembre de 2021 .
  5. "Microprocesadores, microcontroladores y chips FPU soviéticos, y sus análogos occidentales" . www.cpu-world.com . Consultado el 15 de noviembre de 2022 .
  6. 1 2 3 4 "COPS Microcontrollers Data Book" . National Semiconductor . Consultado el 19 de enero de 2022 .
  7. 1 2 "Manual de programación de COPS (1985)" (PDF) . Archivo digital de tecnología antigua . National Semiconductor . Consultado el 23 de diciembre de 2021 .
  8. "Apple Lisa 341-0064A (COP421)" . Visual6502 . Consultado el 24 de diciembre de 2021 .
  9. "National Semiconductor COP400" . Sean Riddle . Consultado el 24 de diciembre de 2021 .
  10. Woerner, Joerg. "Texas Instruments My Little Computer" . Datamath Calculator Museum . Consultado el 19 de junio de 2024 .
  11. "1983 Components Catalog"(PDF). Western Digital. p. 621. Retrieved 24 December 2021.
  12. "COP420 4-Bit Processor - Newbrain". Retrieved 30 December 2021.
  13. "T400 μController - National's 4-bit COP400 Microcontroller Implementation". All About Circuits. Retrieved 21 June 2024.
  14. "COP400 libmame repository". Github. Retrieved 23 April 2022.
  15. "Funjacks (example emulated game)". Arcade Database. Retrieved 23 April 2022.
Retrieved from "https://en.wikipedia.org/w/index.php?title=COP400&oldid=1354836393"