Sunteți pe pagina 1din 12

Tutora 2.

Banco de memoria de 8 y 16 bits


(8086)

RESUMEN
Cuando el procesador opera en modo mnimo, este genera las senales de control para la
memoria y los dispositivos de E/S. [1, pag. 292]. Para utilizar el 8088/8086 en modo mnimo,
se deben de utilizar diversos dispositivos que cumplen con funciones primordiales para el
funcionamiento adecuado del procesador y el correcto manejo de memoria y perifericos. En
primer lugar, se utiliza un generador de reloj, el 8284A que ademas de cumplir con esta
funcion, proporciona sincronizacion de RESET, sincronizacion READY y una senal de reloj
de periferico al nivel de TTL [1, pag. 293].

Otra necesidad al emplear este microprocesador, es el de demultiplexar y buferizar las


senales de los buses de direccion y datos. El 8088/8086 permite mapear hasta 1MB de memo-
ria, por lo que emplea un bus de direcciones de 20 bits y un bus de datos de 8 bits para el
8088 y de 16 bits para el 8086.

En el caso del 8088, los 8 bits menos significativos del bus de direcciones se encuentran
multiplexados con el bus de datos, estos pines se identifican como AD7 AD0 . Por lo tan-
to, se utilizan dispositivos de enclavamiento (latches) para demultiplexar estas senales.
Lo mismo ocurre con A19 A16 , que se encuentran multiplexadas con las senales de estado
S6 S3 . Las senales A15 A8 son independientes, sin embargo, ya que se el bus tiene mas
de 10 cargas unitarias, se deben de pasar por un bufer [1, pag. 298]. Los latches cumplen
esta funcion ademas de retener datos, por lo cual no es necesario usar un bufer si se utiliza
un latch. Para el 8086, la diferencia radica en que al tener un bus de datos de 16 bits, este
se multiplexa con los 16 bits del bus de direcciones que comprende desde AD15 AD0 .

El 8086 organiza la memoria logica en dos bancos de memoria: el banco bajo para las
direcciones impares, y el banco alto para las direcciones pares. Esto debido a que el 8086
tiene un bus de datos de 16 bits, necesita poder realizar transferencias de memoria tanto en
8 bits como en 16 bits en un solo ciclo de lectura o escritura.

Para lograr esto, se incluye una senal BHE (Bus High Enable) en el procesador, que en
conjunto con A0 del bus de direcciones permiten seleccionar el banco (o ambos bancos) de
memoria adecuados.

1
Tutora 2. Banco de memoria de 8 y 16 bits (8086)

Figura 1: Organizacion de la memoria logica en 8086

Existen otros dispositivos que se utilizan como parte del sistema mnimo. Por ejemplo,
cuando se van a utilizar tanto elementos de memoria como de Entrada/Salida para comuni-
carse con el usuario u otros sistemas, es importante proveer de senales de control de escritura
y lectura para cada tipo de dispositivo. Por esta razon se suele implementar un decodifi-
cador de control.

Cuando se habla de banco de memoria o interfaz de memoria, se debe de identificar dos


tipos de memoria principales: la memoria de solo lectura (ROM) y la memoria de ac-
ceso aleatorio (RAM). La memoria ROM se utiliza para contener datos permanentes del
sistema y software. Por otro lado, la memoria RAM se accede para almacenar datos en tiem-
po de ejecucion y software de aplicaciones.

Algunas veces los elementos fsicos de memoria disponibles no son suficientes de modo
que se pueda implementar toda la memoria requerida en un solo dispositivo. Por esta razon,
se utiliza un decodificador de memoria que se encarga de asignar a cada dispositivo de
memoria fsica una parte de la memoria logica.

2
Tutora 2. Banco de memoria de 8 y 16 bits (8086)

PRACTICA DE DISENO DE BANCO DE MEMORIA CON


8088 y 8086

Para fin didactico, en este caso se disenara el banco de memoria de una microcomputadora
tanto con un procesador 8088 (8 bits de bus de datos) y un 8086 (16 bits de bus de datos) para
observar las diferencias entre el diseno de ambos bancos de memoria. Las especificaciones de
diseno son la siguientes:

Frecuencia de operacion del sistema de 8 Mhz.

Implementar logica de demultiplexacion de buses y enclavamiento de senales

Usar un generador de reloj 8284A para el microprocesador.

Implementar memoria de codigo de programa en las direcciones E0000H F F F F F H


del mapa de memoria total.

Implementar un solo segmento de 64 KB de memoria de datos. Este unico segmento


debe contener los vectores de interrupcion del microprocesador para cumplir con las
especificaciones de Intel.

