De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

El microcontrolador COP8 de National Semiconductor es un microcontrolador de núcleo CISC de 8 bits , cuyas principales características son:

Tiene un ciclo de máquina de hasta 2 millones de ciclos por segundo, pero la mayoría de las versiones parecen poder overclockear hasta 2,8 millones de ciclos por segundo (reloj de 28 MHz). [ cita requerida ]

Registros y mapa de memoria [ editar ]

La COP8 utiliza espacios de datos e instrucción separados ( arquitectura de Harvard ). [1] : 2-1 [2] : 2-4 El espacio de direcciones de instrucciones es de 15 bits (32 KiB como máximo), mientras que las direcciones de datos son de 8 bits (256 bytes como máximo, ampliadas mediante cambio de banco).

Para permitir la detección de errores de software, todas las direcciones de instrucciones no válidas se leen como cero, que es una instrucción de captura. La RAM no válida por encima de la pila se lee como todos unos, que es una dirección no válida.

La CPU tiene un acumulador de 8 bits y un contador de programa de 15 bits . Se mapean en memoria 16 registros adicionales de 8 bits (R0 – R15) y una palabra de estado de programa de 8 bits . Hay instrucciones especiales para acceder a ellos, pero también se pueden usar instrucciones generales de acceso a la RAM.

El mapa de memoria se divide en la mitad de RAM y la mitad de registros de control de la siguiente manera:

Si la RAM no está almacenada, entonces R15 (S) es simplemente otro registro de propósito general. Si la RAM está almacenada, la mitad inferior del espacio de direcciones de datos (direcciones 0x00–7F) se dirige a un banco de RAM seleccionado por S. Los registros de propósito especial en la mitad superior del espacio de direcciones de datos siempre están visibles. Los registros de datos en 0xF x se pueden utilizar para copiar datos entre bancos.

Los bancos de RAM distintos del banco 0 tienen todos los 128 bytes disponibles. La pila (direccionada a través del puntero de pila) siempre está en el banco 0, sin importar cómo esté configurado el registro S.

Transferencias de control [ editar ]

Además de 3 bytes JMPy JSRlas instrucciones que puede abordar todo el espacio de direcciones, las versiones de 2 bytes de estas instrucciones pueden saltar dentro de una página de 4K. La instrucción especifica los 12 bits bajos y los 3 bits altos de la PC se conservan. (Están pensados ​​principalmente para modelos con hasta 4K de ROM).

También hay instrucciones indirectas de salto e indirecto de acumulador de carga que utilizan el contenido del acumulador como los 8 bits bajos de una dirección; se conservan los 7 bits altos de la PC actual.

Para bifurcaciones de corta distancia, hay 63 instrucciones de 1 byte que realizan bifurcaciones relativas a PC desde PC-32 a PC + 31. Esta es una adición de 15 bits y no se aplican requisitos de límites de página.

Las ramas condicionales per se no existen, ni el procesador proporciona los indicadores de estado ZCVN tradicionales , aunque la palabra de estado del programa contiene indicadores de acarreo y medio acarreo para aritmética multibyte. Más bien, hay una serie de instrucciones para comparar y omitir. Por ejemplo, IFEQcompara sus dos operandos y omite la siguiente instrucción si no son iguales. Se puede omitir cualquier instrucción; no se limita a las sucursales.

Una característica única de la arquitectura COP8 es la IFBNEinstrucción. Esto compara los 4 bits bajos del registro B (puntero de memoria) con una constante inmediata de 4 bits, y se puede usar para hacer un bucle hasta que B llegue al final de un búfer pequeño (hasta 16 bytes).

Una extensión interesante de este mecanismo es la RETSKinstrucción de retorno y salto, que permite que cualquier llamada de subrutina salte condicionalmente la siguiente instrucción. Esto proporciona una forma muy compacta de devolver un valor booleano de una subrutina.

Conjunto de instrucciones [ editar ]

Los operandos COP8 se enumeran en destino, orden de origen. La mayoría de las instrucciones tienen el acumulador A como uno de los operandos. El otro operando generalmente se elige entre un valor inmediato de 8 bits, una dirección RAM de 8 bits o [B]la dirección RAM seleccionada por el registro B. Algunas instrucciones también soportan RAM abordar por el registro X ( [X]), y post-inc / decremento variantes ( [B+], [B−], [X+], [X−]).

El direccionamiento indirecto a través de B es particularmente rápido y se puede realizar en el mismo ciclo en el que se ejecuta la instrucción.

Por otro lado, el direccionamiento RAM absoluto no se codifica directamente en la mayoría de los casos. Más bien, un código de operación de prefijo de "direccionamiento directo" especial, seguido de una dirección de 1 byte, puede preceder a cualquier instrucción con un [B]operando y lo cambia a un operando directo de memoria. Esto agrega dos bytes y tres ciclos a la instrucción. (Las instrucciones de salto condicional omiten el prefijo y la siguiente instrucción como un par).

Todas las instrucciones de "movimiento" se llaman LD(carga) incluso si el destino es una dirección de memoria. Inusualmente, no hay LDinstrucciones con el acumulador como fuente; las tiendas se realizan con la Xinstrucción que intercambia el acumulador con el operando de memoria, almacenando A y cargando el contenido de la memoria anterior. (Esto no requiere tiempo adicional; X A,[B]es una instrucción de un ciclo).

Hay instrucciones para buscar de tablas en ROM. Estos combinan los 7 bits altos del contador de programa (PCU) con el acumulador, obtienen un byte de esa dirección y lo colocan en el acumulador ( LAIDinstrucción) o los 8 bits bajos del contador de programa PCL ( JIDinstrucción). Debido a que la siguiente instrucción ejecutada debe estar en la misma página de ROM de 256 bytes que la tabla misma, no es posible una tabla de 256 entradas.

*: Solo en núcleos de "familia de funciones" (COP888 / COP8SA); no presente en núcleos de "familia básica" (COP800).
†: Solo en modelos de "familia flash" (COP8TA / COP8C) con ROM de arranque para programación en el sistema

Referencias [ editar ]

  1. ^ a b Manual del usuario básico de la familia COP8 (PDF) . Revisión 002. National Semiconductor . Junio ​​de 1996. Número de literatura 620895-002 . Consultado el 2 de enero de 2021 .
  2. ↑ a b Aleaf, Abdul (julio de 1996). "Comparación de COP878x con la familia COP8SAx7 mejorada - Consideraciones de hardware / software" (PDF) . Semiconductor Nacional . Nota de aplicación 1043.
  3. ^ Manual del usuario de la familia de funciones COP8 . Revisión 005. National Semiconductor . Marzo de 1999. Número de literatura 620897-005. Extraído de la imagen ISO comprimida 530094-003_COP8_Tools_Docs_Aug1999.zip , recuperado el 7 de enero de 2020.
  4. ^ "Guía del diseñador COP8SAx" (PDF) . Semiconductor Nacional . Enero de 1997. Número de literatura 620894-001.
  5. ^ a b "Microcontrolador basado en flash CMOS COP8SBR9 / COP8SCR9 / COP8SDR98-Bit con memoria de 32k, EEPROM virtual y caída de tensión" (PDF) (hoja de datos). Semiconductor Nacional . Abril de 2002 . Consultado el 6 de enero de 2021 .

Enlaces externos [ editar ]

  • Microcontroladores integrados de semiconductores nacionales ( CR16 y COP8)
  • microcontrolador-preguntas frecuentes / COP8 , 1995
  • "COP8 Nacional de Semiconductores" . 25 ° Directorio anual de microprocesadores / microcontroladores de EDN. EDN . 24 de septiembre de 1998.