miércoles, 12 de octubre de 2011

Memorias

Una memoria es un dispositivo de almacenamiento de datos binarios. Las memorias almacenan bloques de datos generalmente de 8 bits que corresponde a un byte. Un byte es compuesto por dos bloques de 4 bits que reciben el nombre de nibble. Una unidad de información se denomina palabra y es compuesta por uno o más bytes.

Una memoria esta formada por matrices de celdas. Una celda es un elemento de almacenamiento que puede almacenar un 1 o 0 lógico. La posición en una unidad de datos se denomina dirección. La dirección corresponde a la ubicación de una unida de datos o palabra dentro de la memoria.

La capacidad de una memoria, corresponde al número total de unidades de datos que puede almacenar. La operación de escritura en una memoria coloca los datos en una posición de memoria específica. La operación de lectura toma los datos de una posición de memoria específica.

Lectura y Escritura

Los datos se colocan en la memoria a través del proceso de escritura y se toman de la memoria a través del proceso de lectura mediante un conjunto de líneas denominadas bus de datos. El bus de datos en una memoria es bidireccional, lo que indica que los datos pueden entrar a la memoria o salir de ella. En el caso de la memoria organizada en bytes, el bus de datos tiene 8 líneas que corresponden a 8 bits.

En las operaciones de lectura y escritura, se debe seleccionar una posición de memoria mediante una dirección que se debe colocar en un dato binario. Esta dirección se ubica en un conjunto de líneas denominadas bus de direcciones. El código de la dirección se decodifica mediante un circuito combinacional denominado decodificador de instrucciones y selecciona el registro en donde se debe almacenar o leer el dato. El número de líneas del bus de direcciones depende de la capacidad de la memoria. Esta capacidad esta determinada por potencias base 2, debido a que dicha dirección se encuentra en binario. Por ejemplo, si una memoria tiene un bus de datos de 8 bits, entonces, su capacidad es de 28=256 direcciones de memoria.

La siguiente figura representa un diagrama en bloques de una memoria.

Operación de escritura

En la operación de escritura de una memoria, se introduce en el bus de direcciones un código que corresponde a la dirección en la que se desea almacenar el dato. El decodificador de direcciones decodifica el valor colocado en el bus de direcciones seleccionando el registro en el cual se almacena el dato. Posteriormente, se debe colocar en el bus de datos el dato que se desea almacenar. Finalmente se debe dar una orden de escritura para que el dato quede almacenado en la memoria. Cuando se escribe un nuevo dato en una posición de memoria, el dato anterior es sobreescrito, lo cual indica que ese dato anterior se destruye.

Operación de lectura

En la operación de lectura de una memoria, se introduce en el bus de direcciones un código que corresponde a la dirección de la que se desea capturar o leer el dato. El decodificador de direcciones decodifica el valor colocado en el bus de direcciones seleccionando el registro del cual se toma el dato. Finalmente se debe dar una orden de lectura para que el dato se coloque en el bus de datos. Una vez este en el bus de datos, se puede hacer uso de dicha información. Cuando se lee un dato de una posición de memoria, el dato se mantiene almacenado. Esto permite darle nuevo uso a dicho dato.

Memorias de Solo Lectura ROM

ROM son las siglas de read-only memory, que significa "memoria de sólo lectura". Las memorias ROM mantienen de forma permanente los datos almacenados, los cuales, pueden ser leídos pero no modificados (memoria no volátil). Una memoria ROM almacena datos que se requieren constantemente en las aplicaciones. La ROM suele almacenar la configuración del sistema o el programa de arranque de un computador.

Las memorias de sólo lectura o ROM son utilizada como medio de almacenamiento de datos en los computadores, debido a que no se puede escribir fácilmente, su uso principal reside en la distribución de programas que están estrechamente ligados al soporte físico del  computador, y que seguramente no necesitarán actualización. Por ejemplo, una tarjeta gráfica puede realizar algunas funciones básicas a través de los programas contenidos en la ROM.

Una razón de que se utilice la memoria ROM para almacenar datos es la velocidad ya que los discos son más lentos. Además no se puede leer un programa que es necesario para ejecutar un disco desde el propio disco. Por lo tanto, la BIOS, o el sistema de arranque oportuno de la computadora normalmente se encuentran en una memoria ROM.

Las ROMs semiconductoras se fabrican de con tecnología bipolar o con tecnología MOS (Metal-Oxido Semiconductor). La siguiente figura muestra la clasificación de las memorias ROM.

ROM Básica

La ROM básica es una memoria programada permanentemente durante el proceso de fabricación para proporcionar funciones estándar. La mayoría de los circuitos integrados ROM utilizan la presencia o ausencia de de una conexión de transistor en una unión fila-columna para representar un 1 o 0. Las celdas de una memoria pueden ser bipolares, es decir, que están construidas a base de transistores BJT (Bipolar Junction Transistor) o pueden ser construidas a base de transistores MOSFET (Metal-Oxide Semiconductor Field Efect Transistor).