Para desarrollar y demostrar la solucion de esta etapa debe realizar lo siguiente:

1. Realizar el mapa de memoria fsico y logico.

2. Realizar el diseno del decodificador para la seleccion de memoria y el decodificador


de senales de control de lectura/escritura. Para esto debe de mostrar un diagrama
de bloques con las correspondientes senales de entrada y salida de cada uno de los
decodificadores, y ademas, debe de justificar los diagramas mediante su respectiva tabla
de verdad.

3. Realizar el circuito esquematico con la conexion fsica del CPU con: el generador de
reloj, demultiplexacion de los buses de datos y direcciones, enclavamiento de senales de
control, dispositivos de memoria y decodificadores de seleccion de memoria y de senales
de control de escritura y lectura.

3
Tutora 2. Banco de memoria de 8 y 16 bits (8086)

SOLUCION

1. 1. Mapeo de memoria
Para realizar el mapeo de la memoria requerida, hay que cumplir con una restriccion im-
portante predispuesta por el fabricante del procesador. En la hoja de datos del 8088 de Intel,
se indica que existen localidades de memoria reservadas por el procesador tanto en memoria
ROM como en memoria RAM [2, pag. 7]. Estas localidades comprenden en memoria ROM
las direcciones FFFF0H hasta FFFFFH para vector de reset, y en RAM las localidades desde
00000H hasta 003FFH para los vectores de interrupciones. Estos 256KB para interrupciones
constan de vectores de interrupcion con 4 bytes cada uno, que contienen 2 bytes para la di-
reccion del segmento y 2 bytes para el offset. El usuario debe como parte de la programacion
asignar estos valores para el correcto funcionamiento de las interrupciones que vaya a utiilizar.

El mapeo de memoria logica representa la ubicacion de los segmentos de memoria de


codigo (ROM) y de datos (RAM) en el espacio de 1MB que puede direccionar el microproce-
sador. La figura 2 muestra el mapa de memoria logica a implementar en el caso de estudio. El
mismo consta del espacio de memoria ROM requerido que va desde E0000H hasta FFFFFH,
es decir, 128KB. La memoria RAM debe ser de 64KB en un solo bloque, y para cumplir con
la restriccion de Intel, se coloca desde la direccion 00000H.

4
Tutora 2. Banco de memoria de 8 y 16 bits (8086)

Figura 2: Mapa de memoria logica

Para realizar un mapeo que comprenda los dispositivos reales de memoria para implemen-
tar el diseno, se debe tomar en cuenta la cantidad de memoria que estos chips pueden manejar:

Cuadro 1: Dispositivos de memoria

Dispositivo Tipo de memoria Cantidad de memoria


27512 EPROM 64KB x 8
62256 SRAM 32KB x 8

Considerando la capacidad de estos dispositivos, se puede realizar un mapa de memoria


mas completo conforme a la implementacion del diseno. Este es el mapa fsico y se debe de
concebir diferente para el 8088 y el 8086.

En el caso del 8088, se necesitan dos chips de cada tipo de memoria para lograr alcanzar
la memoria deseada. Como la arquitectura es de 8 bits y las memorias tambien lo son, esto
permite que su implementacion sea directa. La figura 3 muestra como para implementar cada
segmento de memoria con 8088.

5
Tutora 2. Banco de memoria de 8 y 16 bits (8086)

Figura 3: Mapa de memoria fsica para 8088

Como en el 8086 la memoria se organiza en dos bancos de memoria, es necesario que cada
segmento de memoria se encuentre dividido en dos segmentos de la mitad de la memoria.
En este caso se pueden utilizar la misma cantidad de dispositivos de memoria RAM y ROM,
pero la conexion difiere tanto para el bus de direcciones:

6
Tutora 2. Banco de memoria de 8 y 16 bits (8086)

Figura 4: Mapa de memoria fsica para 8086

Para realizar la tabla de verdad se debe de tomar en cuenta las lneas del bus de direc-
ciones que ocupa cada memoria. As entonces, la parte del bus de direcciones mas alta que no
soporten las memorias, es la que sera clave para su correcta seleccion por medio del decodi-
ficador de memoria. El 62256 se direcciona con 15 bits, mientras que el 27512 se direcciona
con 16 bits.

En el caso del 8088 la tabla de verdad queda como la figura 5, se observa que se separa
cada memoria la cual guarda un espacio de todo el bloque de memoria. En 8086 la tabla
vara ligeramente, puesto que en este caso cada bloque de memoria esta conformado por dos
memorias cada una con las direcciones pares e impares, tal como se observa en la figura 6.

7
Tutora 2. Banco de memoria de 8 y 16 bits (8086)

