stringtranslate.com

COP400

El COP400 o COP II es una familia de microcontroladores de 4 bits introducida en 1977 por National Semiconductor como un producto de continuación de su microcontrolador PMOS COP 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 adquiridos por Western Digital como la familia WD4200. [3] [4] En la Unión Soviética, varios microcontroladores COP400 se fabricaron 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 compuerta de silicio de canal N. Por lo general, se presenta 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 ofrece varias configuraciones de memoria y distribución de pines.

Entre los productos notables que utilizan chips de la familia COP400 se incluyen Apple Lisa , los juegos electrónicos Milton Bradley y Mattel , Coleco Head to Head Basketball, Grundy Newbrain y otros.

Memoria

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

Imagen de matriz COP410L de National Semiconductor

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 ser instrucciones de programa, datos de programa o punteros de dirección de salto. Debido a las características especiales asociadas con las instrucciones JP y JSRP, la ROM a menudo debe concebirse como organizada en páginas de 64 bytes cada una. Además, debido a las operaciones únicas realizadas por las instrucciones LQID y JID, las páginas de la ROM a veces 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 como 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 utilizado 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 en el registro de datos seleccionado. El contenido de 4 bits del dígito de la RAM al que apunta el registro B generalmente se carga, se intercambia con o se opera en el registro A.

Registros de CPU

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

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

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 en el registro C de 1 bit, que se emplea con mayor frecuencia para indicar un desbordamiento aritmético.

Todo el direccionamiento de la ROM se realiza a través del registro PC de 9, 10 u 11 bits. Su valor binario selecciona uno de los bytes contenidos en la ROM, normalmente 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 señalar la siguiente ubicación secuencial de la ROM, a menos que la instrucción actual sea una instrucción de transferencia de control. En este último caso, PC se carga con el valor no secuencial apropiado para implementar la operación de transferencia de control. El PC se desplaza automáticamente para señalar la siguiente página de 64 bytes o bloque de 256 bytes de la memoria del programa. Los 1, 2 o 3 bits superiores de PC también se utilizan en las instrucciones JID y LQID.

Los registros de guardado de subrutinas, SA, SB y SC, implementan tres niveles de subrutinas, lo que proporciona una pila de subrutinas de hardware LIFO (último en entrar, primero en salir). Algunas implementaciones no tienen SC.

Registros y puertos de E/S

No hay números de puerto ni direcciones de memoria asociados con los dispositivos de E/S del COP400. Todos los registros y puertos de E/S físicos están referenciados por el lenguaje ensamblador del COP400 directamente por su nombre.

Base

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

De 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]

Conjunto de instrucciones

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

Tipos admitidos: 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 paquete no tiene 40 pines. El tipo 4 no se muestra porque no hay evidencia de que se haya producido.

Código de ejemplo

Este código de ejemplo demuestra varias de las funciones de ahorro de espacio en el conjunto de instrucciones:

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 en 1 con una instrucción LEI. En respuesta a un pulso de baja frecuencia de al menos dos ciclos de instrucción de duración en IN 1, se completan todas las transferencias de instrucciones de control, como JP, y se ejecutan todas las instrucciones LBI secuenciales. Luego, el PC se inserta en la pila de subrutinas y el control se transfiere al controlador 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. Las subrutinas se admiten dentro de las rutinas de servicio de interrupción en dispositivos con un puntero de pila.

Extensiones 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 CPU duales, una pila más profunda en RAM y espacios de direcciones más grandes. [7]

CPU dual

Las versiones de "CPU dual" del COP400 fueron anunciadas por National Semiconductor en 1981. Estos procesadores de barril de un solo chip 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 manera similar a los procesadores Intel con tecnología Hyper-Threading (HTT). Al igual que HTT, la versión de CPU dual funciona duplicando ciertas secciones del procesador (las que almacenan el estado arquitectónico) , pero no duplicando los principales recursos de ejecución, como ALU , buses y memoria. Se establecen estados arquitectónicos separados para cada uno de los dos procesadores virtuales con A (acumuladores), B (registros de puntero), C (indicadores de acarreo), N (punteros de pila) y PC (contadores de programa) duplicados. [6]

Cuando se anula 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) seguido un ciclo de instrucción más tarde por el segundo procesador que ejecuta la ubicación 1. Luego, los procesadores ejecutarán alternativamente un byte de código cada uno.

A la frecuencia máxima de reloj, el tiempo de ejecución de instrucciones (instrucción de un solo byte) para cada procesador es de 4 microsegundos, por lo tanto, el tiempo del ciclo de instrucción para cada procesador es el doble de esa cantidad, 8 microsegundos.

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

Pila de retorno en RAM

Los dispositivos COP400 anteriores incluían una pila de retorno de hardware dedicada de dos o tres niveles. Los dispositivos posteriores, como el COP440, cuentan con una pila de retorno de 4 niveles implementada con un puntero de pila de 2 bits y RAM. Las versiones de CPU dual tienen dos pilas de retorno de 4 niveles independientes implementadas con dos punteros de pila de 2 bits y dos áreas de RAM diferentes.

Espacio de direcciones más grande

El conjunto básico de instrucciones COP400 admite direcciones ROM de hasta 11 bits (2048 bytes), mientras que las direcciones de datos tienen un máximo de 7 bits (128 ubicaciones). Los dispositivos denominados 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. Estos admiten direcciones ROM de 15 bits como máximo (32 768 bytes), mientras que las direcciones de datos tienen un máximo de 9 bits (512 ubicaciones). Los dispositivos que admiten estas instrucciones incluyen COP408, COP484, COP485 y C0P409. No está claro si se fabricó alguno de estos dispositivos del grupo 4.

Aplicaciones

Propiedad intelectual

El microcontrolador T400 es una implementación de código abierto del microcontrolador COP400 escrito en VHDL . Se admiten los dispositivos COP420/421 y COP410L/411L. El T400 está pensado para reemplazar al 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 GNU . [13]

Emulador

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

Véase también

Referencias

  1. ^ "National Semiconductor: La COP antes de la COPS". 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 y COPS". National Semiconductor . Consultado el 3 de agosto de 2023 .
  3. ^ "Western Digital y la COP". 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, chips FPU soviéticos y sus análogos occidentales". www.cpu-world.com . Consultado el 15 de noviembre de 2022 .
  6. ^ abcd «Libro de datos de microcontroladores COPS». National Semiconductor . Consultado el 19 de enero de 2022 .
  7. ^ ab "El manual de programación COPS (1985)" (PDF) . Archivo digital de tecnología vintage . 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". Museo de la calculadora Datamath . Consultado el 19 de junio de 2024 .
  11. ^ "Catálogo de componentes de 1983" (PDF) . Western Digital. pág. 621 . Consultado el 24 de diciembre de 2021 .
  12. ^ "Procesador COP420 de 4 bits - Newbrain" . Consultado el 30 de diciembre de 2021 .
  13. ^ "T400 μController - Implementación del microcontrolador COP400 de 4 bits de National". Todo sobre circuitos . Consultado el 21 de junio de 2024 .
  14. ^ "Repositorio libmame COP400". Github . Consultado el 23 de abril de 2022 .
  15. ^ "Funjacks (ejemplo de juego emulado)". Base de datos Arcade . Consultado el 23 de abril de 2022 .