WDC 65C816 - WDC 65C816

WDC 65C816
W65C816S8PG-14 lg.jpg
W65C816S en paquete PDIP40
Información general
Lanzado 1983 ; Hace 38 años ( 1983 )
Fabricante (s) común (es)
Rendimiento
Max. Frecuencia de reloj de la CPU 1 MHz a 14 MHz
Ancho de datos
Ancho de la dirección 24
Arquitectura y clasificación
Conjunto de instrucciones 6502
Instrucciones 92
Especificaciones físicas
Paquete (s)
Historia
Predecesor

El W65C816S (también 65C816 o 65816 ) es un microprocesador (MPU) de 8/16 bits desarrollado y vendido por Western Design Center (WDC). Introducido en 1983, el W65C816S es una versión mejorada del MPU de 8 bits WDC 65C02 , en sí mismo una mejora CMOS de la venerable MOS Technology 6502 NMOS MPU. El 65C816 era la CPU del Apple IIGS y, en forma modificada, 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 cuenta con direccionamiento de memoria extendido a 24 bits , que admite hasta 16 megabytes de memoria de acceso aleatorio , 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.

En el reinicio , 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 puede cambiarse al "modo nativo" con una secuencia de dos instrucciones, lo que hace que habilite todas las funciones mejoradas, pero aún 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 de su antecesor NMOS, el PDIP40 W65C816S no es compatible con pines con ninguna otra MPU de la familia 6502.

Relacionado con el W65C816S está el W65C802 , que tenía la misma estructura interna y soporte de 16 bits, pero usaba un diseño de 40 pines compatible con el 6502 original. Esto permitió que se usara como reemplazo directo en ciertos roles. Sin embargo, el 65C802 no pudo emitir una dirección completa de 24 bits, lo que lo limitó a 64 KB de memoria. El 65C802 y sus parientes ya no se producen.

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 del 65C02 era pasar del proceso NMOS del 6502 original al CMOS del 65C02, lo que le permitiría funcionar a niveles de potencia mucho más bajos, en algún lugar entre 110 y 120 cuando se ejecuta a la misma velocidad de reloj. También se trabajaron varios códigos de operación nuevos y correcciones de errores en el diseño.

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 del 6502 que se usaba en el Apple II, pero con la capacidad de utilizar más memoria y de cargar y almacenar palabras de 16 bits. El resultado fue el 65C816, terminado en marzo de 1984, con muestras entregadas a Apple y Atari en la segunda mitad del año y lanzamiento completo en 1985. Mensch fue ayudado durante el proceso de diseño por su hermana Kathryn, responsable de parte de el diseño del dispositivo.

El mismo proceso también llevó al 65C802, que era idéntico en el 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 estaba conectando a los pines externos. En el 65C802, esos pines tenían el mismo diseño que el 6502 original, lo que permitía que se usara como un reemplazo directo y al mismo tiempo permitía que se usara el procesamiento de 16 bits de la CPU. Sin embargo, como usaba el pinout original, solo tenía 16 pines de direccionamiento y, por lo tanto, solo podía acceder a 64 KB de memoria externa. Por lo general, cuando los fabricantes de hardware diseñaron un proyecto desde cero, utilizaron 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 adquirido por GTE , Sanyo y otros desde mediados y finales de la década de 1980 hasta principios de la 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 de Ø2 del procesador sin perder el contenido del registro. 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 2021, 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 TV Edutainment IC 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 deseen incluir la funcionalidad W65C816S en un ASIC personalizado , WDC ofrece código RTL ( nivel de transferencia de registro ) en Verilog .

W65C802P

Características

WDC 65816 registros
2 3 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 (posición de bit)
Registros principales
B A Acumuladores
Registros de índice
X Índice X
Y Índice Y
0 0 0 0 0 0 0 0 DP D directo teléfono P registro edad
0 0 0 0 0 0 0 0 SP S tack P ointer
DB 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 D ata B registro ANK
Contador de programa
PB ordenador personal P ROGRAMA C ounter
Registro de estado
norte V metro X D I Z C S tatus R egister

