stringtranslate.com

WDC 65C816

El W65C816S (también 65C816 o 65816 ) es un microprocesador (MPU) de 16 bits desarrollado y vendido por Western Design Center (WDC). Introducido en 1983, [1] el W65C816S es una versión mejorada del MPU de 8 bits WDC 65C02 , en sí mismo una mejora CMOS del venerable MPU 6502 NMOS de MOS Technology . El 65C816 es la CPU del Apple IIGS y, en forma modificada, del 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 amplía el direccionamiento de la memoria a 24 bits , admitiendo 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 mejorar la gestión del hardware del sistema.

Al reiniciar , el W65C816S se inicia en "modo de emulación", lo que significa que se comporta sustancialmente como un 65C02. A partir de entonces, el W65C816S se puede cambiar al "modo nativo" con una secuencia de dos instrucciones, lo que hace que habilite todas las funciones mejoradas y, al mismo tiempo, mantenga 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 ninguna otra MPU de la familia 6502.

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

Historia

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

En 1981, Bill Mensch , fundador y director ejecutivo de WDC, comenzó el desarrollo del 65C02 con sus socios de producción, principalmente Rockwell Semiconductor y Synertek . El objetivo principal del esfuerzo 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, entre 110 y 120 a cualquier velocidad de reloj determinada. También se deseaba la posibilidad de aumentar la velocidad máxima de reloj admitida. El diseño 65C02 abordó las erratas del chip presentes en el NMOS 6502 (por ejemplo, el infame error) e introdujo nuevas instrucciones y nuevos modos de direccionamiento para algunas instrucciones existentes. [2]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, habría mejorado los gráficos y el sonido. Apple quería una MPU que fuera compatible con el software 6502 que entonces se usaba en el Apple II, pero con la capacidad de gestionar 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 lanzamiento completo en 1985. [3] Mensch contó con la ayuda durante el proceso de diseño de su hermana Kathryn, quien era responsable para parte del diseño del dispositivo.

El mismo proceso también condujo al 65C802, que era idéntico por dentro 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 el mismo diseño que el 6502 original, lo que permitía usarlo como reemplazo directo y al mismo tiempo permitir el procesamiento de 16 bits de la CPU. Sin embargo, como usaba el pinout original, sólo tenía 16 pines de direccionamiento y, por lo tanto, sólo podía acceder a 64 KB de memoria externa. [4] Normalmente, cuando los fabricantes de hardware diseñaban un proyecto desde cero, utilizaban el 65C816 en lugar del 65C802, lo que provocaba que este último fuera retirado de producción.

Posteriormente, Apple integró el 65C816 en la computadora Apple IIGS . El diseño básico del 65C816 fue adquirido por GTE , Sanyo y otros desde mediados y finales de los años 1980 hasta principios de los 1990.

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

A partir de 2023 , el W65C816S está disponible en WDC en paquetes PDIP de 40 pines , PLCC44 o TQFP de 44 pines , así como un núcleo para la integración de ASIC (por ejemplo, la serie W55V9x de circuitos integrados de entretenimiento educativo para TV de Winbond ). WDC, una empresa de semiconductores sin fábrica , trabaja con varias fundiciones para producir el W65C816S, así como otros productos compatibles. Los procesadores discretos están disponibles a través de varios distribuidores de productos electrónicos. Para los diseñadores que desean incluir la funcionalidad W65C816S en un ASIC personalizado , WDC ofrece código RTL ( nivel de transferencia de registro ) en Verilog .

W65C802P

Características

Características del WDC 65c816:

Comparación con modelos anteriores.

Dos modos

El 65C816 tiene dos modos de funcionamiento: "modo de 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 el códigos de operación; y el "modo nativo", que expone todas las funciones nuevas. La CPU ingresa automáticamente al modo de 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. [2]

registros de 16 bits

El cambio más obvio en el 65C816 cuando se ejecuta en modo nativo es la expansión de los distintos registros de tamaños de 8 a 16 bits. Esta mejora afecta al acumulador ( A), los registros de índiceX y y el puntero de pila ( ). No afecta al contador del programa ( ), que siempre ha sido de 16 bits. [5]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 utilizaban, aunque el bit 4 se conoce como bindicador de interrupción ( ). En modo nativo, el bit 4 se convierte en la xbandera y el bit 5 se convierte en la mbandera. Estos bits controlan si los registros de índice ( x) y/o 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 vuelven modificables cuando el procesador se cambia al modo nativo. [5]

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

Cuando los tamaños de registro 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 y escritura, como ROR <addr>, cuando se usa mientras el acumulador está configurado en 16 bits, afectará dos bytes contiguos de memoria, no uno, y consumirá más ciclos de reloj que cuando el acumulador está configurado en ocho bits. De manera similar, todas las operaciones aritméticas y lógicas serán operaciones de 16 bits. [6]

direccionamiento de 24 bits

