lunes, 3 de julio de 2017

Proteus: Emulación con chip de memoria RAM 62256 (lectura y escritura)

Asociación de las Entradas al Bus

 

Para el chip de memoria RAM 62256, los pines del bus de datos referentes a las entradas y salidas van del D0 al D7.
Lo que hace que estos pines funcionen como entradas de datos para una posición de memoria dada es que tenga un 0 en el pin notWE.
Si no definiéramos un bus, tendríamos que cablear cada una de las entradas individualmente a cada uno de los pines de entrada del chip, lo que hace que sea tedioso y que el circuito quede con un aspecto menos claro. Para evitar esto podemos utilizar un bus, donde etiqueto la entrada de la línea al bus y en el pin que quiero vincular esa entrada le indico esa misma etiqueta. El bus está representado como una línea ancha de color azul oscuro.
Además de lo anterior, tenemos que tener en cuenta que los pines de salida son bidireccionales porque cada uno puede funcionar como entrada o salida y como estamos trabajando con buses, esto se hace extensible también a ellos. Por esto, tendremos que utilizar puertas tribuffer o de tres estados en las entradas que impidan que cuando viaje una información de entrada también pueda estar viajando una información de salida provocando un corto circuito. Asignaremos la pata de control de la puerta al estado de lectura o escritura de la memoria. De esta manera, cuando la memoria esté en modo escritura y por lo tanto el buffer se utilice para enviar datos de entrada, esa pata tendrá un 1 permitiendo el flujo de información a través de ella. Por el contrario, si la memoria esta en modo lectura la entrada de control tendrá un 0 y el tribuffer tendrá un estado de alta impedancia impidiendo el paso de información.


Asociación de las Salidas al Bus

 

Al haber asociado las entradas al bus de datos ya tendríamos asociadas las salidas porque como he comentado anteriormente, éstas son bidireccionales en función del estado de la memoria. Para hacer más grafico la información que está viajando por este buffer, tenemos conectados dos displays de 7 segmentos asociando sus patas a cada uno de los pines D0 a D7 para que me indique el número en BCD que está viajando en hexadecimal. A continuación, muestro como hay que interconectar estos displays para que nos muestre correctamente el número:


¿Para qué sirve el Bus de Control? 

 

El bus de control nos va a permitir enviar la información a los pines que determinan si la memoria está encendida o no y si está activada en modo lectura o escritura. Como todos los pines están negados, cuando tengan un 0 estará activo y cuando tengan un 1 estarán desactivados. Además de lo anterior, indicarán si las puertas tribuffer están en un estado de alta impedancia o no. El significado es el siguiente:
•    notCE: Pin que enciende la memoria.
•    notWE:Pin que indica que la memoria está en molo escritura.
•    notOE:Pin que indica que la memoria está en modo lectura.
A continuación, muestro como están interconectados estos pines:




Simulación de proceso de Escritura/Lectura en memoria

 

Partimos de la siguiente situación del circuito:
 Para poder realizar la escritura de un valor en la posición de memoria 0 tendremos que realizar los siguientes pasos:
  • Activamos el chip de memoria pulsando el botón que permite el paso de un 0 que negado generará un 1 en la entrada notCE.
    •  
  • Seleccionamos la posición con los selectores numéricos en hexadecimal. En los laterales tienen un botón para subir y otro para bajar y lo traducen a binario en las salidas de la A0 a la A3.
    •  
  • Cerramos la llave para permitir que llegue un 0 al pin notWE transformándose en un 1. De este modo estará en modo escritura.
    •  
  • Seleccionamos el valor que queremos almacenar en memoria, por ejemplo el 0011.
    •  
  • Ahora para que este valor quede almacenado en memoria solo tenemos que cambiar el modo de escritura a lectura, abriendo la llave. De esta manera el valor estará almacenado.

Para comprobar que el valor 3 se ha almacenado en memoria voy a dejar el circuito en modo lectura y voy a ver el valor que tiene la memoria en la posición 1:
Tras esto voy a volver a la posición de memoria 0 para ver que seguimos teniendo el valor 3, anteriormente almacenado:
Como podemos comprobar, poniendo la memoria en modo lectura podemos ver los valores almacenados en cada una de ellas y hemos comprobado que el valor se ha almacenado correctamente.


2 comentarios: