stringtranslate.com

Código de artículo 65C816

El W65C816S (también 65C816 o 65816 ) es un microprocesador (MPU) de 16 bits desarrollado y vendido por el Western Design Center (WDC). Introducido en 1983, [4] el W65C816S es una versión mejorada del MPU de 8 bits WDC 65C02 , a su vez una mejora CMOS del venerable MPU NMOS 6502 de MOS Technology . El 65C816 es la CPU para el Apple IIGS y, en forma modificada, para el Super Nintendo Entertainment System .

El 65 en la designación de la pieza proviene de su modo de compatibilidad 65C02, y el 816 significa que la MPU tiene tamaños de registro seleccionables de 8 y 16 bits . Además de la disponibilidad de registros de 16 bits, el W65C816S extiende el direccionamiento de memoria a 24 bits , lo que admite hasta 16 megabytes de memoria de acceso aleatorio . Tiene un conjunto de instrucciones mejorado y un puntero de pila de 16 bits , así como varias señales eléctricas nuevas para una mejor gestión del hardware del sistema.

Al reiniciarse , el W65C816S se inicia en "modo emulación", lo que significa que se comporta básicamente como un 65C02. A partir de entonces, el W65C816S puede cambiarse al "modo nativo" con una secuencia de dos instrucciones, lo que hace que habilite todas las funciones mejoradas, pero aún mantiene un grado sustancial de compatibilidad con la mayoría del software 65C02. Sin embargo, a diferencia de la versión PDIP40 del 65C02, que es un reemplazo compatible con pines para su antecesor NMOS, el PDIP40 W65C816S no es compatible con pines con ningún otro MPU de la familia 6502.

El W65C802 o 65802 es totalmente compatible en cuanto al software con el 65C816, pero es compatible eléctricamente con el 6502 y el 65C02. Por lo tanto, el 65C802 podría utilizarse como reemplazo directo en la mayoría de los sistemas equipados con un 6502 o un 65C02. Sin embargo, el 65C802 no puede emitir una dirección de 24 bits, lo que lo limita a un espacio de dirección de 64 KB. El 65C802 ya no se fabrica.

Historia

Versión PLCC-44 del microprocesador W65C816S , que se muestra montado en una computadora de placa única .

En 1981, Bill Mensch , fundador y CEO de WDC, comenzó a desarrollar el 65C02 con sus socios de producción, principalmente Rockwell Semiconductor y Synertek . El objetivo principal del proyecto 65C02 era pasar del proceso NMOS del 6502 original al proceso CMOS, lo que le permitiría funcionar a niveles de potencia mucho más bajos, en algún lugar entre 110 y 120 a cualquier velocidad de reloj dada. También se deseaba la capacidad de aumentar la velocidad de reloj máxima admitida. El diseño del 65C02 abordó las erratas del chip presentes en el 6502 NMOS (por ejemplo, el infame error) e introdujo nuevas instrucciones y nuevos modos de direccionamiento para algunas instrucciones existentes. [5]JMP (<addr>)

El desarrollo del W65C816S comenzó en 1982 después de que Mensch consultara con Apple Computer sobre una nueva versión de la serie de computadoras personales Apple II que, entre otras cosas, tendría gráficos y sonido mejorados. Apple quería una MPU que fuera compatible con el software del 6502 que se usaba entonces en el Apple II, pero con la capacidad de direccionar más memoria y cargar y almacenar palabras de 16 bits. El resultado fue el 65C816, terminado en marzo de 1984, con muestras proporcionadas tanto a Apple como a Atari en la segunda mitad del año y lanzado al mercado en 1985. [6] Mensch recibió la ayuda de su hermana Kathryn durante el proceso de diseño, quien fue responsable de parte del diseño del dispositivo.

El mismo proceso también dio lugar al 65C802, que era idéntico en su interior al 65C816. Ambos se produjeron en las mismas líneas de fabricación y divergieron solo durante las últimas etapas de metalización cuando el chip se conectaba a los pines externos. En el 65C802, esos pines tenían la misma disposición que el 6502 original, lo que permitió que se lo utilizara como un reemplazo directo al tiempo que se permitía utilizar el procesamiento de 16 bits de la CPU. Sin embargo, como utilizaba la distribución de pines original, solo tenía 16 pines de direccionamiento y, por lo tanto, solo podía acceder a 64 KB de memoria externa. [7] Por lo general, cuando los fabricantes de hardware diseñaban un proyecto desde cero, utilizaban el 65C816 en lugar del 65C802, lo que provocó que este último se retirara de la producción.

