
Los Intel 8253 y 8254 son temporizadores de intervalo programables (PIT), que realizan funciones de temporización y conteo utilizando tres contadores de 16 bits. [ 1 ]
La familia 825x fue diseñada principalmente para los procesadores Intel 8080/8085 , pero posteriormente se utilizó en sistemas compatibles con x86. Los chips 825x, o un circuito equivalente integrado en un chip más grande, se encuentran en todos los ordenadores compatibles con IBM PC y en ordenadores soviéticos como el Vector-06C .
En los PC compatibles, el canal del temporizador 0 está asignado a IRQ -0 (la interrupción de hardware de mayor prioridad). El canal del temporizador 1 está asignado a la actualización de la DRAM (al menos en los primeros modelos anteriores al 80386). El canal del temporizador 2 está asignado al altavoz del PC .
La variante Intel 82c54 (c de lógica CMOS ) maneja señales de reloj de hasta 10 MHz. [ 1 ]
Historia
El 8253 se describe en la publicación "Catálogo de datos de componentes" de Intel de 1980. El 8254, descrito como una versión mejorada del 8253 con velocidades de reloj más altas, tiene una hoja de datos "preliminar" en el "Catálogo de datos de componentes" de Intel de 1982.
El 8254 está implementado en HMOS y tiene un comando "Read Back" que no está disponible en el 8253, y permite que la lectura y escritura del mismo contador se intercalen. [ 2 ]
Los PC modernos compatibles, ya sea que utilicen CPU SoC o puente sur, suelen implementar compatibilidad total con 8254 para retrocompatibilidad e interoperabilidad. [ 3 ] El comando Read Back es una característica de E/S vital para la interoperabilidad con CPU y GPU multinúcleo.
Variantes
Existe una versión militar del Intel M8253 con un rango de temperatura de -55 °C a +125 °C que también tiene una tolerancia de potencia de 5 V de ±10 %. [ 4 ] La versión CMOS 82C53 disponible fue subcontratada a Oki Electronic Industry Co., Ltd. [ 5 ] La versión de paquete disponible del Intel 82C54 era en PLCC de 28 pines de muestra en el primer trimestre de 1986. [ 6 ]
Características

