6

Click here to load reader

Mp Guia8

  • Upload
    tdmt

  • View
    338

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Mp Guia8

Microprocesadores Ciclo 0109

Guía #8

DECODIFICACION DE LA MEMORIA

El circuito que se vio en la guía pasada separó los canales de datos, direcciones y control,

del microprocesador, además de amplificar su capacidad de corriente para que puedan ser

conectados los diferentes dispositivos de entrada/salida o de memoria que se necesiten.

Los tipos principales de memoria presentes en un sistema basado en microprocesador son

Memorias RAM (Memoria de acceso aleatorio) y ROM (Memoria de solo lectura).

Terminales de los dispositivos de memoria:

Conexiones de direcciones: Sirven para seleccionar la localidad de memoria que se quiere

leer o escribir, el número de terminales depende del número de localidades de la memoria,

ejemplos:

Una memoria de 1K, tiene 1024 bytes pasamos este dato a hexadecimal (1024 = 400h), le

restamos 1 (400h-1h = 3FFh = 001111111111b ) , el numero de unos nos indica cuantas

terminales o líneas de dirección tiene en este caso 10 que irían de A0 a A9.

Memoria de 2K, 2*1024 = 2048 bytes, 2048 = 800h, 800h-1 = 7FFh = 011111111111b =

serian 11 líneas de dirección de A0 a A10

Memoria de 1M, 1024*1024 = 1048576 bytes, 1048576 = 100000h, 100000h-1 = FFFFFh

= 11111111111111111111b = 20 líneas de dirección A0 a A19

Conexiones para datos: Según el número de conexiones para datos se conoce de cuantos

bits es cada localidad de memoria, es decir si un dispositivo de memoria tiene 8

conexiones de datos indica que almacena 8 bits de datos en cada localidad de memoria.

El tamaño de las memorias se representa según el fabricante, algunos lo expresan como el

número de localidades de la memoria multiplicada por los bits de cada localidad, por

ejemplo:

1K x 8 = memoria de 1K localidades de 8 bits.

64K x 4 = memoria de 64K localidades de 4 bits

Y otros de acuerdo a su capacidad total:

8K (equivalente a 1K x 8)

256K (equivalente a 64K x 4)

Conexiones para la selección: Una o mas entradas para habilitar la memoria, generalmente

son negadas (Chip Select CS , Select S , Chip Enable CE , Output Enable OE )

Page 2: Mp Guia8

Microprocesadores Ciclo 0109

Guía #8

Conexiones de control: Conexiones que sirven para indicar si una memoria se va a leer o

escribir (WR , RD )

Figura 1. Conexiones de los dispositivos de memoria.

Cuando se conecta un dispositivo de memoria o E/S a un microprocesador es necesario

decodificar el bus de direcciones para poder asignar al dispositivo una localidad de

memoria o un grupo de localidades especifico.

Ejemplo: Diseñe los circuitos necesarios para asignar

las siguientes direcciones a los dispositivos de

memoria y E/S que se muestran en el siguiente mapa

de memoria.

El diagrama de bloques general de la conexión de los dispositivos al microprocesador es

el que se muestra en la figura 2, ahora hay que diseñar esos circuitos decodificadores para

RAM, puerto E/S y ROM.

Figura 2.

Page 3: Mp Guia8

Microprocesadores Ciclo 0109

Guía #8

Antes que nada tenemos que crear un circuito para separar el terminal M/ IO del

microprocesador para poder seleccionar si se leerá o escribirá un dispositivo de memoria o

de E/S

Cuando se quiere leer un dispositivo de Entrada/Salida el Pin RD y M/ IO están

en cero, entonces bastaría una OR entre ambos para tener un terminal que solo se

active (en bajo) cuando se quiere leer dispositivos de E/S.

Para leer dispositivos de memoria RD esta en cero y M/ IO en uno, por lo que

