MEMORIA
En la practica 4 aprendimos a manejar las memorias RAM
y ROM con el simulador Logisim.
Vimos una breve introducción sobre las memorias RAM y
ROM, sus funciones y características dentro del simulador logisim.
¿Qué es una memoria RAM?
RAM son las siglas de random access memory, un tipo de
memoria de ordenador a la que se puede acceder aleatoriamente; es
decir, se puede acceder a cualquier byte de memoria sin acceder a los
bytes precedentes. La memoria RAM es el tipo de memoria más común
en ordenadores y otros dispositivos como impresoras.
¿Cómo funciona la memoria RAM en logisim?
La memoria RAM funciona en logisim con una serie de
pines que permiten controlarla. Estos pines son:
-A: sobre el borde oeste (entrada de los bits de
dirección de la memoria RAM). Permite especificar a que valor de la
memoria se accede.
-D: sobre el borde este (entrada o salida ,según los
valores de sel y out, de los bits de datos que carguemos en memoria).
-Out
:sobre
el borde sur (entrada, 1 bit) (Lectura de datos L ó R)
Especifica si la RAM
debería proporcionar a la salida el valor de la dirección
seleccionada (A). La opción de salida está seleccionada si out vale
1 o indefinido; si out vale 0, entonces D se comporta como una
entrada de forma que se almacena su valor en los flancos de subida
del reloj.
-Sel:
en el borde sur (entrada, 1 bit) (Triestado
de salida OE)
Para
un sólo módulo RAM, se puede ignorar esta entrada. Si tienes más
de un módulo
RAM
en paralelo, puedes utilizar esta entrada para conectar o desconectar
cada
módulo
RAM, en función de si su valor es 0 o 1. En otras palabras, cuando
vale 0, no se proporciona ningún valor en el pin de salida, D,
y no se cambiará ningún valor de la
memoria
cuando el reloj pase de 0 a 1.
-Triangulo
sobre el borde sur: (entrada, 1 bit) (Carga
de datos E o W)
Entrada
de reloj : Cuando out
vale
0, y esta entrada pasa de 0 a 1 (y sel
vale
1/indefinido y clr
vale
0), entonces el valor de la posición de memoria de la dirección
seleccionada pasa a ser el mismo que el proporcionado en el pin D.
Sin embargo, mientras el reloj permanezca a 0 o a 1 el valor del pin
D
no
será almacenado en memoria.
-Clr
(clear): sobre el borde sur (entrada, 1 bit).
Cuando
vale 1, y sel
vale
1 o indefinido, se resetea la memoria, es decir, los valores de todas
sus posiciones de memoria pasan a ser 0, sin importar lo que valgan
las demás entradas.
¿Cómo
funciona la memoria ROM en logisim?
La
memoria funciona igual que la RAM con la única diferencia es que
esta solo tiene tres pines (A,D, sel).
Explicación
de los ejercicios hechos en clase:
Ejercicio
1:
Tenemos que diseñar
un circuito con una memoria que guarde los valores que le
introduzcamos mediante un pin de entrada de 8 bits (entrada de datos)
y guardarlo en la dirección que queramos mediante otro pin de
entrada de 16 bits (entrada de direcciones). Para introducir el dato
, primero tenemos que abrir el buffer controlado y el dato pasa al
bus, luego abrimos el pin del triángulo sobre el borde sur para que
cargarlo en memoria y guardarse (ya tenemos el dato en memoria). Para
mostrar el dato en el pin de salida, cerramos primero el pin del
buffer controlado del pin de datos ya que no puede haber dos datos a
la vez en el bus, y abrimos el pin de out para que D sea una salida y
ya se mostrara el dato en el pin de salida.
El ejercicio nos
pide que introduzcamos en la dirección 0023h, el dato 3Ah, que como
está en hexadecimal pues tenemos que pasarlo a binario para que lo
pueda leer la memoria, por lo tanto en el pin de dirección tenemos
que poner 0023h=0000000000100011b y en el pin de datos pondremos 3Ah=
00111010b.
Ejercicio
2:
Como en el ejercicio
nos pide una entrada de datos de 16 bits, lo que hacemos es ampliar
conectando otra memoria a la que teníamos anteriormente. Como la
entrada “D” de cada memoria es de 8 bits tenemos que utilizar
un separador conectado al pin de datos para dividir los 16 bits en
dos buses de 8 bits cada uno.
Hacemos la misma
operación que en el ejercicio 1 para cargar y guardar el dato en
memoria y mostrarlo en el pin de salida.
Ejercicio
3:
En este ejercicio
nos pide una memoria de 128Kx16, para ello tendremos que unir en
paralelo otras dos memorias al ejercicio anterior (64K + 64K = 128K).
Para que el bus sea de 16 bits y la capacidad de 128K, las memorias
deben funcionar dos a dos, y por ello colocamos una puerta not en el
pin “sel” por lo que cuando el pin está en 0 dos de ellas se
activarán y las otras dos no, y cuando el pin está en 1, se
desconectan las anteriores y se activan las otras dos.
El funcionamiento es
igual que las otras dos anteriores.
Ejercicio
4:
En este ejercicio
nos vuelve a pedir otra ampliación de memoria de 256Kx16, por lo que
tendremos que unir dos circuitos como en el ejercicio 3 (128K + 128K
= 256K) para que el bus sea de 16 bits y la capacidad de memoria sea
de 256K. Para elegir la memoria donde guardar los datos colocamos un
decodificador, conectado a los pin de sel, de forma que podamos
elegir mediante un pin conectado al decodificador de 2 bits elegimos
la salida para las memorias que queramos utilizar.
Ejercicio
5:
En este ejercicio el
funcionamiento de las memorias son iguales que el anterior con la
diferencia de que las dos primeras memorias son ROM en vez de RAM.
Hay que observar en el siguiente circuito como en la memoria ROM
únicamente nos encontramos una señal de control: el selector, que
va junto con los selectores de las memorias RAM al decodificador para
poder seleccionar el módulo de memorias ROM.
FAQ´s
Realizado por: José Antonio Blanco Frontado
FAQ´s
1.
¿Cómo se puede comportar la memoria RAM según sea de entrada o
salida?
El pin “D” de la
memoria RAM se puede comportar como entrada o salida de datos, según
el valor de “out” y “triángulo sobre el borde sur”, si “out”
vale 1 entonces el “triángulo sobre el borde sur” será 0 y “D”
será una salida pero si “out” vale 0 entonces el “triángulo
sobre el borde sur” sera 1 y “D” se comportará como una
entrada.
2.
¿Por qué en la memoria (256Kx16) aparece un decodificador?
Este decodificador
aparece para realizar la función de selector entre los distintos
módulos de memoria RAM.
3.
¿Cómo puedo ampliar la capacidad de la memoria?
Esto se hace conectando
dos o más módulos en paralelo y utilizando la entrada denominada
“sel” que activa o desactiva el módulo de memoria. Así, si
queremos una memoria de 256K palabras, podemos usar una combinación
de 2 memorias de 128K palabras en las que la señal de entrada de
direccionamiento sería la misma para las dos. Pero la señal “sel”
de selección desactivaría un módulo cuando el otro estuviese
activado. De esta manera podríamos acceder a las primeras 128K
palabras activando el primer módulo y acceder a las otras 128K
palabras activando el segundo módulo.
4.
¿Qué diferencia existe entre RAM y ROM en logisim, si puedo
modificar los datos en ambos tipos de memoria?
Ciertamente, en ambos
casos es posible modificar el contenido. No obstante,
en el caso de la ROM solo podremos hacer la operación de lectura (no
en vano ROM significa Read Only Memory), es decir, no se pueden
escribir los datos que vengan por el bus de datos y solo podremos
modificar el contenido de la memoria . Sin embargo, en la memoria RAM es posible realizar tanto la
operación de lectura como la de escritura, por lo tanto, podremos
modificar el contenido de la memoria escribiendo los datos que vengan
por el bus de datos.
5.
¿Qué funcionamiento tiene el pin “clr” en una memoria RAM?
Su función es resetear
la memoria, o lo que es lo mismo, limpiar la memoria, para ello pone
todos los registros guardados en memoria a 0.
5.1. ¿Y debo
activar “clr” cada vez que quiera cargar y guardar en memoria un
registro diferente pero en la misma dirección?
No hace falta activar
“clr”, ya que, automáticamente guarda el nuevo registro
eliminando el anterior que estaba guardado.
Realizado por: José Antonio Blanco Frontado
José Antonio Muñoz Fuentes
No hay comentarios:
Publicar un comentario