El Adaptador de Interfaz Versátil ( VIA ) 6522 es un circuito integrado que fue diseñado y fabricado por MOS Technology como un controlador de puerto de E / S para la familia de microprocesadores 6502 . Proporciona dos puertos de E / S paralelos bidireccionales de 8 bits, dos temporizadores de 16 bits (uno de los cuales también puede funcionar como contador de eventos) y un registro de desplazamiento de 8 bits para comunicaciones en serie o conversión de datos entre formas en serie y paralelas. La dirección de cada bit de los dos puertos de E / S se puede programar individualmente. Además de ser fabricado por MOS Technology, el 6522 fue de segunda fuentepor otras empresas, incluidas Rockwell y Synertek .
El 6522 se usó ampliamente en computadoras de la década de 1980, particularmente en las máquinas de Commodore , [1] y también fue una parte central de los diseños de Apple III , Oric-1 y Oric Atmos , BBC Micro , Victor 9000 / Sirius 1 y Apple Macintosh . Las plataformas de videojuegos como Vectrex también usaron el 6522, al igual que el grupo de tablero digital Corvette de 1984 a 1989. Western Design Center (WDC) produce una versión CMOS de alta velocidad, la W65C22 [1] .
Puertos de entrada / salida
El VIA contiene 20 líneas de E / S, que están organizadas en dos puertos bidireccionales de 8 bits (o 16 líneas de E / S de uso general) y cuatro líneas de control (para el protocolo de enlace y la generación de interrupciones ). Las direcciones para las 16 líneas generales (PA0-7, PB0-7) se pueden programar de forma independiente. Las líneas de control se pueden programar para generar una interrupción cuando se activan (las cuatro), enganchar el puerto de E / S correspondiente (CA1 y CB1), generar automáticamente señales de protocolo de enlace para los dispositivos en los puertos de E / S o funcionar como un programa simple controlado salidas (CA2 y CB2). CB1 y CB2 también se utilizan como entrada de reloj y línea de datos para el registro de desplazamiento, lo que excluye su uso para otras funciones mientras el registro de desplazamiento está habilitado.
Temporizadores
El VIA proporciona dos temporizadores / contadores de 16 bits. Cada uno se puede utilizar en el modo de "temporizador de intervalo" de un disparo ( monoestable ); El temporizador 1 también se puede utilizar en el modo de "funcionamiento libre" (divisor / onda cuadrada ), en el que el temporizador se recarga automáticamente con el recuento inicial cuando llega a cero, y el temporizador 2 también se puede utilizar en el modo de "recuento de pulsos". en el que el temporizador contará las transiciones de estado alto a bajo del pin PB6 (el séptimo bit del puerto de E / S paralelo B). En el modo de disparo único, cada temporizador continúa funcionando libremente de modo que se puede determinar el tiempo desde que se alcanzó el cero, pero no se emite ninguna otra interrupción hasta que se reinicia el temporizador. Cada temporizador puede generar una interrupción cuando llega a cero, y el temporizador 1 también puede generar pulsos (en el modo de temporizador de intervalo) u ondas cuadradas (en el modo de funcionamiento libre) en el pin PB7 (el octavo bit del puerto B). El temporizador 2 se puede utilizar para proporcionar la frecuencia de reloj para el registro de desplazamiento. Una característica útil del modo de ejecución libre es que el pestillo del contador de 16 bits se puede cargar con un nuevo conteo sin recargar el contador, de modo que cargará el nuevo conteo solo después de que el conteo actual llegue a cero, cambiando sin problemas la frecuencia de salida. . Esta función de temporizador 1, combinado con su capacidad de producción a PB7 pin, se puede utilizar para generar formas de onda complejas, por ejemplo Modulación del ancho de señales, barridos de frecuencia, o bi-fase o FM codificados con flujos de bits en serie. [2]
Registro de turnos
El registro de desplazamiento de VIA es bidireccional, de 8 bits de ancho y puede ejecutarse desde un reloj generado por temporizador (desde el temporizador 2), el reloj de la CPU o una fuente externa en la línea CB1. La entrada / salida en serie está en la línea CB2 , y CB1 también se puede programar para generar un reloj de bits para dispositivos seriales externos con reloj .
Debido a un defecto de diseño, si el borde CB1 se encuentra a unos pocos nanosegundos del borde descendente del reloj ϕ2 (fase-2), el El borde CB1 se ignorará, lo que provocará la pérdida de un bit y errores de trama en los datos posteriores. Como solución alternativa, coloque la señal del reloj externo en el D de un flip-flop 74AC74 , ejecute el flop Salida Q a los 6522 Pin CB1 y sincronice el flip-flop con ϕ0 o ϕ2. [3] El error del registro de desplazamiento en serie se corrigió en el California Micro Devices CMD G65SC22, el Western Design Center W65C22 y en el MOS 6526 , el último dispositivo que usó Commodore en lugar del 6522 del Commodore 64 en adelante.
Salida IRQ
El NMOS 6522 tiene una salida IRQ de drenaje abierto que se puede usar en circuitos de interrupción O con cable . El WDC W65C22S, por el contrario, tiene una salida IRQ de tótem que debe aislarse de un circuito O cableado por un diodo Schottky , debido al hecho de que la salida del tótem activa activamente el pin IRQ alto cuando el W65C22S no está interrumpiendo. Este problema específico se resuelve en el WDC W65C22N que está equipado con una salida IRQ de drenaje abierto. [4]
Insectos
Aparte del error de registro de desplazamiento mencionado anteriormente, había un problema potencial de corrupción de registro que generalmente solo ocurría en sistemas que usaban el 6522 con un microprocesador que tenía una arquitectura de bus que no era 6502 , como un Motorola 68000 . Si las líneas de dirección cambiaron mientras la selección de chip era baja (inactiva) pero la entrada de reloj ϕ2 era alta (activa), el contenido del registro podría cambiarse a pesar de que el chip no fue seleccionado. Esto se solucionó en algunas, pero no en todas, las versiones de CMOS.
Referencias
- ^ La unidad de disquete [Commodore] 1541 tiene dos chips del tipo MOS 6522 ... [ enlace muerto ]
- ^ Catálogo de datos de tecnología MOS de 1982, págs. 2-54 y 2-55
- ↑ Wilson, Garth
- ^ Adaptador de interfaz versátil W65C22 (VIA)
enlaces externos
- Ficha de datos preliminar MOS 6522 VIA (1977)
- Disparos de matriz MOS 6522 VIA
- Descripción de WDC W65C22