Práctica Nº4

Para la realización de esta practica utilizaremos el programa Logisim Version 2.7.1. La práctica consiste en simular el funcionamiento de las memorias.
El primer ejercicio consiste en crear con logisim una memoria RAM de 64Kx8 y realizar un circuito que permita leer y escribir en ella. Para comprobar que funciona correctamente meteremos en la dirección 0023h el dato 3A.

Los elementos que vamos a necesitar son:
    • Una memoria RAM.
    • Una entrada de direcciones.
    • Una entrada de datos.
    • Un triestado.
    • Una salida de datos.
    • 5 pins de un bit de entrada cada uno.


Para introducir la RAM nos vamos a la izquierda, desplegamos el apartado Memoria, hacemos clic en RAM y seguidamente hacemos clic en el panel de dibujo para insertar la RAM. Por defecto suele poner un número de bits de direcciones = 8, para cambiarlo simplemente haced clic en el dibujo de la ram y a la izquierda, debajo de todos los elementos, aparecerá las propiedades. Cambiad el numero de direcciones a 16.




A continuación introducimos las entradas de direcciones y de datos. Para ello nos vamos al menú de los elementos, desplegamos Wiring, hacemos clic en “Pin” y luego en el panel de dibujo. Repetimos el proceso para añadir otro Pin. Elegimos el que queramos, hacemos clic en el y en las propiedades le cámbialos “Bits de datos” a 16, en la opción “¿Tres estados?” la ponemos en “NO”. Bien, esa va ser nuestra entrada de direcciones. Ahora seleccionamos el otro Pin e igual que antes, pero en vez de 16 lo ponemos a 8. Ya podemos conectar la entrada de direcciones a la memoria haciendo clic en la salida de lo que es nuestra “entrada de direcciones” y arrastrando el cable a la entrada “A” de la memoria.



Ahora conectemos nuestra entrada de datos a la memoria, para ello hacemos como con las direcciones, pero en vez de arrastrar el cable a “A” lo hacemos a “D”, pero antes tenemos que añadir un triestado entre los datos y la memoria, de esta forma controlamos cuando queremos que un dato pase a la memoria. Para añadirlo nos vamos al menú de elementos, Puertas y seleccionamos “Búffer controlado”. Además tenemos que añadir el bit de control, este es uno de los 5 pins necesarios: clic en Wiring, Pin y cambiamos el “¿Tres estados?” a NO y dejamos el bit a 1.



Despues de estó colocaremos la salida de datos: clic en Wiring y Pin. Cambiamos a 8 bits, el triestado a NO, “¿salida?” lo ponemos a SI y lo conectamos con la salida D de la memoria.



Por ultimo solo nos queda colocar los bit de selección, control, salida y clear de la memoria. Cada uno de estos es un Pin de un bit, exactamente igual que el del triestado de antes. Conectamos cada bits a una entrada de la memoria y ya tenemos nuestro circuito montado.


Bien, ahora comprobemos que funciona correctamente. Lo primero que tenemos que hacer es tener todos los bits del Sel, control, Out, CLR y del triestado a 0. En la entrada de direcciones ponemos la dirección en la que queremos guardar el dato, en nuestro caso la dirección 0023h. Nos vamos al icono de la mano marrón, hacemos clic y a continuación hacemos clic en los “0” de la entrada de direcciones para cambiarlos de 0 a 1, nuestra dirección es 00000000 00100011. Para ver si la dirección es la correcta activamos el bit de selección de la RAM haciendo clic en él, automáticamente el puntero se colocará en la dirección escrita antes en la entrada de datos. Ahora probemos la entrada de datos. Cambiemos de la misma forma esa sección, nuestro dato era 3A, luego 00111010, activamos el triestado haciendo clic en el bit, esto permitirá pasar el dato hacia la memoria. Hasta que no activemos el bit de control de la RAM no se almacenara el dato, para ello hacemos clic en el bit de control (el de al lado de SEL) y se guardará en la dirección elegida anteriormente. Luego volvemos a poner el bit de control a 0 y el del triestado a 0 también. Por ultimo, para sacar del dato de la ram y almacenarlo en la salida de datos activamos la salida OUT poniéndola a 1. Si todo ha ido bien, el dato se almacenara en la Salida de Datos.




El segundo ejercicio es exactamente igual que el primero, pero con otro modulo mas de ram y esta vez de 64Kx16.

Para su realización añadimos otro modulo de RAM, le cámbialos las direcciones a 16 y dejamos el numero de datos a 8, de esta forma los dos módulos suman los 16 bits que queremos. También cambiamos la entrada de datos y la salida, ahora se podrá manejar hasta 16 bits, simplemente lo cambiamos de 8 a 16, otra cosa a tener en cuenta es que debemos añadir un separador entre la entrada de datos y las memorias para que divida los datos en 2, 8 bits para una ram y 8 para otro.

Para añadir el separador: Wiring, separador y clic en el panel de dibujo. Le cambiamos la propiedad de bits de entradas, ya que vamos a trabajar con 16. Lo seleccionamos y ponemos 16 en “bits de entrada”. Las salidas las dejamos en 2. Ahora conectamos la entrada de datos al separador por la parte que es solo una, también conectamos la salida de datos a esa parte del separador.

En el separador hay una parte que pone 0-7, por ahí salen los bits menos significativos, y otra que pone 8-15, por aquí los mas significativos,conectamos una de partes del separador a la D de una ram, y la otra a la D de la otra ram. Ya tenemos nuestro circuito montado.


Para el ejercicio 3 usaremos otros dos módulos de ram, del mismo tamaño que los anteriores. Ahora podremos ver cómo se elije entre los módulos donde se quiere guardar la información. Para ello, además de añadir dos módulos más de ram añadiremos una puerta “NOT” entre el “SET” de las nuevas rams y el PIN que las conecta. De esta forma, cuando el PIN esté en 1, se utilizará 2 módulos de ram, mientras que si está en 0, el negador lo cambia a 1, activando las memorias nuevas. Puedes verlo en la siguiente imagen de ejemplo.


El ejercicio 4, es exactamente igual que él 3, pero en vez entre 2 rams de 128, es entre 4 rams. Para ello, en vez de usar una puerta NOT usamos un decodificador que nos proporciona 4 salidas. Dependiendo de la entrada se activara una u otra salida. Obviamente también tendremos que cambiar el tamaño del PIN, pues como lo tenemos actualmente solo nos permite 0 o 1, hay que cambiarle el valor a 2 bits. Aquí en la imagen lo veréis más claramente.


Ya por último, en el ejercicio 5, tenemos que transformar los primeros 128K en memoria ROM, para ello tan solo le dejamos el SEL conectados, dejando las demás entradas desconectadas, de esta forma esa memoria solo puede ser leída, no se puede escribir y borrar.

No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.