El otro cambio importante en el 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 utiliza dos registros de 8 bits, el banco de datos registro ( DB) y el registro del banco del programa ( PB), para configurar los bits 16-23 de la dirección, generando efectivamente direcciones de 24 bits. En ambos casos, 'banco' se refiere a un segmento de memoria contiguo de 64 KB que está delimitado por el rango de direcciones $xx0000-$xxFFFF, donde xxestá la dirección del banco, es decir, los bits 16-23 de la dirección efectiva. Ambos DBy PBse inicializan al $00encender o restablecer. [7]

Durante un ciclo de búsqueda de código de operación o de operando , PBse antepone al contador del programa ( PC) para formar la dirección efectiva de 24 bits. En caso de PC"ajustarse" (volver a cero), PBno se incrementará. Por tanto, un programa está limitado por los límites del banco en el que se ejecuta. Este modelo de memoria implica que los objetivos de rama y subrutina deben estar en el mismo banco que la instrucción que realiza la rama o llamada, a menos que se utilicen saltos "largos" o llamadas de subrutina para ejecutar código en otro banco. No existe ningún medio programático que PBpueda cambiarse directamente. [8]

Durante un ciclo de recuperació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 hace posible ejecutar con sensatez 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 se podría hacer 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 actualmente en 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 este último caso, $00se utiliza un banco implícito para generar la dirección efectiva. [9]

Otra adición 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 denomina página directa . El direccionamiento directo de páginas 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 direccionamiento indirecto solo son posibles en página directa. En 65(c)02, la página directa son siempre los primeros 256 bytes de memoria, por lo tanto, “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 inicial de 16 bits en DP. Hay una penalización de acceso de un ciclo si DPno se establece un límite de página exacto, es decir, si el valor en DPno es $xx00, donde xxestá el byte más significativo. [10]

Cambiar entre modos

El modo de operación actual se almacena en el ebit de emulación ( ). Habiendo agregado ya los bits nuevos xy mal conjunto anterior de seis indicadores en el registro de estado ( SR), no quedaban suficientes bits para contener el bit de nuevo modo. En su lugar, se utilizó una solución única en la que el bit de modo se dejaba "invisible", sin poder acceder 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 desea ingresar al modo nativo después de que el procesador se haya iniciado, se debe CLCborrar el bit de acarreo y luego XCEescribirlo en el bit de emulación. [11] Al volver al modo de emulación 65c02 se utiliza SECseguido de XCE. [12]

Internamente, el 65c816 tiene un diseño totalmente de 16 bits. Los bits my determinan cómo aparecen los registros de usuario (acumulador e índice) en el resto del sistema. Tras el reinicio, el 65c816 se inicia en el modo de emulación 6502, en el que y están bloqueados en . Por tanto, los registros están bloqueados en un tamaño de ocho bits. No se puede acceder directamente al byte más significativo (MSB) del acumulador (el acumulador), pero se puede intercambiar con el byte menos significativo (LSB) del acumulador (el acumulador) mediante la instrucción. No existe ninguna operación correspondiente para los registros de índice ( y ), cuyos MSB están bloqueados en .xSRmx1BAXBAXY$00

Al cambiar al modo nativo, el MSB de Xy Yserá cero y el Bacumulador no cambiará. Si se borra el mbit de entrada , el acumulador se “agrupará” al acumulador para formar un registro de 16 bits (llamado acumulador). Una operación de carga/almacenamiento o aritmética/lógica que involucre el acumulador y/o la memoria será una operación de 16 bits; se requieren dos ciclos de bus para recuperar/almacenar un valor de 16 bits.SRBAC

Si se borra el xbit 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 se establece el mbit in SR, 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 Bacumulador conservará el valor que tenía cuando el acumulador se configuró 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 establece el xbit SR, no sólo los registros de índice volverán a ser de 8 bits, sino que también se perderá todo lo que había en el MSB mientras tenían 16 bits de ancho, algo que un programador en lenguaje ensamblador no puede permitirse el lujo de olvidar. [13]

Aplicaciones

Sistemas basados ​​en variantes 65c816:

Ver también

Referencias

Citas

  1. ^ Cronología de microprocesadores (1980-1989)
  2. ^ ab Ojos y Lichty 1986, p. 42.
  3. ^ Ojos y Lichty 1986, p. 44.
  4. ^ Ojos y Lichty 1986, p. 45.
  5. ^ ab Ojos y Lichty 1986, p. 46.
  6. ^ Ojos y Lichty 1986, p. 52.
  7. ^ Ojos y Lichty 1986, p. 53.
  8. ^ Ojos y Lichty 1986, p. 54.
  9. ^ Ojos y Lichty 1986, p. 55.
  10. ^ Ojos y Lichty 1986, p. 80.
  11. ^ Ojos y Lichty 1986, p. 64.
  12. ^ Ojos y Lichty 1986, p. sesenta y cinco.
  13. ^ Ojos y Lichty 1986, p. 51.
  14. ^ "CPU de 16 bits: nuevas computadoras retro". Sistemas retro Foenix .
  15. ^ "F256K". Sistemas retro Foenix .

Bibliografía

Otras lecturas

enlaces externos