Posteriormente, Apple integró el 65C816 en la computadora Apple IIGS . El diseño básico del 65C816 fue obtenido de VLSI Technology , [8] GTE , Sanyo y otros desde mediados y fines de la década de 1980 hasta principios de la década de 1990.

En la década de 1990, tanto el 65C816 como el 65C02 se convirtieron en un núcleo completamente estático , lo que hizo posible detener por completo el reloj Ø2 del procesador sin pérdida de contenido de registros. Esta característica, junto con el uso de RAM estática asíncrona , hizo posible producir diseños que usaban energía mínima cuando estaban en estado de espera.

A partir de abril de 2024 , el W65C816S está disponible en WDC en paquetes PDIP de 40 pines , PLCC44 o TQFP de 44 pines , como MCU a través del W65C265, [9] y como núcleos IP para integración ASIC [10] [11] (por ejemplo, la serie W55V9x de circuitos integrados de educación y entretenimiento para televisión de Winbond [12] ).

W65C802P

Características

Características del WDC 65c816:

Comparación con modelos anteriores

Dos modos

El 65C816 tiene dos modos de funcionamiento: "modo emulación", en el que las operaciones de 16 bits son invisibles (los registros de índice se fuerzan a ocho bits) y el chip parece ser muy similar al 6502, con los mismos tiempos de ciclo para los códigos de operación; y "modo nativo", que expone todas las nuevas características. La CPU entra automáticamente en modo emulación cuando se enciende o se reinicia, lo que le permite reemplazar un 65(C)02, suponiendo que se realicen los cambios de circuito necesarios para adaptarse a la diferente disposición de pines. [5]

Registros de 16 bits

El cambio más obvio del 65C816 cuando se ejecuta en modo nativo es la expansión de los diversos registros de 8 bits a 16 bits. Esta mejora afecta al acumulador ( A), los registros de índiceX y de pila y el puntero de pila ( ). No afecta al contador de programa ( ), que siempre ha sido de 16 bits. [13]Y SPPC

Cuando se ejecuta en modo nativo, dos bits en el registro de estado cambian su significado. En el 6502 original, los bits 4 y 5 no se usaban, aunque el bit 4 se conoce como el bindicador de interrupción ( ). En modo nativo, el bit 4 se convierte en el xindicador y el bit 5 se convierte en el mindicador. Estos bits controlan si los registros de índice ( x) y el acumulador/memoria ( m) tienen un tamaño de 8 o 16 bits. Los ceros en estos bits establecen tamaños de 16 bits, los unos establecen tamaños de 8 bits. Estos bits se bloquean en unos cuando el procesador se enciende o se reinicia, pero se pueden cambiar cuando el procesador cambia al modo nativo. [13]

En el modo de funcionamiento nativo, los registros de índice y acumulador pueden configurarse en tamaños de 16 u 8 bits a discreción del programador utilizando las instrucciones REPy SEPpara manipular los bits de los registros de estado my x. Esta característica le da al programador la capacidad de realizar operaciones en datos de tamaño de palabra y de byte. Como los tamaños de los registros de índice y acumulador se pueden configurar de forma independiente, es posible, por ejemplo, tener el acumulador configurado en ocho bits y los registros de índice configurados en 16 bits, lo que le da al programador la capacidad de manipular bytes individuales en un rango de 64 KB sin tener que realizar aritmética de punteros.

Cuando los tamaños de los registros se establecen en 16 bits, un acceso a la memoria buscará o almacenará dos bytes contiguos a una velocidad de un byte por ciclo de reloj. Por lo tanto, una instrucción de lectura-modificación-escritura, como ROR <addr>, cuando se utiliza mientras el acumulador está establecido en 16 bits, afectará a dos bytes contiguos de memoria, no a uno, y consumirá más ciclos de reloj que cuando el acumulador está establecido en ocho bits. De manera similar, todas las operaciones aritméticas y lógicas serán operaciones de 16 bits. [14]

Direccionamiento de 24 bits

