Estructura y Tecnología de Computadores Práctica 2 Práctica 2. Memorias 1.1. Objetivos Con la siguiente práctica se pretende familiarizar al alumno con las memorias de semiconductores de tipos ROM y RAM. Se trabajará con ambos tipos y con distintas capacidades para conseguir asimilar los conceptos expuestos en las clases teóricas. Los conceptos a reforzar son: líneas de direcciones, de datos y de control. También se hará hincapié en la ampliación de memoria para conseguir mayor capacidad o mayor tamaño de palabra. El software que se utilizará es el programa denominado Digital Works de distribución gratuita y que el alumno puede descargar en la plataforma virtual de la asignatura. Algunos estarán ya familiarizados con el mismo, puesto que se ha usado durante el desarrollo de algunas prácticas de la asignatura Fundamentos de Sistemas Digitales en la especialidad de Sistemas. Aquellos que desconozcan el entorno de Digital Works pueden descargar también un documento de ayuda sin más que acudir nuevamente a la plataforma virtual de la asignatura. 1.2. 1. Desarrollo de la práctica Trabajando con una memoria ROM Una vez iniciada la aplicación DigitalWorks, localice el dispositivo memoria en la barra de herramientas, el icono usado es , pique sobre él y a continuación sobre el área de trabajo, una ventana que le preguntará: - Tipo de memoria: podrá elegir entre tipo RAM o ROM, en esta ocasión seleccione ROM - Capacidad: mediante la indicación de las líneas de dirección y las de datos, puede especificarse la capacidad en bits que tendrá la memoria. Utilice una memoria 32 bits (16x2) A continuación picando sobre el botón OK, aparecerá un elemento de memoria en el área de trabajo. Observe que al tratarse de una memoria de solo lectura (ROM) la línea de control que necesita será solo la de selección de chip (CS), que tal y como indica el símbolo es activa a nivel bajo. Inicialmente, en cada posición de memoria está almacenado el dato 00. Para modificar el contenido de las distintas posiciones de memoria existe una ventana denominada Memory Contents y que podemos obtener sin más que picar con el botón derecho del ratón sobre el dispositivo de memoria ya colocado. 4 Estructura y Tecnología de Computadores Práctica 2 Observe que en el campo de direcciones, expresadas estas en formato hexadecimal, aparecen 4 dígitos. En el caso que nos ocupa, habiendo elegido sólo 4 líneas de dirección, será suficiente un digito hexadecimal para expresar las 16 posiciones posibles. El resto de dígitos se quedarán siempre a 0. Compruebe desplazando la barra de la derecha de la ventana Memory Contents, como las direcciones van de la 0 a la F. El siguiente campo de la tabla es el de contenidos, es decir, el dato que se almacena en cada dirección de memoria. El dato viene expresado en formato binario y es editable picando con el ratón sobre la posición que interese modificar. Realice las modificaciones necesarias para conseguir que el contenido de la memoria ROM sea el que aparece en la siguiente ventana: Para comprobar el contenido de la memoria, añadiremos algunos elementos alrededor de la misma. Estos nuevos elementos permitirán ir seleccionando la dirección que se desea leer así como visualizar el dato contenido en la dirección seleccionada. Los elementos a añadir se encuentran disponibles en la barra de herramientas y son los denominados Input Interactive y Leds . Coloque en la zona de trabajo cuatro entradas interactivas y dos leds distribuidos de forma similar al dibujo que se muestra 4 Estructura y Tecnología de Computadores Práctica 2 Las entradas interactivas se conectarán a las líneas de dirección A3-A0 para con ellas seleccionar las direcciones a leer. En las salidas de datos D1-D0 colocaremos sendos leds para visualizar el dato contenido en la dirección seleccionada. Para interconectar estos nuevos elementos a la memoria utilice el botón wire . Ya está el circuito construido y por tanto podemos ver su funcionamiento, pulse sobre el botón run . Observe que por defecto la dirección inicialmente seleccionada es la 0000, en binario. Al seleccionar esta dirección el dato de salida debe se “11”, se comprueba que es correcto ya que los leds se “encienden” lo que significa que le les llega el valor “1” binario a cada uno. Para seleccionar otras direcciones pique sobre el botón Object interaction selector , y con esa “manita” pique con el ratón sobre la entrada interactiva que quiere cambiar a valor “1”, tomará un color rojo. De este modo, compruebe que el dato contenido en todas las direcciones se corresponde con el que se introdujo mediante la tabla. Vuelva a colocar en las entradas el valor 0000, dirección 0 de memoria cuyo contenido debe ser “11”. Hasta ahora no hemos hecho uso de la línea de control CS, para usarla añadiremos una entrada interactiva al circuito y la interconectaremos con la entrada CS de la memoria. Con la “manita” modifique el valor de esta entrada, CS, para que tome valor “1”, y por tanto haga que la memoria deje de funcionar. Pruebe ahora a seleccionar la dirección 1111, el dato de salida que debe visualizarse es “00”, sin embargo como CS esta a nivel alto, desactiva el chip y mantiene el último dato leído (esto es un error de Digital Works, debería mostrar las salidas en estado de alta impedancia). Si vuelve a conmutar el estado de CS, ya aparecerá el dato que se almacenó en la dirección 1111, o sea, 0000. 2. Trabajando con una memoria RAM Siguiendo los pasos anteriores coloque ahora un dispositivo de memoria de tipo RAM en el área de trabajo de Digital Works. La RAM tendrá un bus de direcciones de 4 líneas y 2 para el de datos. En esta ocasión deberá añadirse una circuitería adicional para poder conectar tanto entradas interactivas que sirvan para escribir valores en memoria, como leds que visualicen el contenido de las distintas posiciones de memoria. La circuitería que se añade sirve para evitar conflictos eléctricos entre los leds y las entradas interactivas que van a compartir el bus de datos. El circuito quedaría como se indica en la siguiente figura: Una vez creado el esquema pruebe a escribir en distintas posiciones de memoria datos mediante la activación de la línea R/W. Luego pruebe a leer esas mismas direcciones para comprobar que efectivamente se guardaron. 3. a) Ampliación de memoria Combine elementos de memoria ROM de 16 x 4 para implementar una ROM total de 32 x 4 . Introduzca el siguiente contenido en cada dispositivo de memoria y compruebe el comportamiento global del sistema seleccionando direcciones de ambos módulos. 4 Estructura y Tecnología de Computadores Práctica 2 ROM1 b) ROM2 Dirección Dato Dirección Dato 10000 1111 00000 0000 10001 0000 00001 0000 10010 1010 00010 1111 …. … …. … 11111 0111 01111 1111 Combine elementos de memoria RAM de 32 x 4 para implementar un sistema con 32 bytes. Introduzca en cada módulo de memoria el contenido que se indica en las tablas siguientes. A continuación efectúe lecturas del sistema de memoria y compruebe que el dato de salida de 8 bits se corresponde con los datos introducidos. RAM1 c) RAM0 Dirección Dato Dirección Dato 00000 0000 00000 0000 00001 0000 00001 0101 00010 0000 00010 0000 00011 0101 00011 0000 …. …… …. …… Diseñe un sistema de memoria de 64 bytes de ROM y 32 bytes de RAM a partir de pastillas de memoria de 32x8 de ROM y de 32x4 de RAM4. Diseñe la circuitería externa necesaria para la decodificación externa mediante puertas lógicas. Finalizado el esquema introduzca datos en las memorias y efectúe lecturas en los distintos módulos para comprobar el funcionamiento del sistema de memoria. Se recomienda seguir los siguientes pasos para llegar a la solución final: Determinar el número de pastillas necesarias de RAM y ROM Número de líneas de dirección necesarias en cada tipo de pastilla de memoria Líneas de dirección mínimas que necesita el procesador para acceder al sistema de memoria propuesto Mapa de memoria direccionable por el procesador Ubicación en el mapa de memoria de los módulos a implementar 4