Intel 8259A: ¿por qué usar A0 cuando no hay nada que tratar?

0

Estoy en el proceso de escribir un controlador para el Intel 8259A PIC y usar el hoja de datos correspondiente para referencia.

La hoja de datos contiene una imagen del controlador y su conexión al bus del sistema:

Entiendolospinesylaconexión,peronopuedoenvolvermicabezaalrededordeuno:lalíneaA0.

Tienedosdescripcionesenlahojadedatos.Elprimeroeselsiguiente:

  

A0

    

EstaseñaldeentradaseusajuntoconlasseñalesWRyRDpara  escribircomandosenvariosregistrosdecomandos,asícomoleerel  Variosregistrosdeestadodelchip.Estalíneapuedeseratadadirectamente.  aunadelaslíneasdedirección.

EchandounvistazoalosICW(palabrasdecomandodeinicialización),puedoentendercómoseutilizaelA0para"escribir comandos [...] [...]". Las líneas de dirección se designan con una "A" inicial y un número final, que es igual a su posición en la matriz de líneas de dirección, comenzando en 0. Por lo tanto, A 0 significa la primera línea de dirección de la dirección autobús.

Pero las líneas de dirección se utilizan para direccionar la memoria primaria, es decir, la RAM. Sin embargo, el Intel 8259A no accede directamente a la RAM.
Entonces, ¿por qué ese bit se llama A 0 y cómo se puede vincular [...] directamente a una de las líneas de dirección [...] "?

Y por qué 0, específicamente, si la segunda descripción dice esto:

  

LÍNEA DE DIRECCIÓN A0: Este pin actúa junto con los pines CS, WR y RD. Es utilizado por el 8259A para descifrar varias palabras de comando   La CPU escribe y el estado que la CPU desea leer. Es típicamente   conectado a la línea de dirección de la CPU A0 (A1 para 8086, 8088) .

(2 nd énfasis añadido.)

Entonces, ¿es A 1 para x86 y A 0 para esos otros procesadores compatibles con 8259A solamente? ¿Por qué A 1 para x86 entonces? Eso significa potencias de 2, que no veo uso en este contexto.

¿Cuál es el propósito de ese bit 0 y su nombre aquí?

    
pregunta cadaniluk

1 respuesta

2

La línea A0 no se usa como una línea de dirección de puerto real (para abordar la selección del chip de todos modos), ahí radica la confusión. Se utiliza para diferenciar ciertos comandos dentro del 8259.

En la página 4 de la hoja de datos que dice,

A0 Esta señal de entrada se usa junto con las señales WR y RD para escribir comandos en los diversos registros de comandos, así como para leer los diferentes registros de estado del chip. Esta línea puede ser atada directamente a Una de las líneas de dirección.

En la página 13 de la hoja de datos, muestra que A0 se utiliza para direccionar uno de los registros internos (OCM1) en lugar de los registros OCW2 / OCW3.

La E / S en la computadora x86 se realiza utilizando un espacio de direcciones especial reservado para los puertos de E / S. Por lo general, a varios periféricos no se les dio una sola dirección, sino un rango de direcciones (un bloque) Al primer PIC (controlador de interrupción periférica, es decir, 8259) se le asignaron las direcciones 0x20 a 03F, y al segundo se le asignó 0xA0-0xBF.

Los bits de alto orden del bloque, es decir, de A5 a A7 en este caso, se introducirían en un decodificador de direcciones y generarían la señal de selección de chip. Esto dejó los cinco bits de orden inferior para que los periféricos los usaran a su gusto. En este caso, el bit A0 fue utilizado por el 8259A. En el x86, el bit "real" A0 se usó para distinguir entre varios registros (por ejemplo, OCW2 vs OCW3, cuando A0 = 0). Así que la línea A0 tenía que estar conectada a otra cosa, estaba conectada a A1 en su lugar. Dado que los bits de la dirección decodificada para el primer 8259 fueron 0x20 y 0x21, la configuración del bit A0 para el 8259 se haría usando la dirección de puerto 0x22 o 0x23 (conjunto de bits A1).

    
respondido por el tcrosley

Lea otras preguntas en las etiquetas