Características del WDC 65816:

  • El diseño CMOS completamente estático ofrece un bajo consumo de energía (300  µ A a 1  MHz ) y una mayor inmunidad al ruido.
  • Amplio rango de voltaje de funcionamiento : 1,8 V a 5,0 V ± 5%.
  • Amplio rango de frecuencia de funcionamiento , oficialmente 14 MHz máximo a 5 voltios, utilizando una fuente de reloj monofásica (los aficionados han operado con éxito el 65C816 más allá de los 20 MHz).
  • El modo de emulación permite una compatibilidad sustancial de software con NMOS 6502 y CMOS 65C02, a excepción de los códigos de operación no documentados . Los 256 códigos de operación en el 65C816 son funcionales en ambos modos de operación.
  • El direccionamiento de memoria de 24 bits proporciona acceso a 16 MB de espacio de memoria .
  • ALU de 16 bits , acumulador (A), puntero de pila (SP) y registros de índice (X e Y).
  • Registro de página directa de 16 bits (también conocido como página cero) (DP).
  • Registros de banco de datos (DB) y banco de programa (PB) de 8 bits, que generan los bits 16–23 de código de 24 bits y direcciones de datos. Los registros separados del banco de datos y del programa permiten la segmentación del programa y el direccionamiento de datos lineales de 16 MB.
  • Salidas de control de dirección de datos válida (VDA) y dirección de programa válida (VPA) para la calificación de memoria, caché dual e implementación de DMA de robo de ciclo .
  • Salida de control de extracción vectorial (VPB) para indicar cuándo se está obteniendo un vector de interrupción .
  • La entrada de aborto (ABORTB) y el vector asociado respaldan las reparaciones del procesador de condiciones de error de bus, como fallas de página y violaciones de acceso a la memoria.
  • El direccionamiento relativo de pila y registro directo proporciona capacidad para programación reentrante , recursiva y reubicable .
  • 24 modos de direccionamiento: 13 modos 6502 originales con 92 instrucciones que utilizan 256 códigos de operación , incluidos la mayoría de los códigos de operación nuevos implementados en el 65C02.
  • Instrucciones de copia en bloque, que permiten la copia rápida de estructuras de datos de un área de RAM a otra con un código mínimo.
  • Las instrucciones Wait-for-Interrupt (WAI) y Stop-the-Clock (STP) reducen aún más el consumo de energía , disminuyen la latencia de interrupción y permiten la sincronización con eventos externos.
  • La instrucción de coprocesador (COP) con vector asociado admite configuraciones de coprocesador, por ejemplo, procesadores de punto flotante
  • Instrucción de "escape" (WDM) reservada para futuros códigos de operación de dos bytes y un enlace a diseños futuros. (WDM son las iniciales del diseñador W65C816S William D. Mensch ).

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 65C02, con los mismos tiempos de ciclo para el códigos de operación; y "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 65C02, asumiendo que uno realiza los cambios de circuito requeridos para adaptarse a los diferentes diseños de pines.

Registros de 16 bits

El cambio más obvio del 65C816 cuando se ejecuta en modo nativo es la expansión de varios registros de tamaños de 8 bits a 16 bits. Esta mejora afecta al acumulador (A), los registros de índice X e Y y el puntero de pila (SP). No afecta al contador de programa (PC), que siempre ha sido de 16 bits.

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 utilizaron, aunque el bit 4 se denomina bandera B (reak). En el modo nativo, el bit 4 se convierte en la bandera x y el bit 5 se convierte en la bandera m. 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 fijan en unos cuando el procesador se enciende o se reinicia, pero se pueden cambiar cuando el procesador se cambia al modo nativo.

Puede que no sea inmediatamente obvio por qué uno querría usar los registros ahora de 16 bits en el modo de 8 bits. El cambio al modo de 8 bits utilizando las nuevas instrucciones SEP(bit SEt en el estado del procesador) y REP(REset) significa que todas las instrucciones posteriores que accedan a esos registros solo leerán o escribirán un solo byte en lugar de dos. Por ejemplo, si el bit m se establece en 1 cuando LDA $1234se ejecuta una instrucción, solo se leerá un solo byte en la dirección $ 1234, reduciendo así el número de ciclos necesarios para ejecutar la instrucción. Esto es particularmente útil cuando se trata de datos de caracteres de 8 bits, por ejemplo.

Cuando los tamaños de registro se establecen en 16 bits, el acceso a la memoria accederá a dos bytes contiguos de memoria, al costo de un ciclo de reloj adicional. Además, una instrucción de lectura-modificación-escritura, como ROR <addr>cuando se usa mientras el acumulador está configurado en 16 bits, afectará a dos bytes contiguos de memoria, no a uno. De manera similar, todas las operaciones aritméticas y lógicas serán operaciones de 16 bits.

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 genera direcciones de 24 bits y hace uso de dos registros, el registro del banco de datos ( DB) y el registro del banco de programas ( PB), para establecer los bits 16–23 de la dirección efectiva. En ambos casos, 'banco' se refiere a un segmento de memoria contiguo de 64 KB que está limitado por el rango de direcciones $bb0000-$bbFFFF, donde bbestá la dirección del banco, es decir, los bits 16–23 de la dirección efectiva. Ambos DBy PBse inicializan al $00encender o restablecer.

