Para
esta practicaes de gran utilidad tener conocimientos de la memoria RAM y de la ROM vistos en los temas de
jerarquía de memoria, además de que en estos ejercicios se lleva a cabo
la colocación de los módulos, algo muy importante.
Empecemos esta practica con un pequeño esquema del funcionamiento de una RAM en el simulador Logisim, sabiendo esto se podrá realizar la práctica sin mayores contratiempos, puesto que la ROM también usa un esquema similar en el simulador.
En este caso he usado el montaje del ejercicio uno para señalar sus distintas partes y que sea sencillo su entendimiento
- Bus de direcciones, indica la dirección de memoria a señalar, en este caso se trata de un bus de 16 bits
- Selector de memoria, al activarlo se accede a la direccion de memoria indicada para su posterior lectura o escritura
- Control de entrada/salida de la RAM, en función de su valor se indica si se va a escribir(0) o leer(1) el dato en la dirección de memoria indicada
- Clear, reinicia todos los valores de la RAM, no es necesario usarlo en medio de una simulación, puesto que se pueden reescribir los datos, pero si se quiere reiniciar la simulación, es la mejor opción
- Control de entrada, este interruptor nos es útil para controlar la entrada o no de los datos del bus de datos, en este montaje su valor debe ser el opuesto al control de entrada/salida de la RAM
- Salida de datos, muestra los datos que salgan de la RAM o entren por el bus de datos
- Bus de datos de 8 bits
1.- Introducir una memoria RAM de 64Kx8 y realizar un circuito que permita leer y escribir
en ella. Probar a introducir en las direcciones 0023h el dato 3A y en la dirección C120h el
dato 25.
en ella. Probar a introducir en las direcciones 0023h el dato 3A y en la dirección C120h el
dato 25.
Primero realizaremos la primera parte, introduciremos en 0x0023(0000 0000 0010 0011) el dato 3A(0011 1010)
Ahora introduciremos el dato 0x25(0010 0101) en la dirección 0xC120(1100 0001 0010 0000)
2.- Unir dos memorias del tipo utilizado en el apartado 1, para conformar una de 64Kx16.
Comprobar su funcionamiento de forma similar al apartado anterior: introduciendo algunos
datos de 16 bits en varias direcciones.
Comprobar su funcionamiento de forma similar al apartado anterior: introduciendo algunos
datos de 16 bits en varias direcciones.
En este ejercicio emplearemos un bus de datos de 16 bits, puesto que el chip de RAM contiene 64K palabras de 8bits(64Kx8) necesitaremos un módulo de 2 chips para que se ajuste a la palabra del bus de datos
3.- Unir tres memorias para como las de los apartados anteriores (64Kx8) para conformar una
de 128Kx16. Comprobar su funcionamiento de forma similar al apartado anterior:
introduciendo algunos datos de 16 bits en varias direcciones.
de 128Kx16. Comprobar su funcionamiento de forma similar al apartado anterior:
introduciendo algunos datos de 16 bits en varias direcciones.
En este ejercico implementamos un segundo módulo de RAM, por lo que ahora nuestro bus de direcciones se compondría de los 16 bits ya explicados y uno adicional(con mayor peso) que se correspondería al bit de selección
4.- Ampliar la memoria hasta 256Kx16 ¿Qué elemento será necesario para seleccionar cada
banco de dos memorias de 64Kx8? Un decodificador. Comprobar su funcionamiento de
forma similar al apartado anterior: introduciendo algunos datos de 16 bits en varias
direcciones.
banco de dos memorias de 64Kx8? Un decodificador. Comprobar su funcionamiento de
forma similar al apartado anterior: introduciendo algunos datos de 16 bits en varias
direcciones.
En este ejercicio hemos aumentado aun mas el número de módulos de RAM, y 17 bits ya no son suficientes para direccionarlas, por lo que añadiremos un multiplexor para señalar el módulo de RAM, por lo que ahora poseeriamos 18 bits en el bus de datos(2 para indicar el módulo, 15 para la palabra y 1 para el Byte)
5.- Transformar la estructura del anterior punto para que los primeros 64K sean de memoria
ROM Observar que señales de control son las que intervienen en cada tipo de memoria.
Indica en cada bando el banco de direcciones de memoria que direcciona y obtén el mapa
de memoria del conjunto.
ROM Observar que señales de control son las que intervienen en cada tipo de memoria.
Indica en cada bando el banco de direcciones de memoria que direcciona y obtén el mapa
de memoria del conjunto.
El montaje de este ejercicio es idéntico al anterior, pero sustituyendo el primer módulo de RAM por ROM, el funcionamiento es exactamente el mismo, salvo porque como ya sabemos en la ROM los datos no pueden ser escritos, solo leidos. Para editar los datos en el simulador usaremos el editor hexadecimal que incluye logisim
Bus de direcciones= 18 bits
Palabra= 16 bits= 2 Bytes
Módulo RAM=128KB
Rango de direcciones del módulo= 64K
Nº Módulos RAM= 3
Módulo ROM= 128KB
Nº Módulos ROM= 1
Si el bus de direcciones tiene 18 bits entonces el mapa de
memoria tiene 218 direcciones pudiendose direccionar 218=256K
palabras=64K * 4 módulos
Y como ya indicamos antes su distribución sería: 18 bits en el bus de datos(2 para indicar el módulo, 15 para la palabra y 1 para el Byte)
Y el mapa de memoria sería el siguiente
----------------------------------------------------------------------------------------------------------------------------
FAQ's
- ¿Qué es el editor hexadecimal de Logisim?
Logisim tiene un editor hexadecimal integrado para ver y alterar contenidos de memoria. Para
acceder a él, abre un menú desplegable para el componente de memoria correspondiente y
selecciona Editar Contenidos... Para componentes ROM, que presentan un atributo para los
contenidos de memoria, puedes acceder también al editor hexadecimal haciendo clic sobre el
atributo correspondiente.
acceder a él, abre un menú desplegable para el componente de memoria correspondiente y
selecciona Editar Contenidos... Para componentes ROM, que presentan un atributo para los
contenidos de memoria, puedes acceder también al editor hexadecimal haciendo clic sobre el
atributo correspondiente.
- ¿Porque se carga en la RAM el valor ff trás haber cargado un dato?
Esto ocurrirá sobre todo cuando actives el reloj automático del Logisim, tu velocidad administrando el circuito es muy inferior a la del ordenador, tras haber introducido el dato deberias haber cerrado la entrada de datos y encender el control de entrada/salida(que activaria la salida) de la RAM para que en el siguiente ciclo de reloj no se reescriba con el valor del bus, que al estar cortado no tendría valor, por lo tanto capta el valor ff
- ¿Diferencia entre capacidad total y palabras en un módulo?
La diferencia principal es debida a que la capacidad total se mide en multiplos de Bytes(8 bits) pero no siempre la palabra del bus de datos va a ser de 8, sino que puede ser de 16, 32, 64... En el ejemplo de la practica cada chip posee 64K palabras de 8 bits, o lo que es lo mismo, 64KB, por lo tanto el módulo tiene una capacidad total de 128KB, pero de 64K palabras de 16 bits
- ¿Porque los módulos son de dos chips?
Eso se debe a la diferencia entre la palabra del bus de datos y del chip, cada palabra del chip contiene 8 bits, en cambio el bus de datos lleva 16 bits, por lo tanto para no desperdiciar la capacidad del bus se utilizan dos chips conectados al mismo modulo, de manera que una dirección de ese módulo apunté a los dos chips, consiguiendose así los 16 bits que aprovecharían totalmente la capacidad del bus
- ¿Cómo podría realizar un montaje de autoinicialización de la RAM?
El montaje es bastante sencillo y la mecánica de dicho circuito se basa principalmente en la frecuencia del reloj y en los ticks en diferentes niveles. En este montaje por ejemplo, en el reloj de la RAM he dejado que cada nivel dure un tick, para la entrada A0 dos ticks, 4 para la A1, 8 para la A2 y 16 para la A3, resultando:
Los realizadores de la práctica son: Esperanza Cano, Miguel Angel González y Diego Fariñas
No hay comentarios:
Publicar un comentario