La representación de una memoria ROM pequeña, por ejemplo, una memoria de 256X4, que indica que tiene 256 posiciones de memoria y cada posición es de 4 bits, se realiza mediante una matriz de celdas de 256 filas por 4 columnas. Esta memoria tiene entonces 8 bits en el bus de direcciones y 4 bits en el bus de datos.

PROM

Las PROM (ROM Programable) se encuentran disponibles en tecnología bipolar y en tecnología MOS. Generalmente estas memorias tienen buses de datos de 4 u 8 bits y capacidades de alrededor de 250.000 posiciones de memoria. Las PROM utilizan mecanismos de fundición para almacenar bits donde una celda se funde o no para representar un 1 o 0 lógico, entonces una memoria PROM utiliza fusibles en cada celda. El proceso de la fundición es irreversible. Una vez programada no se puede cambiar.

Durante el proceso de programación de la memoria, a cada celda se le aplica una corriente suficiente para fundir el fusible de la celda. De esta forma esta celda queda abierta y representaría un 0 lógico.

Normalmente una memoria PROM se programa colocándola en un dispositivo denominado programador de PROM. El proceso de programación consiste en colocar una dirección en el bus de direcciones y enviar un impulso que produzca corriente a cada línea del bus de datos para fundir los fusibles requeridos. De esta forma queda almacenado el dato.

EPROM

Una EPROM es una PROM borrable. Una EPROM puede ser reprogramada, si antes se borra los datos que contenga la memoria. Utiliza matrices NMOSFET con estructura de puerta aislada. La puerta del transistor aislada no tiene conexión eléctrica y puede almacenar una carga eléctrica durante un periodo de tiempo indefinido. Los bits en esta matriz se representan mediante la presencia o ausencia de una carga almacenada en la puerta. El borrado consiste en la eliminación de la carga de la puerta. Los tipos fundamentales de EPROM son las UVPROM (PROM Borrable por Ultravioleta) y las EEPROM (PROM Eléctricamente Borrable)

UVPROM

En una UVPROM la puerta aislada del FET esta flotando dentro de un material oxido aislante. El proceso de programación hace que los electrones sean eliminados de la puerta flotante. El borrado se realiza mediante la exposición del chip de la matriz de memoria a una radiación ultravioleta de alta intensidad a través de una ventana de cuarzo que posee la memoria en la parte superior del encapsulado. La carga positiva almacenada en la puerta se neutraliza después de un periodo de tiempo de exposición de la luz ultravioleta sobre la memoria.

EEPROM

Las PROM Borrables Eléctricamente, se puede borrar y programar mediante impulsos eléctricos. Las EEPROM se pueden reprogramar dentro del propio circuito, lo que permite reconfigurar cualquier sistema. Los dos tipos de EEPROM son los MOS de puerta flotante y la de silicio de oxido nitroso (NMOS, Metal Oxide Silicon). La aplicación de una tensión en la puerta de control de la estructura de puerta flotante permite la eliminación y el almacenamiento de la carga en la puerta flotante.

Memorias de Acceso Aleatorio RAM

En una memoria RAM los datos se pueden leer y escribir de forma aleatoria, es decir, que se puede leer y escribir de una posición de memoria deseada. Además, los tiempos de respuesta en una memoria RAM son bajos, esto indica que es una memoria supremamente eficiente. Al escribir un dato en una posición de la memoria, los datos anteriores son reemplazados por el nuevo dato. Sin embargo, cuando los datos son leídos de una posición de memoria, estos datos se conservan. La memoria RAM puede almacenar información, mientras tenga energía eléctrica.

Las memorias RAM, también se fabrican con tecnologías bipolar y MOS. Hay otras memorias que usan ambas tecnologías denominadas BiMOS. La siguiente grafica muestra la clasificación de memorias RAM.

Arquitectura de RAM Estática (SRAM)

Una memoria SRAM se direcciona del mismo modo que una memoria ROM. La principal diferencia entre la organización de las SRAM y las PROM es que las SRAM, tienen bus de datos bidireccional, es decir de entrada y salida y tienen unidad de control de lectura y escritura de información.

En modo de lectura, se coloca en el bus de datos el dato almacenado en la posición de memoria correspondiente a la dirección colocada en el bus de direcciones. En modo de escritura, el dato colocado en el bus de datos, se almacena en la posición de memoria correspondiente a la dirección colocada en el bus de direcciones. El bus de datos se compone de las líneas llamadas DQ0 a DQ7. En el proceso de escritura, estas líneas se denominan D0 a D7 y en el proceso de lectura estas líneas se denominan Q0 a Q7.