Durante un ciclo de búsqueda de código de operación o operando , PBse antepone al contador de programa ( PC) para formar la dirección efectiva de 24 bits. Si se PC"envuelve" (vuelve a cero), PBno se incrementará. Por tanto, un programa está limitado por los límites del banco en el que se está ejecutando. Este modelo de memoria implica que los objetivos de las ramas y subrutinas deben estar en el mismo banco que la instrucción que realiza la rama 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.

Durante un ciclo de obtención o almacenamiento de datos, DBse antepone 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 sensatamente el código 6502 o 65C02 que usa 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 puede hacer para acceder a los datos más allá de los límites del direccionamiento de 16 bits. Además, DBse incrementará temporalmente si una dirección está indexada más allá de los límites del banco actualmente DB. DBse ignora si se especifica una dirección de 24 bits como operando para una instrucción de recuperació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, se utiliza un banco implícito $ 00 para generar la dirección efectiva.

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 directo usa una dirección de 8 bits, lo que da como resultado un acceso más rápido que cuando se usa 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 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. Existe una penalización de acceso de un ciclo si DPno se establece en un límite de página uniforme.

Cambiar entre modos

El modo de funcionamiento actual se almacena en el bit de emulación (E). Habiendo agregado ya los nuevos bits x y m al conjunto anterior de seis banderas 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 dejaba "invisible", sin poder acceder a él directamente. La nueva XCEinstrucción (eXchange Carry with Emulation) intercambia el valor del bit de emulación con el bit C (arry), bit 0 en el registro de estado. Por ejemplo, si uno quiere ingresar al modo nativo después de que el procesador se haya iniciado, se usaría CLCCLear el bit Carry y luego XCEescribirlo en el bit de emulación. Volviendo al modo de emulación 65C02, se utiliza SECseguido de XCE.

Internamente, el 65C816 es un diseño completamente de 16 bits. Los bits myx en SR determinan cómo aparecen los registros de usuario (acumulador e índice) para el resto del sistema. Tras el reinicio, el 65C816 se inicia en el modo de emulación 65C02, en el que myx se establecen en 1 y no se pueden cambiar. Por lo tanto, los registros aparecen para el resto del sistema como 8 bits. El byte más significativo (MSB) del acumulador (el acumulador B) no es directamente accesible, pero se puede intercambiar con el byte menos significativo (LSB) del acumulador (el acumulador A) utilizando la XBAinstrucción. No existe una operación correspondiente para los registros de índice (.X y .Y).

Al cambiar al modo nativo, el MSB de .X y .Y será cero y el acumulador B no cambiará. Si se borra el bit m en SR, el acumulador B se "agrupará" al acumulador A para formar un registro de 16 bits. 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 obtener / almacenar un valor de 16 bits.

Si se borra el bit x en SR, ambos registros de índice se establecerán en 16 bits. Si se usa para indexar una dirección, por ejemplo, LDA SOMEWHERE,Xel 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 bit m en SR, el acumulador volverá a ser un registro de 8 bits y las operaciones subsiguientes en el acumulador, con algunas excepciones, serán operaciones de 8 bits. El acumulador B conservará el valor que tenía cuando el acumulador estaba funcionando en modo de 16 bits. Las excepciones son las instrucciones que transfieren el registro de página directo (DP) y el puntero de pila (SP) hacia / desde el acumulador. Estas operaciones son siempre de 16 bits de ancho en modo nativo, independientemente de la condición del bit m en el registro de estado.

Si se establece el bit x en SR, no solo los registros de índice volverán a ser de 8 bits, sino que lo que haya en el MSB mientras estaba en el modo de 16 bits se perderá, algo que un programador en lenguaje ensamblador no puede permitirse olvidar.

Aplicaciones

Sistemas basados ​​en variantes 65816:

También se utiliza en las mejoras de C-One y SuperCPU para el Commodore 64 .

Ver también

Referencias

Citas

Bibliografía

  • Ojos, David; Lichty, Ron (1986). Programación del 65816, incluido el 6502, 65C02, 65802 . Prentice Hall. ISBN 978-0893037895.

Otras lecturas

enlaces externos

Este artículo se basa en material extraído del Diccionario de Computación en línea gratuito antes del 1 de noviembre de 2008 e incorporado bajo los términos de "renovación de licencias" de la GFDL , versión 1.3 o posterior.