stringtranslate.com

MOS Tecnología CIA

Configuración de pines del 6526 CIA
Los primeros 6526 CIA todavía estaban en un costoso paquete de cerámica con contactos de oro. Las versiones posteriores se produjeron en envases de plástico más económicos.
CIA MOS 6526A en paquete de plástico
MOS 8520A en un Amiga 1000

El Adaptador de Interfaz Compleja ( CIA ) 6526/8520 era un circuito integrado fabricado por MOS Technology . Sirvió como controlador de puerto de E/S para la familia de microprocesadores 6502 , proporcionando capacidades de E/S en paralelo y en serie , así como temporizadores y un reloj de hora del día (TOD). El uso más destacado del dispositivo fue en el Commodore 64 y el Commodore 128(D) , cada uno de los cuales incluía dos chips de la CIA. Las unidades de disquete Commodore 1570 y Commodore 1571 contenían una CIA cada una. Además, las computadoras domésticas Amiga y la unidad de disquete Commodore 1581 empleaban una variante modificada del circuito CIA llamado 8520. 8520 es funcionalmente equivalente al 6526 excepto por el circuito TOD simplificado. La predecesora de la CIA fue la PIA .

E/S paralelas

La CIA tenía dos puertos de E/S paralelos bidireccionales de 8 bits . Cada puerto tenía un registro de dirección de datos correspondiente, lo que permitía configurar cada línea de datos individualmente en modo de entrada o salida. Una lectura de estos puertos siempre devolvía el estado de las líneas individuales, independientemente de la dirección de datos que se hubiera establecido.

E/S serie

Un registro de desplazamiento interno bidireccional de 8 bits permitió a la CIA manejar E/S en serie . El chip podría aceptar entradas en serie sincronizadas desde una fuente externa y podría enviar salidas en serie sincronizadas con uno de los temporizadores programables incorporados. Se generaba una interrupción cada vez que se completaba una transferencia en serie de 8 bits. Fue posible implementar una " red " simple conectando el registro de desplazamiento y las salidas de reloj de varias computadoras. La tasa de bits máxima es de 500 kbit/s para la versión de 2 MHz.

La CIA incorpora una solución a un error en el registro de desplazamiento en serie en el anterior 6522 VIA . Originalmente, la CIA estaba destinada a permitir una comunicación rápida con una unidad de disco, pero al final no se pudo utilizar debido al deseo de mantener la compatibilidad de la unidad de disco con el VIC-20 ; en la práctica, el firmware de la unidad 1541 tuvo que ser incluso más lento que su predecesor VIC-20 para solucionar un comportamiento del procesador de video del C64 , que, al dibujar la pantalla, apagaba la CPU durante 40 microsegundos cada 512 microsegundos y en ese intervalo de tiempo. No puedo escuchar el autobús, arriesgándome a perderme un poco. [1] [2]

Temporizadores de intervalos

Había dos temporizadores de intervalos programables disponibles, cada uno con una precisión de submicrosegundos . Cada temporizador constaba de un contador regresivo preestablecido de solo lectura de 16 bits y un pestillo de solo escritura de 16 bits correspondiente . Cada vez que se iniciaba un temporizador, el pestillo del temporizador se copiaba automáticamente en su contador, y el contador luego disminuía con cada ciclo de reloj hasta el desbordamiento, en el cual se generaba una interrupción si la CIA estaba configurada para hacerlo.

El temporizador podría funcionar en modo "de un solo disparo", deteniéndose después de un desbordamiento insuficiente, o en modo "continuo", recargando el valor del bloqueo e iniciando el ciclo del temporizador nuevamente. Además de generar interrupciones, la salida del temporizador también podría conectarse al segundo puerto de E/S.

Tal como se configuró en el Commodore 64 y el Commodore 128 , la sincronización de la CIA estaba controlada por el reloj del sistema Ø2, nominalmente un MHz . Esto significó que los temporizadores disminuyeron en intervalos de aproximadamente un microsegundo, determinando el período de tiempo exacto si el sistema usaba el estándar de video NTSC o PAL . En el C-128, se empleó la ampliación del reloj para que la sincronización de la CIA no se viera afectada por si el sistema estaba funcionando en modo LENTO o RÁPIDO.

Fue posible generar intervalos de tiempo relativamente largos programando el temporizador B para contar los desbordamientos del temporizador A. Si ambos temporizadores se cargaran con el valor de intervalo máximo de 65.535, el resultado sería un intervalo de tiempo de una hora, 11 minutos y 34 segundos.

Reloj de hora del día (TOD)

La CIA incorpora un reloj de tiempo real, lo que proporciona un dispositivo de cronometraje más adecuado a las necesidades humanas que la precisión de microsegundos de los cronómetros de intervalo. La hora se mantiene en el formato americano AM/PM de 12 horas. El reloj TOD consta de cuatro registros de lectura/escritura: horas (con el bit 7 actuando como indicador AM/PM), minutos, segundos y décimas de segundo. Todos los registros se leen en formato BCD , simplificando así el proceso de codificación/decodificación.

