En los cursos de lógica digital se encuentra el apartado de memorias, que no son más que dispositivos electrónicos que nos permiten almacenar información para luego ser leída. Obviamente, esto es una definición bastante escueta.
Lo cierto es que hay una parte la cual muchos libros no hablan y que se da en clase y se trata sobre la expansión de memorias, teoría que debe ser dominada a la hora de completar el apartado de memorias. Debido a la poca cantidad de información en libros y en internet, he decido crear un artículo en donde se habla de manera clara y precisa sobre la expansión de memorias.
Imaginemos la siguiente situación: Necesitamos una memoria de 8X8 bits pero disponemos únicamente de integrados con capacidad de 4×4 bits. Para llegar a una memoria de 8X8 bits tendríamos que combinar los integrados hasta lograr la capacidad de 8X8 bits, esto significa que debemos aumentar las líneas de dirección así como la longitud de datos en nuestra memoria. A continuación veremos cómo es que se logra esto.
Expansión de la longitud de información almacenada
Para lograr esto, es necesario que las líneas de dirección de la memoria y las señales de habilitación se encuentren corto circuitadas para cada memoria. Sin embargo, como estamos expandiendo información, las líneas de datos o el bus de data se tendría que extender, en este caso para la extensión de la memoria, las líneas de datos no serán comunes.
A continuación presento una gráfica para este tipo de expansión.
{rokbox title=|Memoria 2×8 bits a partir de dos memorias de 2×4 bits.| thumb=|http://www.clase911.com/CV/images/problems/memory_1.jpg|}http://www.clase911.com/CV/images/problems/memory_1.jpg{/rokbox}
Asumamos que se necesita una memoria de 2X8 bits pero sólo se cuenta con circuitos integrados de 2X4 bits, en este caso tendríamos que utilizar dos memorias de 2X4 bits para lograr almacenar 4 bits por cada posición. En este caso, observamos que el número de direcciones de memoria es el que se requiere, así que no se debe alterar.
Para determinar el número de memorias adicionales por extensión de data se puede utilizar una simple regla matemática. Esto es: dividir la longitud de información que se necesita almacenar entre la longitud de información que almacena la memoria. Para nuestro ejemplo, tendríamos entonces 8/4 = 2. Esto indica que cada memoria física almacenará la mitad de los datos que vayamos a guardar.
Una interrogante que podría aparecer es la siguiente: ¿Cuál de las dos memorias almacena los datos más significativos? Bueno, eso dependerá del diseño del circuito. Lo que debe cumplir es que una vez elegida su memoria inicial, ésta deberá contener los bits de orden superior, mientras que la última memoria a utilizar deberá contener los bits de orden inferior.
Expansión en la cantidad de posiciones
Para lograr esto, es necesario que los circuitos o memorias que utilicemos les llegue las mismas líneas de data, es decir que éstas estarán corto circuitadas. Además de esto, sólo las líneas de dirección de menor peso estarán cortocircuitadas a cada memoria, el resto se estará utilizando para la selección de la memoria.
A continuación presento una gráfica para este tipo de expansión.
{rokbox title=|Memoria 4×4 bits a partir de dos memorias de 2×4.| thumb=|http://www.clase911.com/CV/images/problems/memory_2.jpg|}http://www.clase911.com/CV/images/problems/memory_2.jpg{/rokbox}
Para determinar el número de memorias adicionales por extensión de posiciones se puede utilizar otra división matemática. Asumamos que necesitamos una memoria de 4X4 bits y contamos con únicamente memorias de 2×4 bits. En este caso, tenemos la misma capacidad de almacenamiento de data así que esto no se altera. Sin embargo, no tenemos la misma capacidad de posición. Para esto, bastaría con dividir la longitud de posiciones deseada entre la longitud de posición que almacena la memoria. Para nuestro ejemplo: 4/2 = 2 indicando entonces que se necesitarán dos memorias para extender a 4 posiciones.
Ahora: ¿Cómo se distribuyen las líneas de dirección? Pues, habrá que tener en cuenta lo siguiente: Sabemos que nuestra capacidad de posición deseada es de 4. Para esto, se necesitan 2 líneas de dirección. Sin embargo, como tenemos memorias sólo de 2×4 bits, éstas sólo necesitan 1 línea de dirección. Como habíamos dicho: las líneas de dirección comunes a las memorias serán las de menor peso y el resto irán a las líneas de selección. Tendríamos que 1 línea de dirección será común a las dos memorias, y se utilizará la línea de dirección de mayor peso para seleccionar cuál memoria deseamos utilizar.
Expansión en dirección e información en memoria
Volvamos a nuestro ejemplo inicial en donde disponíamos de memorias de 4X4 bits pero necesitamos realmente un circuito con capacidad de almacenar 8X8 bits. En este caso, tendremos que expandir a la vez: la dirección y la información. Para este caso, tendríamos que utilizar 4 memorias de 4X4.
¿Por qué?
Porque para tener 8 posiciones a partir de 4, necesitamos el doble y esto aplicada de igual manera para la extensión de información. Entonces tendríamos que utilizar 4 memorias de 4×4 bits.
El gráfico de cómo debe estar conectadas estas cuatro memorias es el siguiente:
{rokbox title=|Memoria 8×8 bits a partir de cuatro memorias de 4×4.| thumb=|http://www.clase911.com/CV/images/problems/memory_3.jpg|}http://www.clase911.com/CV/images/problems/memory_3.jpg{/rokbox}
Aquí podemos observar lo siguiente, estamos expandiendo la longitud de información hacia la derecha, mientras que expandimos las posiciones hacia abajo.
En la primera fila vemos que tenemos las 8 líneas de data no comunes y que para poder leer el dato completo, las líneas de dirección deben estar cortocircuitadas.
En la segunda fila tenemos el mismo comportamiento. Ahora, hay que tomar en cuenta lo siguiente: las líneas de dirección de menor peso para las cuatro memorias están corto circuitadas y además las líneas de data de mayor peso van corto circuitadas con las memoria que está justo debajo de ésta.
¿Por qué? Pues, el funcionamiento es el siguiente: como sabemos que la última línea de dirección es la que se utilizará para saber con qué memoria trabajar. Asumamos que el decodificador selecciona las dos memorias de la primera fila. Esto causará que las que están en la segunda fila no se habiliten ya que el decodificador mandaría un cero al cs, haciendo que las líneas de dirección y data no se habiliten y sólo estén habilitadas las de las primera fila.
Si queremos la posición 2, entonces las líneas de dirección enviarán el código binario correspondiente a ambas memorias para de allí grabar o leer 4 datos en cada memoria.
Y de esta manera es cómo funciona la expansión en memoria. Con algo de práctica podríamos volvernos todos unos profesionales. Los invito a que realicen los siguientes problemas:
Problema 1
¿Cuántos CI de RAM de 128X4 bits se necesitan para generar una capacidad de memoria de 048 bytes?
¿Cuántas líneas de dirección deben utilizarse para tener acceso a ésta?¿Cuántas de estas líneas están conectadas a la entrada de dirección de todos los CI?
¿Cuántas líneas deben decodificarse para las entradas de selección del CI?
Problema 2
Muestre el esquema de cómo debería conectarse los chips de 4×2 bits para tener una capacidad de memoria de 8X4 bits.
como hago para ver los imagenes de las memorias?