El otro cambio importante del sistema mientras se ejecuta en modo nativo es que el modelo de memoria se expande a un formato de 24 bits desde el formato original de 16 bits del 6502. El 65c816 hace uso de dos registros de 8 bits, el registro de banco de datos ( DB) y el registro de banco de programa ( PB), para establecer los bits 16-23 de la dirección, generando efectivamente direcciones de 24 bits. En ambos casos, 'banco' se refiere a un segmento contiguo de memoria de 64 KB que está limitado por el rango de direcciones $xx0000-$xxFFFF, donde xxes la dirección del banco, es decir, los bits 16-23 de la dirección efectiva. Tanto DBy PBse inicializan en $00al encender o reiniciar. [15]

Durante un ciclo de obtención de operando o código de operación , PBse antepone al contador de programa ( PC) para formar la dirección efectiva de 24 bits. Si se PC"enrolla" (regresa a cero), PBno se incrementará. Por lo tanto, un programa está limitado por los límites del banco en el que se está ejecutando. Este modelo de memoria implica que los destinos de bifurcación y subrutina deben estar en el mismo banco que la instrucción que realiza la bifurcación o la llamada, a menos que se utilicen saltos "largos" o llamadas a subrutinas para ejecutar código en otro banco. No hay ningún medio programático por el cual PBse pueda cambiar directamente. [16]

Durante un ciclo de obtención o almacenamiento de datos, DBse antepone a una dirección de datos de 16 bits para formar la dirección efectiva de 24 bits en la que se accederá a los datos. Esta característica del procesador permite ejecutar de forma sensata código 6502 o 65c02 que utiliza direcciones de 16 bits para hacer referencia a elementos de datos. A diferencia de PB, DBse puede cambiar bajo el control del programa, algo que podría hacerse para acceder a datos más allá de los límites del direccionamiento de 16 bits. Además, DBse incrementará temporalmente si una dirección se indexa más allá de los límites del banco en el que se encuentra actualmente DB. DBse ignora si se especifica una dirección de 24 bits como operando de una instrucción de obtención/almacenamiento de datos, o si la dirección efectiva está en la página directa (cero) o en la pila de hardware . En el último caso, $00se utiliza un banco implícito para generar la dirección efectiva. [17]

Una adición adicional al conjunto de registros es el registro de página directa de 16 bits ( DP), que establece la dirección base para lo que antes se llamaba página cero , pero ahora se conoce como página directa . El direccionamiento de página directa utiliza una dirección de 8 bits, lo que da como resultado un acceso más rápido que cuando se utiliza una dirección de 16 o 24 bits. Además, algunos modos de direccionamiento que ofrecen indirección solo son posibles en la página directa. En el 65(c)02, la página directa siempre son los primeros 256 bytes de memoria, de ahí "página cero". En modo nativo, el 65c816 puede reubicar la página directa (cero) en cualquier lugar del banco $00(los primeros 64 KB de memoria) escribiendo la dirección de inicio de 16 bits en DP. Hay una penalización de acceso de un ciclo si DPno se establece en un límite de página exacto, es decir, si el valor en DPno es $xx00, donde xxes el byte más significativo. [18]

Cambiar entre modos

El modo de operación actual se almacena en el ebit de emulación ( ). Habiendo agregado ya los nuevos bits xy mal conjunto anterior de seis indicadores en el registro de estado ( SR), no quedaban suficientes bits para contener el nuevo bit de modo. En su lugar, se utilizó una solución única en la que el bit de modo se dejó "invisible", sin poder acceder a él directamente. La instrucción XCE(e X change C arry with Emulation ) intercambia el valor del bit de emulación con el cbit de acarreo ( ), bit 0 en SR. Por ejemplo, si uno quiere ingresar al modo nativo después de que el procesador se haya iniciado, uno usaría CLCpara borrar el bit de acarreo y luego XCEescribirlo en el bit de emulación. [19] Volviendo al modo de emulación 65c02, se usan SECseguidos de XCE. [20]

Internamente, el 65c816 es un diseño de 16 bits. Los bits my en determinan cómo aparecen los registros de usuario (acumulador e índice) en el resto del sistema. Al reiniciarse, el 65c816 comienza en modo de emulación 6502, en el que y están bloqueados en . Por lo tanto, los registros están bloqueados en un tamaño de ocho bits. El byte más significativo (MSB) del acumulador (el -acumulador) no es directamente accesible, pero se puede intercambiar con el byte menos significativo (LSB) del acumulador (el -acumulador) utilizando la instrucción . No hay una operación correspondiente para los registros de índice ( y ), cuyos MSB están bloqueados en .xSRmx1BAXBAXY$00