La lectura de los registros siempre devolverá la hora del día. Para evitar un error de acarreo al recuperar la hora, la lectura del registro de horas detendrá inmediatamente la actualización del registro, sin ningún efecto en la precisión del cronometraje interno. Una vez leído el registro de décimas se reanudará la actualización. Es posible leer cualquier registro que no sea el de horas "sobre la marcha", lo que hace que el uso de un reloj TOD en funcionamiento como temporizador sea una aplicación práctica. En cambio, si se lee el registro de horas, es imprescindible leer posteriormente el registro de décimas. De lo contrario, todos los registros TOD permanecerán "congelados".

Establecer la hora implica escribir los valores BCD apropiados en los registros. Un acceso de escritura al registro de horas detendrá completamente el reloj. El reloj no volverá a funcionar hasta que se haya escrito un valor en el registro de décimas. Debido al orden en que aparecen los registros en el mapa de memoria del sistema , todo lo que se necesita es un bucle simple para escribir los registros en el orden correcto. Está permitido escribir sólo en el registro de décimas para "empujar" el reloj a la acción, en el que después de un reinicio del hardware, el reloj comenzará a las 1:00:00.0.

Además de sus funciones de cronometraje, el TOD se puede configurar para que actúe como un despertador , disponiéndolo para que genere una solicitud de interrupción en cualquier momento deseado. Debido a un error en muchos 6526 (consulte también las erratas a continuación), la IRQ de la alarma no siempre ocurriría cuando el componente de segundos del tiempo de la alarma es exactamente cero. La solución es establecer el valor de las décimas de la alarma en 0,1 segundos.

El circuito interno del reloj TOD está diseñado para funcionar mediante una señal de onda sinusoidal de 50 o 60 Hz . Tal como se usó en el C-64 y el C-128(D), la fuente de alimentación de la computadora suministraba dicha señal desde la red eléctrica, lo que daba como resultado un cronometrador estable con poca desviación a largo plazo. La capacidad de trabajar con ambas frecuencias de línea eléctrica permitió utilizar una única versión del 6526 en computadoras operadas en países con energía de 50 o 60 Hz. Es importante tener en cuenta que, contrariamente a la creencia popular, los estándares de vídeo NTSC o PAL no están directamente relacionados con la frecuencia de la red eléctrica. Además, algunas computadoras no obtuvieron su frecuencia de reloj TOD de la fuente de alimentación principal. Por ejemplo, las variantes NTSC y PAL del Commodore SX-64 utilizan un reloj TOD de 60 Hz suministrado por un cristal dedicado. El sistema operativo KERNAL en Commodore 64, por ejemplo, determinará el estándar de vídeo durante el inicio del sistema, pero no intenta identificar la frecuencia del reloj TOD suministrada ni inicializar los CIA correctamente en máquinas accionadas a 50 Hz. Por lo tanto, es responsabilidad de cualquier software de aplicación que desee utilizar cualquiera de las funciones TOD de la CIA determinar la frecuencia suministrada y configurar el indicador de la CIA en consecuencia. De lo contrario, el reloj podría desviarse rápidamente de la hora correcta.

La revisión 8520 de la CIA, tal como se usa en la unidad de disco Amiga y Commodore 1581 , modificó el reloj de hora para que fuera un contador binario de 24 bits, reemplazando el formato BCD del 6526. Sin embargo, otro comportamiento fue similar. .

Versiones

El CIA estaba disponible en versiones de 1 MHz (6526), ​​2 MHz (6526A) y 3 MHz (6526B). El paquete era un DIP de plástico o cerámica de 40 pines estándar JEDEC . El 8520 CIA, con su reloj de hora modificado, se utilizó en las computadoras Amiga .

Commodore incorporó una lógica similar a la CIA reducida (solo 4 registros) para el Commodore 1571 de costo reducido dentro del C128DCR (ver Commodore 128 ) en una matriz de puertas llamada 5710 que también contiene otras funciones. El 5710 CIA tiene el reloj en serie para la interfaz en serie rápida cableado a un valor de temporizador A equivalente a CIA6526 de 5, lo que genera un tiempo por bit de 5 μs en la transmisión. Esto es diferente de lo que solía ser un valor de Temporizador A de 6 en el 6526 CIA en el Commodore 1571 original . El 5710 CIA no contiene temporizador ni registros de control de temporizador. Solo contiene dos registros de puerto y el registro para controlar el cambio serial y su evento.

Erratas

Además del error de interrupción del reloj de alarma antes mencionado, muchos CIA presentaban un defecto en el que la pieza no generaba una interrupción de hardware del temporizador B si el registro de control de interrupciones (ICR) se leía uno o dos ciclos de reloj antes del momento en que debería producirse la interrupción. realmente han ocurrido. Este defecto, así como los errores lógicos en el sistema operativo proporcionado por Commodore (8 bits), causaron frecuentes errores pseudo- RS-232 en las computadoras Commodore 64 y Commodore 128 cuando se ejecutaban a velocidades de baudios más altas .

Referencias

  1. ^ Perry, Tekla S.; Wallich, Paul (marzo de 1985). "Historia del caso de diseño: el Commodore 64" (PDF) . Espectro IEEE . 22 (3): 48–58. doi :10.1109/MSPEC.1985.6370590. ISSN  0018-9235. S2CID  11900865. Archivado desde el original (PDF) el 13 de mayo de 2012 . Consultado el 12 de noviembre de 2011 .
  2. ^ artículos en c64-wiki.com

enlaces externos