Figura 5: Tabla de verdad de la memoria logica en 8 bits

Figura 6: Tabla de verdad de la memoria logica en 16 bits

2. 2. Diseno de decodificadores de memoria y de senales


de control
2.1. Decodificador de memoria
El decodificador utiliza las direcciones de memoria mas altas del procesador que los chips
de memoria no pueden manejar, de manera que se logra la convergencia entre el mapeo de
memoria logica y fsica. Ademas este decodificador esta controlado por la senal IO/M (en

8
Tutora 2. Banco de memoria de 8 y 16 bits (8086)

8088) o M /IO (en 8086), la cual es utilizada por el procesador para definir cuando se debe
acceder a la memoria o a un dispositivo de entrada/salida. As, se logra decodificar las senales
de seleccion de cada chip (chip select). La figura 7 muestra el diagrama de bloques de senales
de este decodificador en 8088.

Importante!: Para saber cuales lneas de direcciones son necesarias para el decodificador
de memoria, identifique cual es el dispositivo de memoria con menor capacidad. Las lneas
del bus de direcciones del procesador que sobren para controlar este dispositivo seran las
que se usen para el decodificador. En el caso de 8088, como el 62256 utiliza hasta A14 , el
decodificador ocupara las lneas A19 A15 .

Figura 7: Diagrama de bloque del decodificador de memoria en 8088

La tabla de verdad que justifica este decodificador se muestra a continuacion:

Figura 8: Tabla de verdad del decodificador de memoria en 8088

En el caso del 8086, para poder utilizar ambos bancos de memoria, bajo y alto, se utiliza
la senal BHE en conjunto con A0 para realizar la seleccion de los bancos. Estas senales por
lo tanto se incluyen en el decodificador de memoria, tal como se observa en la figura 9. Su
tabla de la verdad se muestra en la figura 10.

9
Tutora 2. Banco de memoria de 8 y 16 bits (8086)

Figura 9: Diagrama de bloque del decodificador de memoria en 8086

Figura 10: Tabla de verdad del decodificador de memoria en 8086

2.2. Decodificador de senales de control escritura/lectura


Este decodificador se utiliza para separar las senales que se utilizan en la escritura o
lectura ya sea de un dispositivo de memoria o, por otro lado, de un dispositivo de entra-
da/salida. Como entradas se utilizan las senales del microprocesador RD y W R para cada
tipo de transferencia, IO/M para indicar que clase de dispositivo el procesador debe acceder,
y ademas se conecta la senal HLDA, utilizada cuando existe un dispositivo periferico (como
un DMA) que provee externamente las senales de control para el control de los buses de datos
y direcciones, por lo cual inhabilitara las senales de control del procesador.

La tabla de verdad de este decodificador se muestra a continuacion:

Recuerde que este decodificador nunca se ve afectado por la cantidad o los tipos de memo-
rias que se vayan a implementar. Observe que cada una de las senales solo se activa en un

10
Tutora 2. Banco de memoria de 8 y 16 bits (8086)

Figura 11: Diagrama de bloque del dcodificador de control de senales de escritura y lectura

Figura 12: Tabla de verdad del decodificador de control

estado especfico: cuando el microprocesador enva solo una peticion de lectura o de escrit-
ura, pero no ambas ni ninguna. Ademas cuando HLDA esta activo se deben de liberar las
senales, por lo cual se conectan a un 244 (buffer) despues del decodificador y para asi poder
configurarlas en alta impedancia cuando se requiere.

3. Diagrama esquematico
El diagrama esquematico debe de llevar la conexion fsica del CPU con el generador de
reloj (senales de CLK, READY y RESET), demultiplexacion de los buses de datos y direc-
ciones (con latches), enclavamiento de senales de control (buffer), todas las memorias SRAM
y EPROM, y tanto el decodificador de seleccion de memoria as como el de senales de control
de escritura y lectura.

Consejo: Antes de realizar el diagrama esquematico:

11
Tutora 2. Banco de memoria de 8 y 16 bits (8086)

Haga un planeamiento de donde colocar todos los dispositivos.

Extienda los buses de datos y direcciones lo necesario para conectar las memorias.

Etiquete todas las senales y los bloques, especialmente cuando se necesita utilizar una
senal de un extremo a otro del esquematico.

Referencias
[1] Brey, B.: Microprocesadores Intel, 7ma edicion. Pearson Educacion de Mexico, 2006.

[2] Intel: 8088 8-BIT HMOS MICROPROCESSOR, Data sheet, August 1990.

[3] Carvajal, J.: Interfaz de memoria con 8086/8088, ITCR, Curso Estructura de Micro-
procesadores, 2009.

12

S-ar putea să vă placă și