La figura anterior muestra la organización de una memoria SRAM. La matriz de celdas de memoria esta organizada en 256 filas y 128 X 8 columnas, es decir, 128 columnas cada una de 8 bits. El modo de operación de la SRAM es el siguiente. La entrada de habilitación E, debe estar a nivel bajo para que el circuito se encuentre habilitado. 8 de las 15 líneas de dirección se decodifican en el decodificador de filas. Esto indica que se selecciona solo una de 256 filas. Las líneas restantes de dirección las decodifica el decodificador de columnas. Esto indica que se selecciona solo una da 128 columnas de 8 bits.

En el proceso de lectura, la entrada de habilitación W debe estar a nivel alto y la entrada de habilitación G, debe estar activa a nivel bajo. Las compuertas negativa AND, posterior a las líneas de habilitación, permiten activar los buffer triestado del bus de datos, de tal forma que los datos almacenados, se presenten en el bus de datos.

En el proceso de escritura, la entrada de habilitación W debe estar activa a nivel bajo y la entrada de habilitación G, debe estar a nivel alto. Las compuertas negativa AND, posterior a las líneas de habilitación, permiten activar los buffer triestado del bus de datos, de tal forma que los datos colocados en el bus de datos, ingresen a la matriz de memoria en la fila y columna seleccionada.

Expansion de Memorias

Las memorias disponibles se pueden ampliar para incrementar la longitud de palabra, es decir, el número de bits de los datos o para ampliar la cantidad de posiciones de memoria, es decir, ampliar el número de direcciones de la memoria.

Expansión de longitud de palabra

El objetivo de la expansión de la longitud de la palabra es ampliar el bus de datos. Para ello, es recomendable utilizar dos memorias RAM o ROM idénticas. La siguiente figura muestra el símbolo de una memoria ROM de 32 X 8.

Con base en la memoria anterior, se puede ampliar el número de bits del bus de datos al doble, utilizando dos circuitos integrados de esta memoria. En este caso se obtendría una memoria PROM de 32 X 16. La implementación de esta memoria expandida seria la siguiente.

En la expansión anterior, se debe colocar el bus de direcciones en común para ambas memorias y la salida se amplia al doble de cada memoria.

De igual forma se implementa para una memoria RAM. La siguiente figura muestra el símbolo lógico de una memoria RAM de 1Kb X 8.

Con base en esta memoria de 1Kb X 8, la implementación de la memoria expandida seria la siguiente.

En la implementación anterior, las entradas del bus de direcciones van en común y el bus de datos expande. Sin embargo, es necesario tener en cuenta que el bus de datos es bidireccional. En esta memoria, al colocar la línea WE en 0, la memoria se encuentra en estado de escritura y al colocar la línea WE en 1, la memoria se encuentra en estado de lectura. Esto indica que el bus de datos es de entrada cuando WE es 0 y de salida cuando WE es 1. Por tal motivo, en este ejemplo se ha conectado diodos LED para visualizar la salida y dipswitch para proporcionar datos de entrada.

Expansión de capacidad de almacenamiento o tamaño

El objetivo de la expansión de la capacidad de almacenamiento es ampliar el bus de direcciones en un bit. Al hacer esta operación, se expande la capacidad de la memoria al doble.

Con base en la memoria PROM 32 X 8, se puede ampliar la capacidad de la memoria al doble usando dos memorias idénticas, resultando una memoria expandida de 64 X 8. La implementación de esta memoria expandida seria la siguiente.

En la expansión anterior, se debe colocar el bus de direcciones en común para ambas memorias. Además la entrada CS, se convierte en el bit de mayor peso del bus de direcciones, de tal forma que cuando es 0 habilita la memoria inferior y cuando es 1 habilita la memoria superior. Las salidas se conectan en común.

Esta expansión con memoria RAM también es posible. Con base en la memoria RAM de 1Kb X 8, la implementación de la memoria expandida seria la siguiente.

En la expansión anterior, se debe colocar el bus de direcciones en común para ambas memorias. Además la entrada CS, se convierte en el bit de mayor peso del bus de direcciones, de tal forma que cuando es 0 habilita la memoria inferior y cuando es 1 habilita la memoria superior. Además, en esta memoria, al colocar la línea WE en 0, la memoria se encuentra en estado de escritura y al colocar la línea WE en 1, la memoria se encuentra en estado de lectura. Esto indica que el bus de datos es de entrada cuando WE es 0 y de salida cuando WE es 1. Por tal motivo, en este ejemplo se ha conectado diodos LED para visualizar la salida y dipswitch para proporcionar datos de entrada.

2 comentarios:

  1. me ayudo sobre la expancion de memoria ram

    ResponderEliminar
  2. ¡Muchas gracias! me sirvió mucho para mi tarea de expansión de memoria.

    ResponderEliminar