domingo, 4 de septiembre de 2016

Unknown

Diseño de una memoria

   Hola a todos. Hoy voy a explicarles como diseñar una memoria. Para realizar la explicación supondremos que la memoria que queremos obtener tiene un tamaño total de 1 Mbyte con un ancho de palabra de 32 bits. En dicha memoria, los primeros 256 KB serán memoria ROM y el resto será memoria RAM.

   Los módulos de memoria de los que dispondremos para realizar el diseño serán:


  •    Memorias ROM de 64 KB con un ancho de palabra de 8 bits.
  •    Memorias RAM de 256 KB con un ancho de palabra de 32 bits.
  •    Memorias de RAM de 512 KB.

   Antes de empezar con el diseño debemos recordar unos conceptos básicos. Para poder direccionar a una memoria de un tamaño 2n    palabras de m bits necesitaremos n líneas de dirección para poder seleccionar cada una de las líneas. 

   Si necesitamos aumentar el tamaño de línea, podemos conectar módulos de memoria en paralelo, mientras que si lo que necesitamos es aumentar el número de líneas de direccionamiento, las debemos conectar en serie.

   Dicho esto podemos empezar con el diseño.

   Bloque de memoria ROM

   Hemos dicho que 256 KB de la memoria que queremos diseñar serán de memoria ROM. Por tanto, si pasamos dicho tamaño a potencias de 2 tenemos que 256 KB = 218 KB cpn un ancho de palabra de 32 bits. Los módulos de ROM de los que disponemos son de 64 KB = 216  KB con ancho de palabra de 8 bits. Por lo tanto, debemos conectar módulos en serie y en paralelo para poder alcanzar el tamaño deseado.

   Empecemos con las líneas de direccionamiento. Como he dicho anteriormente, si queremos aumentar el número de las mismas debemos conectar módulos de memoria en serie. En este caso tenemos módulos de 8 líneas de direccionamiento, así que si conectamos 4 módulos en serie de los mismos conseguiríamos el número de líneas de direccionamiento deseadas, ya que 8 x 4 =32.

   Ahora nos faltaría conseguir el tamaño de memoria deseado, para este caso vemos que tenemos módulos de 64 KB y necesitamos conseguir 256 KB. Si observamos 64 KB x 4 = 256 KB, y como habíamos dicho antes, para aumentar el tamaño necesitamos conectar módulos en paralelo, por tanto, necesitamos 4 módulos en paralelo para conseguir lo deseado.

   Visto esto, el número total de módulos de 64 KB de 8 líneas de direccionamiento será de 16, ya que necesitaríamos conectar 4 grupos de memorias conectadas en paralelo, en serie.

Bloque de memoria RAM

   Habíamos dicho que el espacio restante de la memoria sería de RAM, por tanto, 1024 KB - 256 KB = 768 KB, que es el tamaño que deberá tener la parte de RAM.

   Al igual que antes dicha memoria debera tener 32 bits de tamaño de palabra.

   En este caso contamos de dos módulos de RAM de diferente tamaño. Esto no tiene mayor importancia, así que procederemos como en el caso anterior.

   En este caso empezaremos con el tamaño de memoria. Veamos que tenemos módulos de 256 KB y 512 KB. La suma de un módulo de cada tipo nos da el tamaño que deseamos conseguir, por lo tanto, ahora mismo necesitaríamos un módulo de 512 KB y otro de 256 KB.

   Ahora comprobemos el número de líneas de direccionamiento. Vemos que el módulo de 256 KB ya tiene 32 bits por tanto no necesitamos hacer nada más con él. Pero en el caso del módulo de 512 KB solo tenemos 16 bits de direccionamiento, por tanto necesitaremos conectar 2 módulos en serie para así conseguir los 32 bits.

   Por tanto, para la parte de RAM necesitaremos 1 módulo de 256 KB x 32 bits, y dos módulos de 512 KB x 16 bits conectados en serie.

Direccionamiento a los módulos

   Una vez sabido el número de módulos que necesitaremos, así como de que forma debemos conectarlos, debemos ver como direccionamos a cada grupo de módulos. A priori necesitaremos 3 decodificadores para poder llevar esto a cabo, ya que tenemos 3 grupos de módulos diferentes.

   Para poder ver esto fácilmente usaremos una tabla, en las que aparecerán las últimas líneas de direccionamiento de las que disponemos. 

   En total vemos que para direccionar a la memoria total necesitamos 20 líneas de direccionamiento. A estas líneas las llamaremos A19, A18,... A0.

   Para direccionar al bloque de ROM necesitamos 16 líneas ya que los módulos son de 64 KB, así que usaremos las líneas A17 y A16 como entradas del un decodificador para seleccionar cada una de las filas de memorias ROM, dicho decodificador será 2 a 4 ya que tenemos 2 entradas y 4 filas a las que referirnos.

   En el caso del módulo de 256 KB, necesitamos 18 lineas para direccionarlo, por lo que podemos usar la línea A19 como entrada al decodificador que active su línea. Véase que las líneas A17...A0 las vamos a usar para direccionar dentro de los módulos de RAM así que la otra entrada del decodificador la usaremos como señal de habilitación del decodificador anterior.

  Para el caso del bloque de RAM de 512 KB, necesitaremos 19 líneas de dirección para direccionar, así que podemos usar la línea A19 como entrada del decodificador que selecciona esa fila. Al igual que antes el decodificador será 1 a 2 y una de las salidas será la señal de habilitación del decodificador anterior.

A19
A18
A17
A16
A15


A1
A0


0
0







0
1







1
0







1
1






1







1









Diagrama

   A continuación se muestra el dibujo de como quedaría nuestra memoria. Véase que en el dibujo nos faltaría añadir el bus de datos.


   Esto ha sido todo, espero que encontraran interesante este artículo, si es así denle like. Si alguien está interesado en que haga algún diseño en particular pueden enviarme un correo solicitándolo.

Unknown

About Unknown -

Author Description here.. Nulla sagittis convallis. Curabitur consequat. Quisque metus enim, venenatis fermentum, mollis in, porta et, nibh. Duis vulputate elit in elit. Mauris dictum libero id justo.