¿Cómo sabe el Intel 8086/88 cuándo hacer valer la señal IO / M?

2

Considere un procesador Intel 8088 con una implementación estándar, paralela de RAM y ROM que también admita el acceso del bus de datos / direcciones a varios periféricos externos, como convertidores de analógico a digital (ADC), UART, y más.

Tengo problemas para diseñar un esquema de decodificación de selección de chips que confío en que funcione. Aunque podría usar puertas lógicas en todas las 20 líneas de dirección, el PCB resultante tiene significativamente más trazas e IC, junto con un mayor potencial de mi diseño como incorrecto. Me gustaría utilizar el pin IO / M para facilitar el diseño y la depuración de mi diseño.

La hoja de datos 8086/88 describe la función básica del pin IO / M pero no explica el mecanismo subyacente detrás de él. Entiendo que una lógica baja en el pin indica un acceso de memoria y una lógica alta indica acceso de E / S, pero no entiendo de dónde viene el procesador con esta información. El mapa de memoria con el que estoy tratando de trabajar tiene 2 KB de espacio de direcciones reservado para los periféricos. Ambos ADC requieren 8 bytes cada uno para abordar entradas analógicas individuales, y el UART necesita un marcador de posición de 1 byte.

0x00000 - 0x7FFFF : SRAM Chip 0 (512kB)
0x80000 - 0xDFFFF : SRAM Chip 1 (384kB)
------------------------------
0xE0000           : ADC 0  (8 Bytes)
0xE0008           : ADC 1  (8 Bytes)
0xE0010           : UART 0 (1 Byte)
------------------------------
0xE0800 - 0xFFFFF : Flash ROM (126kB)

Dado que los mapas de memoria pueden ser arbitrarios, ¿cómo sabe mágicamente el procesador cuando intenta acceder a la memoria en comparación con los dispositivos de E / S? Por extensión, ¿cómo sabe el Intel 8088 qué hacer con su pin IO / M si pudiera cambiar fácilmente el orden del espacio de direcciones anterior?

    
pregunta WebsterXC

1 respuesta

3

Gracias a mis sospechas basadas en una vida pasada (¿y futura?) en Z80 ASM y en una búsqueda rápida de 8086 io , encontré una práctica sinopsis de 8086 I / O en esta página del Dr. . Jim Plusquellic (¡por las notas de clase gratis!) - enlace , que ahora intenta ... sinopsizar aún más fácilmente.

Como explica su página, el 8086 tiene dos modos disponibles de E / S:

En este último caso, se debe usar un conjunto especial de instrucciones: IN , INS , OUT y OUTS . Esto hace que las señales correspondientes se envíen a los pines M/IO (Memoria o E / S) y R/W (Lectura / Escritura). Esa página indica la diferencia y cómo se pueden conectar:

Como lo explica el Prof., el uso de este modo evita el uso de rangos de memoria normales para E / S, con la advertencia que:

  • aumenta la complejidad del circuito: debe cablear los pines mencionados para eliminar la ambigüedad entre los dos posibles significados de una dirección y dirigir cada uno al destino correcto. Al hacerlo, creas conceptualmente los 'pines virtuales' IORC o IOWC (control de lectura / escritura de E / S) que se muestran en el diagrama.
  • limita las instrucciones que puede usar para la E / S a los 4 mencionados, en lugar de permitirle hacer todo tipo de acrobacias con cargas / tiendas / etc. de memoria normal, como podría hacer en la E / S asignada en memoria (asumiendo que ¡El dispositivo de destino los tolerará!

Entonces, la razón por la que el 8086 y sus amigos saben cuándo hacer valer IO/M es ... porque les dices cuándo, usando una de sus instrucciones de E / S dedicadas.

    
respondido por el underscore_d

Lea otras preguntas en las etiquetas

Comentarios Recientes

¿Mencionó que es un verdadero MII? No cuenta a menos que haya realizado el MII para indicar cuándo debe compilarse correctamente. Ah, sí, y el Intel 8086 tiene un gran tamaño de búfer, no un 8MiB físico por algunas razones. Y ahora las malas noticias. Parece que el núcleo se deshizo de cierta funcionalidad, aunque dudo de eso. No se porque. No cerré todo el NFOI (sin embargo, es posible que no lo necesites en Yosemite debido a las optimizaciones FAT, así que usa NTFS adecuado para tu sistema operativo), pero... Lees verder