habría que negar a M/ IO antes de la OR para tener un terminal que solo se active

(en bajo) cuando se quiere leer dispositivos de memoria.

Lo mismo se aplicaría para cuando se quiere escribir, solo que esta vez seria con

los pines WR y M/ IO

El circuito es el siguiente:

Figura 3. Circuito de separación de M/ IO .

Ya teniendo este circuito podemos empezar a crear los decodificadores de los dispositivos

en el mapa de memoria, iniciaremos con la RAM que se quiere en las direcciones FFFFFh

a FE000h, descomponemos las direcciones en bits de la siguiente forma:

Como puede ver de A19 a A13 deben estar siempre a uno, las demás estarán cambiando

por lo que se debe crear un circuito que evalué que desde A19 hasta A13 estén en uno, lo

que indicaría que son direcciones de la RAM, ese circuito al tener las entradas todas en

uno debería de sacar un cero que active el selector de la memoria RAM.

Page 4: Mp Guia8

Microprocesadores Ciclo 0109

Guía #8

La compuerta que tiene la tabla de verdad en el que si todas sus entradas son uno saca un

cero es la NAND.

Entonces bastaría un arreglo de NAND para decodificar las direcciones de la memoria

RAM así:

Puerto de E/S en las direcciones 00477H (Salida) y 00476H (Entrada)

Los bits de A19 a A16 no se utilizan ya que las direcciones de dispositivos de E/S son de

16 bits.

Como ve en los arreglos algunos bits de dirección deberán estar a 1 para ello usamos un

arreglo de NAND y para los que deban estar a 0 un arreglo de OR, A0 será la única que

estará cambiando.

ROM en las direcciones 003FFh a 00000h

Page 5: Mp Guia8

Microprocesadores Ciclo 0109

Guía #8

Ya teniendo los circuitos decodificadores de direcciones hay que realizar las conexiones a

los dispositivos de memoria, memorias RAM hay disponibles 4K x 8 y ROM 1K x8

Según el rango de direcciones de la memoria RAM:

FFFH

HFE

FFFFFH

01

000

Pasando a 01FFFH a decimal = 8191, sumándole 1 = 8192 , dividiéndolo

entre 1024 para saber cuantos Kbytes de memoria se necesitaran: 8192/1024 = 8.

Necesitaríamos dos memorias de 4Kx8 para poder alcanzar el rango de direcciones

necesarios de la memoria RAM, así que una de ellas estará manejando las direcciones

pares y la otra las impares, por lo que vamos a necesitar un circuito que separe las

direcciones válidas de la RAM en pares e impares auxiliándose de el pin A0 que será cero

en las direcciones pares y uno en las impares, la conexión final a la memoria RAM es:

El puerto de E/S es de 8 bits, la dirección 0477h es salida y la dirección 0476h entrada,

como los datos irán en ambas direcciones debemos colocar algo que nos proteja de cortos

y a la vez amplifique la capacidad de corriente del microprocesador para ellos utilizaremos

los buffer que habíamos visto en la guía pasada 74244, además de hacer un arreglo para

que me distinga entre la dirección par 0476h y la impar 0477h, el circuito queda de la

siguiente forma:

Page 6: Mp Guia8

Microprocesadores Ciclo 0109

Guía #8

Finalmente para la memoria ROM se tienen disponibles memoria de 1K x 8

Según el rango de direcciones de la memoria ROM :

FFH

H

FFH

003

00000

003 −

Pasando a 003FFH a decimal = 1023, sumándole 1 = 1024 , dividiéndolo

entre 1024 para saber cuantos Kbytes de memoria se necesitaran: 1024/1024 = 1.

Por lo que bastaría una memoria de 1K x 8.

El circuito queda de la siguiente forma:

Hay que notar que estos circuitos son para leer nada mas 8 bits, por lo que hasta el

momento no hemos trabajado con la parte alta del bus de datos del microprocesador D8 a

D15.