El temporizador tiene tres contadores, numerados del 0 al 2. [ 7 ] Cada canal puede programarse para operar en uno de seis modos. Una vez programados, los canales operan de forma independiente. [ 1 ]
Cada contador tiene dos pines de entrada: "CLK" ( entrada de reloj ) y "GATE", y un pin, "OUT", para la salida de datos. Los tres contadores son contadores descendentes de 16 bits independientes entre sí y pueden ser leídos fácilmente por la CPU . [ 8 ]
- El búfer del bus de datos contiene la lógica para almacenar en búfer el bus de datos entre el microprocesador y los registros internos. Tiene 8 pines de entrada, generalmente etiquetados como D7..D0, donde D7 es el bit más significativo (MSB) .
- La lógica de lectura/escritura tiene 5 pines, que se enumeran a continuación. La " X " indica que X es una señal activa en bajo.
- RD : señal de lectura
- WR : señal de escritura
- CS : señal de selección de chip
- A0, A1: líneas de dirección
El modo de funcionamiento del PIT se modifica ajustando las señales de hardware mencionadas anteriormente. Por ejemplo, para escribir en el registro de palabra de control, es necesario configurar CS = 0, RD = 1, WR = 0 y A1 = A0 = 1.
- El registro de palabra de control contiene la información programada que el microprocesador enviará al dispositivo. Define el funcionamiento lógico de cada canal del PIT. Cada acceso a estos puertos tarda aproximadamente 1 μs.
Para inicializar los contadores, el microprocesador debe escribir una palabra de control (CW) en este registro. Esto se puede lograr configurando los valores adecuados para los pines del bloque de lógica de lectura/escritura y luego enviando la palabra de control al bloque de búfer de datos/bus.
El registro de palabra de control contiene 8 bits, etiquetados como D7..D0 (D7 es el bit más significativo ). La decodificación es algo compleja. La mayoría de los valores establecen los parámetros para uno de los tres contadores:
- Los dos bits más significativos (si no son 11) seleccionan el registro del contador al que se aplica el comando.
- Los dos bits siguientes (si no son 00) seleccionan el formato que se utilizará para el acceso de lectura/escritura posterior al registro del contador. Normalmente, este formato se configura para que los accesos alternen entre el byte menos significativo y el más significativo. Una diferencia entre el 8253 y el 8254 es que el primero tenía un bit interno que afectaba tanto a las lecturas como a las escrituras; por lo tanto, si el formato se configuraba a 2 bytes, una lectura del byte menos significativo provocaría que la escritura posterior se dirigiera al byte más significativo. El 8254 utilizaba bits separados para lecturas y escrituras.
- Los tres bits siguientes seleccionan el modo de funcionamiento del contador.
- El bit menos significativo determina si el contador funcionará en binario o en BCD . (El conteo BCD casi nunca se usa y puede que no esté implementado correctamente en emuladores o puentes sur).
Sin embargo, existen otras dos formas:
- Se guarda el contador para un temporizador determinado. La siguiente lectura, en lugar de devolver el valor del contador en el momento de la lectura, devolverá el valor del contador en el momento de la orden de guardado. Una vez completada la lectura, las lecturas posteriores devolverán el valor actual del contador. Cuando se utiliza la orden de guardado, el modo y el estado BCD no se modifican.
- (Solo para 8254) Permite registrar el estado y/o el conteo de varios temporizadores. Esto posibilita el uso simultáneo de múltiples comandos de registro mediante un mapa de bits. Además, se puede leer la configuración actual del canal junto con el conteo.
Al configurar el PIT, el microprocesador primero envía un mensaje de control y luego un mensaje de conteo al PIT. El proceso de conteo comenzará después de que el PIT haya recibido estos mensajes y, en algunos casos, si detecta el flanco ascendente de la señal de entrada GATE. Formato del byte de estado. El bit 7 permite que el software supervise el estado actual del pin OUT. El bit 6 indica cuándo se puede leer el conteo; cuando este bit es 1, el elemento de conteo aún no se ha cargado y el procesador no puede leerlo. Los bits del 5 al 0 son iguales a los últimos bits escritos en el registro de control.
Modos de funcionamiento
Los bits D3, D2 y D1 de la palabra de control establecen el modo de funcionamiento del temporizador. Hay 6 modos en total; para los modos 2 y 3, el bit D3 se ignora, por lo que los modos 6 y 7, que faltan, son alias de los modos 2 y 3.
Todos los modos son sensibles a la entrada GATE, con GATE alto se produce un funcionamiento normal, pero los efectos de GATE bajo dependen del modo:
- Modos 0 y 4: El conteo se suspende mientras GATE está en nivel bajo y se reanuda mientras GATE está en nivel alto.
- Modos 1 y 5: El flanco ascendente de GATE inicia el conteo. GATE puede pasar a nivel bajo sin afectar el conteo, pero otro flanco ascendente reiniciará el conteo desde el principio.
- Modos 2 y 3: Cuando GATE pasa a nivel bajo, OUT pasa a nivel alto inmediatamente (sin esperar un pulso de reloj) y se reinicia el contador (en el siguiente flanco descendente del reloj). Cuando GATE vuelve a nivel alto, el conteo se reinicia desde el principio.
Modo 0 (000): Interrupción en el conteo terminal
El modo 0 se utiliza para generar un retardo de tiempo preciso mediante control por software. En este modo, el contador comenzará a contar desde el valor inicial COUNT cargado, hasta llegar a 0. La frecuencia de conteo es igual a la frecuencia del reloj de entrada.
El pin OUT se pone en bajo después de escribir la palabra de control, y el conteo comienza un ciclo de reloj después de programar COUNT. OUT permanece en bajo hasta que el contador llega a 0, momento en el que OUT se pone en alto hasta que se recarga el contador o se escribe la palabra de control. El contador vuelve a 0xFFFFsu estado inicial y continúa contando, pero el pin OUT no vuelve a cambiar. La señal Gate debe permanecer activa en alto para un conteo normal. Si Gate pasa a bajo, el conteo se suspende y se reanuda cuando vuelve a pasar a alto.
El primer byte del nuevo conteo, al cargarse en el registro de conteo, detiene el conteo anterior.
Modo 1 (001): disparo único programable
En este modo, el 8253 puede utilizarse como multivibrador monoestable . La entrada GATE se utiliza como entrada de disparo.
La señal OUT estará inicialmente en nivel alto. OUT pasará a nivel bajo con el pulso de reloj que sigue a un disparo para iniciar el pulso único, y permanecerá en nivel bajo hasta que el contador llegue a cero. OUT pasará entonces a nivel alto y permanecerá en nivel alto hasta el pulso CLK después del siguiente disparo.
Tras escribir la palabra de control y el conteo inicial, el contador se activa. Un disparo provoca la carga del contador y la puesta en nivel bajo de OUT en el siguiente pulso CLK, iniciando así el pulso único. Un conteo inicial de N dará como resultado un pulso único con una duración de N ciclos CLK.
El pulso único es reactivable, por lo que OUT permanecerá en nivel bajo durante N pulsos CLK después de cualquier activación. El pulso único puede repetirse sin reescribir el mismo conteo en el contador. GATE no afecta a OUT. Si se escribe un nuevo conteo en el contador durante un pulso único, el pulso único actual no se ve afectado a menos que el contador se reactive. En ese caso, el contador se carga con el nuevo conteo y el pulso único continúa hasta que el nuevo conteo expire.
Modo 2 (X10): generador de frecuencia
En este modo, el dispositivo actúa como un contador divisor por n, que se utiliza habitualmente para generar una interrupción de reloj en tiempo real .
Al igual que en otros modos, el proceso de conteo comenzará en el siguiente ciclo de reloj tras el envío de COUNT. La señal OUT permanecerá en estado alto hasta que el contador alcance 1, y luego pasará a estado bajo durante un pulso de reloj. En el siguiente ciclo, el contador se reinicia, OUT vuelve a estar en estado alto y todo el proceso se repite.
El tiempo entre los pulsos altos depende del conteo preestablecido en el registro del contador y se calcula utilizando la siguiente fórmula:
Valor que se cargará en el contador =
Tenga en cuenta que los valores en el registro COUNT varían desdea 1; el registro nunca llega a cero.
Modo 3 (X11): generador de onda cuadrada
Este modo es similar al modo 2. Sin embargo, la duración de los pulsos de reloj alto y bajo de la salida será diferente a la del modo 2.
Suponeres el número cargado en el contador (el mensaje COUNT), la salida será alta pararecuentos y bajos pararecuentos. Por lo tanto, el período serácuenta, y siEs extraño, el medio ciclo adicional se pasa con OUT alto.
Modo 4 (100): Estroboscopio activado por software
Una vez cargadas la palabra de control y el contador, la salida permanecerá en estado alto hasta que el contador llegue a cero. A continuación, el contador generará un pulso bajo durante un ciclo de reloj (un pulso estroboscópico); después de esto, la salida volverá a estar en estado alto.
GATE en estado bajo suspende el conteo, que se reanuda cuando GATE vuelve a estar en estado alto.
Modo 5 (101): Estroboscopio activado por hardware
Este modo es similar al modo 4. Sin embargo, el proceso de conteo se activa mediante la entrada GATE.
Tras recibir la palabra de control y el contador, la salida se pondrá en nivel alto. Cuando el dispositivo detecte un flanco ascendente en la entrada GATE, comenzará a contar. Al llegar a cero, la salida pasará a nivel bajo durante un ciclo de reloj; después, volverá a nivel alto para repetir el ciclo con el siguiente flanco ascendente de GATE.
Programación para PC IBM
El 8253 se utilizó en los compatibles con IBM PC desde su introducción en 1981. [ 9 ] En la actualidad, este PIT no se incluye como un chip independiente en un PC x86. En cambio, su funcionalidad se integra en el puente sur del chipset de la placa base . En un chipset moderno, este cambio puede manifestarse en un acceso notablemente más rápido a los registros del PIT en el espacio de direcciones de E/S x86 .
Todos los PC compatibles operan el PIT a una frecuencia de reloj de 105/88 = 1,193 18 MHz, 1/3 de la frecuencia de ráfaga de color NTSC que se obtiene dividiendo el reloj del sistema (14,31818 MHz) entre 12. Esto es un vestigio de los primeros PC CGA : derivaban todas las frecuencias necesarias de un único cristal de cuarzo , y para que la salida de TV fuera posible, este oscilador tenía que funcionar a un múltiplo de la frecuencia de la subportadora de color NTSC. Esta frecuencia, dividida por 2 16 (el divisor más grande que el 8253 puede generar), produce la interrupción del temporizador de ≈18,2 Hz utilizada en MS-DOS y sistemas operativos relacionados.
En los PC IBM originales, el contador 0 se utiliza para generar una interrupción de temporización. El contador 1 se utiliza para activar la actualización de la memoria DRAM . El contador 2 se utiliza para generar tonos a través del altavoz del PC .
Las placas base más recientes incluyen contadores adicionales a través de la Interfaz Avanzada de Configuración y Alimentación (ACPI), un contador en el Controlador de Interrupciones Programable Avanzado Local y un Temporizador de Eventos de Alta Precisión . La propia CPU también proporciona la función de Contador de Marca de Tiempo .
En los PC, la dirección del temporizador 0 (chip) está en el puerto 40h..43h y la del segundo temporizador 1 (chip) está en el puerto 50h..53h.
En los ordenadores x86, muchas BIOS de tarjetas gráficas y del sistema reprograman el segundo contador para su propio uso. Esta reprogramación suele producirse al cambiar el modo de vídeo, cuando se ejecuta la BIOS de vídeo , y al cambiar el modo de gestión del sistema o el estado de ahorro de energía, cuando se ejecuta la BIOS del sistema. Esto impide cualquier uso alternativo importante del segundo contador del temporizador en muchos sistemas x86.
Como se indicó anteriormente, el Canal 0 se implementa como un contador. Normalmente, el valor inicial del contador se establece enviando bytes a los registros del Puerto de E/S de Control y luego de Datos (el valor 36h se envía al puerto 43h, luego el byte bajo al puerto 40h, y nuevamente al puerto 40h para el byte alto). El contador cuenta hacia atrás hasta cero, luego envía una interrupción de hardware (IRQ 0, INT 8) a la CPU . El contador luego se restablece a su valor inicial y comienza a contar hacia atrás nuevamente. La frecuencia de interrupción más rápida posible es un poco más de medio megahercio. La frecuencia más lenta posible, que también es la que normalmente usan las computadoras que ejecutan MS-DOS o sistemas operativos compatibles, es de aproximadamente 18,2 Hz. En estos sistemas operativos en modo real , la BIOS acumula el número de llamadas INT 8 que recibe en la dirección de modo real 0040:006c, que puede ser leída por un programa.
Mientras un temporizador está en cuenta regresiva, su valor también se puede leer directamente leyendo su puerto de E/S dos veces : primero el byte bajo y luego el byte alto. Sin embargo, en aplicaciones de contadores de funcionamiento libre, como en las PC x86, es necesario escribir primero un comando de enclavamiento para el canal deseado en el registro de control, de modo que ambos bytes leídos pertenezcan al mismo valor.
Según un documento de Microsoft de 2002, "debido a que las lecturas y escrituras en este hardware [8254] requieren comunicación a través de un puerto de E/S, programarlo lleva varios ciclos, lo cual es prohibitivamente costoso para el sistema operativo. Por esta razón, la funcionalidad aperiódica no se utiliza en la práctica". [ 10 ]
Véase también
Referencias
- 1 2 3 "Temporizador de intervalo programable CHMOS Intel 82C54" (PDF) (hoja de datos). Archivado del original (PDF) el 3 de junio de 2015. Recuperado el 26 de noviembre de 2012 .
- ↑ Deepali A. Godse; Atul P. Godse (2007). Microprocesadores avanzados . Publicaciones técnicas. pág. 74. ISBN 978-81-89411-33-6.
- ↑ "Intel" (PDF) . pdf.datasheetcatalog.com .
- ↑ Intel Corporation, "Componentes destacados: Inteligencia militar: temporizadores, EPROM, encapsulados de chips sin plomo", Solutions, marzo/abril de 1983, página 12.
- ↑ Intel Corporation, "Noticia breve: Intel licencia a Oki para la versión CMOS de varios productos", Solutions, julio/agosto de 1984, página 1.
- ↑ Ashborn, Jim; "Empaquetado avanzado: Un poco rinde mucho", Intel Corporation, Solutions, enero/febrero de 1986, página 2
- ↑ "8254/82C54: Introducción al temporizador de intervalo programable" . Intel Corporation. Archivado del original el 22 de noviembre de 2016. Consultado el 21 de agosto de 2011 .
- ↑ "Hoja de datos del MSM 82c53" (PDF) . Archivado del original (PDF) el 6 de diciembre de 2014. Consultado el 26 de noviembre de 2012 .
- ↑ "Directrices para proporcionar compatibilidad con temporizadores multimedia" . Microsoft . 20 de septiembre de 2002. Consultado el 13 de octubre de 2010 .
- ↑ Directrices para proporcionar soporte para temporizadores multimedia
Lecturas adicionales
- Gilluwe, Frank Van (1997). The Undocumented PC: A Programmer's Guide to I/O, CPUs, and Fixed Memory Areas (segunda edición ilustrada). Addison-Wesley. ISBN 978-0-201-47950-8.
- Intel Corporation, "Temporizador de intervalo programable 8253", Manual del usuario del sistema de microcomputadoras Intel 8080, septiembre de 1975, página 5-169 de bitsaver.org en formato PDF
Enlaces externos
- Hoja de datos 82C54
- Descripción general del chip Intel 8253 PIT. Archivado el 29 de septiembre de 2011 en Wayback Machine.
- Hojas de datos completas del Intel 8253. Archivadas el 20 de febrero de 2012 en Wayback Machine.
- Preguntas frecuentes sobre el temporizador de intervalos programable 8254/82C54
- Temporizador de intervalo programable – Wiki de OSDev
- chipsets de Intel
- IBM PC compatibles
- circuitos integrados de entrada/salida