6. Componentes básicos de memorización Fundamentos de los Computadores Grado en Ingeniería Informática Introducción La necesidad de memorizar información obliga al uso de circuitos secuenciales en el diseño de sistemas digitales complejos Existe un conjunto de componentes de memorización básicos que se usan con frecuencia en estos diseños Los objetivos de este tema son: Describir los tipos de registros utilizados con mayor frecuencia en el diseño de sistemas digitales Describir los bancos de registros y los distintos tipos de memoria que se emplean en sistemas digitales avanzados Componentes básicos de memorización 2 Estructura del tema Introducción Registros Registros con carga en paralelo Registros de desplazamiento Contadores ▫ Análisis y diseño de circuitos contadores ▫ Contadores asíncronos Bancos de registros Memorias ROM – Memorias de sólo lectura RAM – Memorias de acceso aleatorio Resumen y bibliografía Componentes básicos de memorización 3 Registros Conceptualmente, un registro puede considerarse como un biestable ampliado a múltiples bits La implementación de un registro consta de un conjunto de biestables conectados en paralelo a una señal de reloj común Componentes básicos de memorización 4 Registros Un registro con n biestables almacena un dato de n bits en el flanco de la señal de reloj, encargándose cada biestable de almacenar uno de los bits del dato Aparte de la señal de reloj, un registro de n biestables dispondrá también de n entradas y n salidas Componentes básicos de memorización 5 Registros Se pueden añadir al registro señales asíncronas de puesta a uno (preset) y puesta a cero (clear) Las señales asíncronas son independientes de la señal de reloj y tienen prioridad sobre las señales síncronas que dependen del reloj Componentes básicos de memorización 6 Estructura del tema Introducción Registros Registros con carga en paralelo Registros de desplazamiento Contadores ▫ Análisis y diseño de circuitos contadores ▫ Contadores asíncronos Bancos de registros Memorias ROM – Memorias de sólo lectura RAM – Memorias de acceso aleatorio Resumen y bibliografía Componentes básicos de memorización 7 Registros con carga en paralelo En la mayoría de los sistemas digitales es necesario almacenar un dato durante varios ciclos de reloj antes de modificarlo Por este motivo es útil añadir a un registro la posibilidad de decidir cuándo debe almacenarse un dato y cuándo no debe almacenarse Para esto se añade una señal de control que normalmente se denomina señal de habilitación (enable) o de carga (load) Componentes básicos de memorización 8 Registros con carga en paralelo El registro resultante se denomina registro con carga en paralelo y puede implementarse añadiendo por cada biestable un multiplexor controlado por la señal de carga Si la señal de carga está a 0 durante el flanco de reloj los multiplexores harán que el registro almacene el mismo dato que ya contenía Si la señal de carga está a 1 durante el flanco de reloj, los multiplexores harán que el registro almacene un dato nuevo proveniente de las entradas Componentes básicos de memorización 9 Registros con carga en paralelo Este diagrama muestra un registro con carga en paralelo Componentes básicos de memorización 10 Estructura del tema Introducción Registros Registros con carga en paralelo Registros de desplazamiento Contadores ▫ Análisis y diseño de circuitos contadores ▫ Contadores asíncronos Bancos de registros Memorias ROM – Memorias de sólo lectura RAM – Memorias de acceso aleatorio Resumen y bibliografía Componentes básicos de memorización 11 Registros de desplazamiento Un registro de desplazamiento es capaz de desplazar su contenido una posición en una dirección específica cuando lo indica una señal de control Mientras que los registros con carga en paralelo tienen una entrada de datos para cada bit, los registros de desplazamiento tiene una única entrada de datos Esta entrada de datos se utiliza para introducir un valor en la posición que queda libre tras el desplazamiento, lo que significa que este tipo de registros son de entrada en serie y salida en paralelo Componentes básicos de memorización 12 Registros de desplazamiento Este diagrama muestra un registro de desplazamiento Componentes básicos de memorización 13 Registros de desplazamiento Para aumentar la versatilidad del registro podemos utilizar multiplexores con un número mayor de entradas Esto nos permitiría combinar las funciones de carga en paralelo y desplazamiento (con más entradas también hubiera sido posible rotar…) Además puede añadirse la posibilidad de elegir entre un desplazamiento a la izquierda o a la derecha, lo que requerirá una segunda entrada serial de datos Finalmente, será necesario añadir entradas de control para determinar el modo de operación del registro Componentes básicos de memorización 14 Registros de desplazamiento Este diagrama muestra un registro de desplazamiento con carga en paralelo Componentes básicos de memorización 15 Registros de desplazamiento Los registros de desplazamiento con carga en paralelo suelen utilizarse para implementar circuitos que controlen transmisiones de datos en serie Uno de estos registros puede utilizarse para Convertir una secuencia de datos en paralelo en una secuencia de datos serie para transmitirla Convertir una secuencia de datos serie recibida en una secuencia de datos en paralelo que pueda ser procesada Además se presenta la opción de obtener primero el bit menos significativo o el más significativo Componentes básicos de memorización 16 Estructura del tema Introducción Registros Registros con carga en paralelo Registros de desplazamiento Contadores ▫ Análisis y diseño de circuitos contadores ▫ Contadores asíncronos Bancos de registros Memorias ROM – Memorias de sólo lectura RAM – Memorias de acceso aleatorio Resumen y bibliografía Componentes básicos de memorización 17 Contadores Un contador es un tipo especial de registro que incorpora lógica que le permite incrementar o decrementar su valor y, por tanto, contar de forma ascendente o descendente En el diseño de un contador resulta útil tener dos señales de control: Una señal de habilitación (enable) que habilite la cuenta cuando esté activa Una señal asíncrona de puesta a cero (clear) que permita reiniciar el contador cuando sea conveniente Componentes básicos de memorización 18 Contadores Este diagrama muestra un contador binario ascendente de cuatro bits, por lo que la cuenta es módulo 16 Componentes básicos de memorización 19 Contadores La lógica de incremento de este contador consta de una serie de circuitos semisumador Las entradas del primer semisumador se conectan al bit menos significativo y a la entrada de habilitación Cuando la entrada de habilitación está desactivada no se hace nada (sumamos 0) Cuando la entrada de habilitación está a activa se incrementa el bit menos significativo (sumamos 1) Las entradas de los demás semisumadores se conectan al bit correspondiente y al acarreo que pueda provenir del incremento del bit anterior Componentes básicos de memorización 20 Contadores de doble sentido Este contador puede ampliarse como contador ascendente/descendente modificando los circuitos semisumador para que sean capaces de restar Para esto será necesaria una nueva entrada de control “D” que determine el sentido de la cuenta Cuando D valga 0 la cuenta será ascendente Cuando D valga 1 la cuenta será descendente Componentes básicos de memorización 21 Contadores de doble sentido Este diagrama muestra un contador de doble sentido Ojo con esta implementación Componentes básicos de memorización 22 Contadores con inicialización Hasta aquí hemos supuesto que los contadores empiezan a contar desde cero, pero resulta conveniente que el contador pueda ser inicializado a un valor Para permitir la inicialización en paralelo de un contador necesitamos: Añadir un multiplexor a cada bit para permitirle incrementarse o tomar el valor de la entrada Añadir una señal de control (Load) que determine cuándo inicializar Componentes básicos de memorización 23 Contadores con inicialización Este diagrama muestra un contador con carga en paralelo Componentes básicos de memorización 24 Contadores BCD La capacidad de inicialización puede utilizarse para construir otros contadores, como por ejemplo circuitos que cuenten en BCD Dado que contar en código BCD implica realizar una cuenta módulo 10 debemos usar 4 biestables Para evitar que el contador de 4 biestables realice una cuenta módulo 16 debemos detectar cuando se alcanza el valor 9 y, en el siguiente ciclo, inicializar el contador a 0 en lugar de permitir que alcance el valor 10 Componentes básicos de memorización 25 Contadores BCD Este diagrama muestra el diseño de un contador BCD ascendente partiendo de un contador binario ascendente/descendente módulo 16 Componentes básicos de memorización 26 Contadores BCD Siguiendo este mismo esquema podemos diseñar un contador ascendente/descendente BCD a partir de un contador binario ascendente/descendente módulo 16 En función del sentido de la cuenta habrá que cargar un valor distinto en el contador, por lo que será necesario utilizar un multiplexor para decidir el valor correcto Para la dirección de cuenta ascendente debemos detectar el valor 9 y cargar un 0 en el siguiente ciclo Para la dirección de cuenta descendente debemos detectar el valor 0 y cargar un 9 en el siguiente ciclo Componentes básicos de memorización 27 Contadores BCD Este diagrama muestra el diseño de un contador BCD ascendente/descendente partiendo de un contador binario ascendente/descendente módulo 16 Componentes básicos de memorización 28 Estructura del tema Introducción Registros Registros con carga en paralelo Registros de desplazamiento Contadores ▫ Análisis y diseño de circuitos contadores ▫ Contadores asíncronos Bancos de registros Memorias ROM – Memorias de sólo lectura RAM – Memorias de acceso aleatorio Resumen y bibliografía Componentes básicos de memorización 29 Análisis de un contador Dado que un contador es un circuito secuencial podemos aplicarle un proceso de análisis para determinar su funcionamiento Como ejemplo tomaremos el circuito del diagrama para intentar determinar su secuencia de cuenta Componentes básicos de memorización 30 Análisis de un contador En primer lugar podemos decir que este contador es un circuito de tipo Moore, ya que las salidas dependen únicamente del estado del circuito y no de las entradas Dado que hay cuatro biestables el contador tiene un total de dieciséis estados posibles Componentes básicos de memorización 31 Análisis de un contador A partir del circuito podemos obtener las ecuaciones correspondientes a las entradas de los cuatro biestables Componentes básicos de memorización 32 Análisis de un contador Conociendo el funcionamiento de un biestable T es posible, partiendo de las ecuaciones de las entradas, generar la tabla de excitación y de estado siguiente Q+= TQ’+T’Q = T xor Q Componentes básicos de memorización 33 Análisis de un contador El análisis de las salidas es trivial, ya que se corresponden exactamente con el estado de los biestables correspondientes La tabla de estado siguiente nos da toda la información que necesitamos para determinar la secuencia de cuenta del contador El único dato que necesitamos en este caso es el valor inicial del contador Componentes básicos de memorización 34 Análisis de un contador Supongamos que queremos determinar la secuencia del contador partiendo del valor 0000 0000 1111 1110 1101 1010 0101 Componentes básicos de memorización 35 Análisis de un contador Supongamos ahora que queremos determinar la secuencia del contador partiendo del valor 0011 0011 1100 1011 0100 Componentes básicos de memorización 36 Estructura del tema Introducción Registros Registros con carga en paralelo Registros de desplazamiento Contadores ▫ Análisis y diseño de circuitos contadores ▫ Contadores asíncronos Bancos de registros Memorias ROM – Memorias de sólo lectura RAM – Memorias de acceso aleatorio Resumen y bibliografía Componentes básicos de memorización 37 Diseño de un contador El diseño de un contador también puede realizarse de la misma manera que el de cualquier otro tipo de circuito secuencial Como ejemplo diseñaremos un contador binario ascendente/descendente módulo 8 El circuito será de tipo Moore, ya que las salidas no dependerán directamente del valor de las entradas Dado que el contador es módulo 8 necesitaremos 3 biestables Para la realización del diseño usaremos biestables de tipo T El contador dispondrá de una señal de control C que determinará si la cuenta es ascendente (C = 1) o bien si es descendente (C = 0) Componentes básicos de memorización 38 Diseño de un contador Una vez conocido el comportamiento que debe tener el contador podemos plantear la tabla de transición o de estado siguiente Componentes básicos de memorización 39 Diseño de un contador A partir de la tabla de estado siguiente, y sabiendo que utilizaremos biestables de tipo T, podemos generar la tabla de excitación de los biestables Componentes básicos de memorización 40 Diseño de un contador La lógica de entrada a los biestables puede obtenerse simplificando las funciones correspondientes Componentes básicos de memorización 41 Diseño de un contador No es necesario generar ninguna lógica de salida, ya que la salida del contador coincide con su estado, por lo que ya sólo queda dibujar el diagrama del circuito Componentes básicos de memorización 42 Estructura del tema Introducción Registros Registros con carga en paralelo Registros de desplazamiento Contadores ▫ Análisis y diseño de circuitos contadores ▫ Contadores asíncronos Bancos de registros Memorias ROM – Memorias de sólo lectura RAM – Memorias de acceso aleatorio Resumen y bibliografía Componentes básicos de memorización 43 Contadores asíncronos Una posible manera de reducir el coste de un circuito contador es eliminar la lógica utilizada para calcular los incrementos y/o decrementos Para conseguir esto se usan contadores asíncronos, es decir, contadores cuyos biestables no están conectados a la misma señal de reloj La forma más simple de implementarlo es hacer que cada biestable cambie a la mitad de la frecuencia que el biestable anterior (doble período) El biestable de la posición n cambiará cuando el biestable de la posición n-1 cambie de 1 a 0, pero no cuando el biestable de la posición n-1 cambie de 0 a 1 Componentes básicos de memorización 44 Contadores asíncronos El biestable más apropiado para construir un contador asíncrono es el biestable T Las entradas del biestable deben establecerse de forma que su estado cambie en cada ciclo, es decir, siempre a 1 La señal de reloj del biestable de la posición n se conecta con la salida complementada del biestable de la posición n-1 Dado que el biestable de la posición n sólo cambia en el flanco de subida de su reloj, solo cambiará cuando la salida complementada de n-1 cambie de 0 a 1, o sea, cuando el biestable de la posición n cambie de 1 a 0 Componentes básicos de memorización 45 Contadores asíncronos Este diagrama muestra un contador asíncrono con una señal de habilitación (E) y una señal de puesta a 0 (clear), así como una señal de reloj que se conecta sólo al biestable correspondiente al bit menos significativo Componentes básicos de memorización 46 Contadores asíncronos Este cronograma muestra el funcionamiento del contador, pudiendo verse que cada biestable tiene un período que es el doble que el anterior Componentes básicos de memorización 47 Contadores asíncronos Si suponemos que el retardo de cada biestable es , la señal Q0 cambiará con un retardo , ya que pasa por un biestable, la señal Q1 cambiará con un retardo 2, ya que pasa por dos biestables, y así sucesivamente Componentes básicos de memorización 48 Contadores asíncronos Podemos decir que un contador asíncrono de n bits tendrá un retardo máximo de n, y por tanto la frecuencia de operación del circuito será 1/n Por su parte, el retardo máximo de un contador síncrono vendrá dado únicamente por la propagación del acarreo en la lógica de incremento/decremento Esto significa que, con un mismo número de biestables, un contador síncrono sería más rápido que uno asíncrono Componentes básicos de memorización 49 Contadores en modo mixto Para acelerar un contador asíncrono podemos dividirlo en varias secciones y hacerlo parcialmente síncrono Una posibilidad sería realizar un contador síncrono con secciones asíncronas, de forma que la sección más significativa esté habilitada sólo cuando la menos significativa tenga su máximo valor Componentes básicos de memorización 50 Contadores en modo mixto Otra posibilidad consiste en realizar un contador asíncrono con secciones síncronas La señal de reloj de la sección más significativa se conecta de tal forma que sólo haya un flanco de subida cuando la sección menos significativa pase del valor máximo al valor cero Componentes básicos de memorización 51 Estructura del tema Introducción Registros Registros con carga en paralelo Registros de desplazamiento Contadores ▫ Análisis y diseño de circuitos contadores ▫ Contadores asíncronos Bancos de registros Memorias ROM – Memorias de sólo lectura RAM – Memorias de acceso aleatorio Resumen y bibliografía Componentes básicos de memorización 52 Bancos de registros Además de conectar los biestables en fila, es posible conectarlos formando una estructura bidimensional En una estructura de este tipo podemos considerar que cada fila es un registro, por lo que se le suele dar el nombre de banco de registros La principal ventaja de un banco de registros es que, dada su regularidad, el diseño final resulta menos complejo de lo que sería necesario si implementamos los registros por separado Componentes básicos de memorización 53 Bancos de registros Un banco de registros consiste en: Una red bidimensional de celdas (RFC – Register-file Cells) Decodificadores de lectura y escritura Cada RFC consiste en un biestable con una circuitería lógica asociada que permite almacenar un bit Los decodificadores de lectura y escritura seleccionan una fila concreta para permitir que en ella se realice una operación de lectura o escritura Componentes básicos de memorización 54 Bancos de registros Una RFC puede implementarse usando un biestable D y algunas puertas lógicas para controlar: Una señal de entrada para datos Una señal de selección de escritura que hace que el dato de entrada se almacene en el biestable Una señal de selección de lectura que hace que el dato almacenado en el biestable pase a la salida a través de un buffer triestado Componentes básicos de memorización 55 Bancos de registros En general, un banco de registros de 2n registros de m bits necesita: 2n filas de biestables m entradas de datos m salidas de datos El decodificador de escritura necesita n líneas de dirección 1 línea de habilitación de escritura El decodificador de lectura necesita n líneas de dirección 1 línea de habilitación de lectura Componentes básicos de memorización 56 Bancos de registros Este diagrama muestra un banco de cuatro registros de cuatro bits en el que, por claridad, se ha suprimido la señal de reloj Componentes básicos de memorización 57 Bancos de registros con múltiples puertos La principal limitación de un banco de registros como éste es que, en un momento dado, sólo puede leerse un dato y escribirse un dato al mismo tiempo Decimos que un banco de registros de estas características tiene un puerto de lectura y un puerto de escritura La solución a este problema es aumentar el número de puertos de lectura y escritura según convenga, de acuerdo con el uso que vaya a darse al banco Componentes básicos de memorización 58 Bancos de registros con múltiples puertos El problema de usar múltiples puertos es que el coste de cada registro aumenta proporcionalmente al número de puertos que tenga Un caso habitual es usar dos puertos de lectura y uno de escritura Por ejemplo, suponiendo que un circuito digital realice una operación aritmética o lógica en cada ciclo: Los puertos de lectura proporcionarán los dos operandos El puerto de escritura permitirá almacenar el resultado Componentes básicos de memorización 59 Bancos de registros con múltiples puertos Este diagrama muestra un banco de registros con las modificaciones necesarias para tener dos puertos de lectura, incluyendo un segundo decodificador de lectura Componentes básicos de memorización 60 Estructura del tema Introducción Registros Registros con carga en paralelo Registros de desplazamiento Contadores ▫ Análisis y diseño de circuitos contadores ▫ Contadores asíncronos Bancos de registros Memorias ROM – Memorias de sólo lectura RAM – Memorias de acceso aleatorio Resumen y bibliografía Componentes básicos de memorización 61 Memorias Los bancos de registros en un sistema digital son rápidos, pero las características de su diseño implican que también deben ser pequeños Un banco de registros es ideal para almacenar datos temporales durante operaciones de cálculo Su tamaño no es suficiente para almacenar todos los datos producidos durante el funcionamiento del sistema Las memorias son estructuras de almacenamiento de datos más lentas pero también más grandes, y por tanto son más apropiadas para memorizar grandes cantidades de datos a largo plazo Componentes básicos de memorización 62 Memorias de sólo lectura Las memorias de sólo lectura (ROM – read only memory) se construyen para que almacenen determinada información que será accesible a un circuito digital Una ROM contiene 2n líneas de m bits cada una, y necesitará n líneas de dirección para permitir la selección de cada una de las líneas Un decodificador con n líneas de control es el encargado de seleccionar las líneas y permitir la lectura de los datos, pero la escritura de datos es imposible Componentes básicos de memorización 63 Memorias de sólo lectura Las memorias ROM son programadas de forma permanente durante el proceso de fabricación, por lo que se construyen con una determinada funcionalidad En general, las ROM son excelentes para almacenar datos fijos dado que no son volátiles, es decir, su contenido no se pierde al desconectar la corriente Debido a esto, las ROM se utilizan muy frecuentemente en sistemas digitales, como por ejemplo para almacenar programas que permitan inicializar un procesador Componentes básicos de memorización 64 Memorias de sólo lectura Al igual que los bancos de registros, podemos imaginar una ROM como una red bidimensional de celdas de memoria (MC – memory cell) En general, se interpreta como un 1 ó un 0 la presencia o ausencia de una conexión con una celda Componentes básicos de memorización 65 Ejemplo de aplicación de una ROM Como ejemplo diseñaremos un circuito que implemente el funcionamiento descrito por este diagrama de estados usando biestables tipo T La parte combinacional del sistema la vamos a implementar usando una memoria ROM Componentes básicos de memorización 66 Ejemplo de aplicación de una ROM Se trata de un diagrama de tipo Moore con cuatro estados, una entrada y dos salidas, de lo que podemos deducir la tabla de estado siguiente Componentes básicos de memorización 67 Ejemplo de aplicación de una ROM Conociendo el comportamiento de los biestables T podemos extender la tabla de estado siguiente y formar la tabla de excitación Componentes básicos de memorización 68 Ejemplo de aplicación de una ROM A partir del diagrama de estados también podemos deducir la tabla y las ecuaciones de salida, teniendo en cuenta que se trata de un sistema de tipo Moore Componentes básicos de memorización 69 Ejemplo de aplicación de una ROM Con esta información podemos dibujar el diagrama La memoria ROM será accedida usando como dirección los valores de las variables X, Q1 y Q0 Cada fila de la ROM se corresponderá con los valores que deben aparecer en las entradas de los biestables de acuerdo con los valores de X, Q1 y Q0 correspondientes a esa fila Componentes básicos de memorización 70 Memorias ROM programables Otro tipo de ROM muy popular son las memorias ROM programables (PROM), ya que se fabrican de tal forma que el usuario final puede programarlas según su conveniencia En este tipo de memorias, cada celda está conectada a la línea correspondiente por medio de un transistor La ausencia de un fusible representa un 0 La presencia de un fusible representa un 1 El usuario puede programar una PROM fundiendo fusibles, pero sólo podrá hacerlo una única vez Componentes básicos de memorización 71 Estructura del tema Introducción Registros Registros con carga en paralelo Registros de desplazamiento Contadores ▫ Análisis y diseño de circuitos contadores ▫ Contadores asíncronos Bancos de registros Memorias ROM – Memorias de sólo lectura RAM – Memorias de acceso aleatorio Resumen y bibliografía Componentes básicos de memorización 72 Memorias de acceso aleatorio Las memorias de acceso aleatorio (RAM – random access memory) son memorias volátiles, es decir, su contenido se pierde cuando se desconectan de la corriente Las memorias de acceso aleatorio (RAM – random access memory) están organizadas como conjuntos de filas 2n filas n líneas de dirección para identificar cada fila m bits almacenados en cada fila Componentes básicos de memorización 73 Memorias de acceso aleatorio Además de las líneas de dirección hace falta una señal de selección de chip (CS) que habilite o deshabilite la RAM La señal CS permite construir una memoria grande con varias RAM de forma que sólo una de ellas sea accedida en un momento dado También existe una señal de selección de lectura o escritura (RWS) que selecciona el modo de operación de la RAM: lectura(0) ó escritura(1) Componentes básicos de memorización 74 Memorias de acceso aleatorio De forma similar a los bancos de registros, una RAM se organiza como un conjunto de celdas de memoria (MC) Podemos representar el funcionamiento de cada celda como un biestable D con una lógica asociada Componentes básicos de memorización 75 Memorias de acceso aleatorio El diseño de las celdas de memoria se optimiza para reducir el número de transistores Las memorias RAM estáticas (SRAM – static RAM) necesitan entre 4 y 6 transistores, siendo capaces de retener los datos mientras no se sobrescriban y la SRAM permanezca conectada a la corriente Bancos de registros, memorias cache Las memorias RAM dinámicas (DRAM – dynamic RAM) sólo necesitan un transistor por celda, por lo que ocupan menos y son más baratas, pero su contenido se pierde con cada lectura, así que hay que reescribirlo (ciclos de refresco) SDRAM DDR Memoria principal Componentes básicos de memorización 76 Memorias de acceso aleatorio Otra desventaja de las DRAM es que tienden a perder el dato almacenado al cabo de un tiempo debido a imperfecciones de fabricación Para solucionar esto es necesario acceder a todas las celdas o reescribir todos los datos con cierta frecuencia Durante esta operación de refresco, todas las operaciones de lectura y escritura deben suspenderse A pesar de los problemas, las memorias DRAM son muy populares debido a su mayor densidad y su menor coste, mientras que las SRAM son usadas cuando la rapidez de acceso es el factor principal Componentes básicos de memorización 77 Memorias de acceso aleatorio Este diagrama muestra la estructura de una RAM, incluyendo el decodificador de direcciones que selecciona la línea que debe ser accedida Componentes básicos de memorización 78 Temporización de las RAM La organización de las RAM impone restricciones de temporización en la forma en la que se realizan los accesos de lectura y escritura La dirección debe permanecer en las líneas desde antes de que comience el acceso hasta después de que termine para asegurar un buen funcionamiento Las líneas de dirección deben tener los valores adecuados desde el principio del acceso, ya que el camino crítico pasa por el decodificador En caso de una escritura, no hace falta que el dato esté disponible desde el principio, pero debe estarlo antes de que sea necesario y hasta después de terminada la escritura Componentes básicos de memorización 79 Temporización de las RAM Este cronograma muestra la temporización de un acceso de lectura a una RAM Componentes básicos de memorización 80 Temporización de las RAM Este cronograma muestra la temporización de un acceso de escritura a una RAM Componentes básicos de memorización 81 Combinación de memorias RAM En general, las RAM se fabrican con una cantidad determinada de líneas (2n) y de bits por línea (m) Si en un momento dado hay que fabricar una memoria más grande que las que tenemos disponibles, tendremos que combinar varias de ellas Para obtener memorias con una mayor cantidad de bits por línea podemos conectar varias RAM en paralelo, todas ellas conectadas a las mismas líneas de direcciones Para obtener memorias con un mayor cantidad de líneas podemos conectar varias RAM en serie, usando una parte de la dirección para seleccionar una RAM con un decodificador y otra parte de la dirección para acceder a la RAM Componentes básicos de memorización 82 Combinación de memorias RAM Este diagrama muestra la conexión de varias memorias RAM en paralelo para aumentar el tamaño de palabra almacenada: RAM de 214x32 bits utilizando módulos RAM de 214x8 bits Componentes básicos de memorización 83 Combinación de memorias RAM Este diagrama muestra la conexión de varias memorias RAM en serie para aumentar el número de posiciones de memoria: RAM de 216x8 bits utilizando módulos RAM de 214x8 bits NOTA: Es posible combinar ambas técnicas para aumentar tanto el número de posiciones de la memoria como el tamaño de la palabra almacenada Componentes básicos de memorización 84 Ejercicio 1 Construye un sistema de memoria de tamaño 512K palabras, con tamaño de palabra de 16 bits. Las primeras 64K palabras son de sólo lectura y se encuentran en las direcciones más bajas. El resto del espacio direccionable será de lectura/escritura. Para ello se dispone de los siguiente módulos: RAM de 64kx8bits RAM de 128Kx16bits ROM de 16Kx16bits decodificadores varios Cada uno de los módulos de memoria y los decodificadores disponen de una señal de habilitación (o selección) activa a nivel alto. ¿En qué módulo de memoria se encuentra almacenada la palabra con dirección 0x186A0? Componentes básicos de memorización 85 Ejercicio 2 Diseñar una memoria de tamaño total 1M palabras con un ancho de palabra 32 bits en la que las primeras 256K palabras sean de memoria ROM y el resto de memoria RAM. Para ello se dispone de tres tipos de módulos: 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 RAM de 512 KB con un ancho de palabra de 16 bits. Cada módulo posee entradas de direcciones, entradas de datos, salidas de datos y una señal de selección (CS) activa a nivel alto. Para el diseño se pueden utilizar tantos módulos como creas necesarios pero debe usarse al menos uno de cada tipo. Asume que dispones de los decodificadores que estimes oportunos. Componentes básicos de memorización 86 Estructura del tema Introducción Registros Registros con carga en paralelo Registros de desplazamiento Contadores ▫ Análisis y diseño de circuitos contadores ▫ Contadores asíncronos Bancos de registros Memorias ROM – Memorias de sólo lectura RAM – Memorias de acceso aleatorio Resumen y bibliografía Componentes básicos de memorización 87 Resumen El almacenamiento de datos es una característica primordial de los sistemas digitales Los registros permiten almacenar información y acceder a ella de forma rápida, por lo que son útiles para trabajar con datos concretos, pero la cantidad de registros que un sistema puede tener es reducida Las memorias son más lentas que los registros pero tienen una capacidad mucho mayor, por lo que resultan útiles para almacenar grandes cantidades de información que pueda transferirse a los registros cuando sea necesario Componentes básicos de memorización 88 Bibliografía Principios de Diseño Digital Capítulo 7 Daniel D. Gajski Prentice Hall, 1997 Componentes básicos de memorización 89