Al cambiar al modo nativo, el bit más significativo de Xy Yserá cero y el Bacumulador permanecerá inalterado. Si se borra el mbit en , el acumulador se "unirá" al acumulador para formar un registro de 16 bits (llamado acumulador). Una operación de carga/almacenamiento o aritmética/lógica que involucre al acumulador o la memoria será una operación de 16 bits: se requieren dos ciclos de bus para obtener/almacenar un valor de 16 bits.SRBAC

Si se borra el xbit en SR, ambos registros de índice se establecerán en 16 bits. Si se utiliza para indexar una dirección, por ejemplo, LDA SOMEWHERE,X, el valor de 16 bits en el registro de índice se agregará a la dirección base para formar la dirección efectiva.

Si el mbit en SRestá establecido, el acumulador volverá a ser un registro de 8 bits y las operaciones posteriores en el acumulador, con algunas excepciones, serán operaciones de 8 bits. El B-acumulador conservará el valor que tenía cuando el acumulador se estableció en 16 bits. Las excepciones son las instrucciones que transfieren el registro de página directa ( DP) y el puntero de pila ( SP) hacia/desde el acumulador. Estas operaciones siempre tienen 16 bits de ancho en modo nativo, independientemente de la condición del mbit en SR.

Si se activa el xbit SR, no solo los registros de índice volverán a tener 8 bits, sino que además se perderá todo lo que había en el MSB mientras tenían 16 bits de ancho, algo que un programador de lenguaje ensamblador no puede darse el lujo de olvidar. [21]

Aplicaciones

Sistemas basados ​​en variantes 65c816:

Véase también

Referencias

Citas

  1. ^ Mensch, William D. "Un informe sobre el 65c832". Archivado desde el original el 7 de abril de 2024. Consultado el 7 de abril de 2024 .
  2. ^ "Información, especificaciones y hoja de datos de W65C832 (marzo de 1990)" (PDF) . ReActive Micro . 6 de septiembre de 2010 [marzo de 1990]. Archivado (PDF) del original el 7 de abril de 2024 . Consultado el 7 de abril de 2024 .
  3. ^ "Información, especificaciones y hoja de datos de W65C832" (PDF) . 6502.org . Archivado desde el original (PDF) el 30 de junio de 2023 . Consultado el 7 de abril de 2024 .
  4. ^ Cronología de los microprocesadores (1980-1989)
  5. ^ en Eyes & Lichty 1986, pág. 42.
  6. ^ Ojos y Lichty 1986, pág. 44.
  7. ^ Ojos y Lichty 1986, pág. 45.
  8. ^ Libro de datos de productos lógicos específicos de la aplicación 1988. VLSI Technology Inc. 1988. págs. 257–279 . Consultado el 18 de marzo de 2024 .
  9. ^ "Microcontrolador W65C265S de 16 bits". The Western Design Center, Inc. 5 de enero de 2021. Archivado desde el original el 2 de abril de 2024. Consultado el 7 de abril de 2024 .
  10. ^ "Microprocesador W65C816 de 8/16 bits". The Western Design Center, Inc. 5 de enero de 2021. Archivado desde el original el 15 de noviembre de 2023. Consultado el 7 de abril de 2024 .
  11. ^ "Microcontrolador W65C265S de 8/16 bits". The Western Design Center, Inc. 5 de enero de 2021. Archivado desde el original el 7 de abril de 2024. Consultado el 7 de abril de 2024 .
  12. ^ "Hoja de datos del controlador de TV-toy W55V92" (PDF) . Arrow Electronics . 2 de mayo de 2006 . Consultado el 12 de junio de 2024 .
  13. ^ en Eyes & Lichty 1986, pág. 46.
  14. ^ Ojos y Lichty 1986, pág. 52.
  15. ^ Ojos y Lichty 1986, pág. 53.
  16. ^ Ojos y Lichty 1986, pág. 54.
  17. ^ Ojos y Lichty 1986, pág. 55.
  18. ^ Ojos y Lichty 1986, pág. 80.
  19. ^ Ojos y Lichty 1986, pág. 64.
  20. ^ Ojos y Lichty 1986, pág. 65.
  21. ^ Ojos y Lichty 1986, pág. 51.
  22. ^ "CPU de 16 bits: nuevos ordenadores retro". Foenix Retro Systems .
  23. ^ "F256K". Sistemas retro Foenix .

Bibliografía

Lectura adicional

Enlaces externos