0% encontró este documento útil (0 votos)
141 vistas27 páginas

Apuntes Unidad 4 - Sistemas Digitales 2

Este documento presenta los dispositivos de memoria de una microcomputadora genérica. Explica que la memoria interna está compuesta por módulos de memoria RAM y ROM conectados a los buses de direcciones y datos del microprocesador a través de señales de control. Describe la arquitectura interna de la memoria ROM, incluyendo la matriz de registros, el decodificador de direcciones y el buffer de salida.

Cargado por

Bman
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
141 vistas27 páginas

Apuntes Unidad 4 - Sistemas Digitales 2

Este documento presenta los dispositivos de memoria de una microcomputadora genérica. Explica que la memoria interna está compuesta por módulos de memoria RAM y ROM conectados a los buses de direcciones y datos del microprocesador a través de señales de control. Describe la arquitectura interna de la memoria ROM, incluyendo la matriz de registros, el decodificador de direcciones y el buffer de salida.

Cargado por

Bman
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

INTRODUCCIÓN A LOS

SISTEMAS DIGITALES II

APUNTES UNIDAD N° 4
DISPOSITIVOS DE MEMORIA

AÑO 2013

Ing. Eduardo Hoesé


Introducción a los Sistemas Digitales II

Unidad N° 4
Dispositivos de Memoria

1. Introducción.
El objetivo final de esta materia es dar los lineamientos generales para el diseño de un sistema
computador básico (microcomputadora) diseñado en base a un µP, módulos de memoria y módulos de
entrada / salida. Para ilustrar en forma clara los diversos aspectos de la operación y diseño de una
microcomputadora, usaremos un µP específico de manera de poder referirnos en forma concreta a las señales
contenidas en las líneas del bus de control, necesarias para la interconexión y sincronización de los
dispositivos que conforman la microcomputadora. Si bien nos enfocaremos en una microcomputadora y un
µP específico, la mayoría de los conceptos e ideas se aplican a computadoras de todos los tamaños y por otro
lado, los distintos microprocesadores tendrán señales de control en distinto número y denominación pero que
servirán a los mismos efectos. A tal efecto usaremos el µP Z-80 cuya arquitectura y set de instrucciones es ya
conocida por el alumno.
En la figura 4-1 se muestra el diagrama en bloques de la estructura de la microcomputadora elegida
para estudio. La misma está compuesta por módulos de memoria RAM y ROM y módulos de entrada / salida
interconectados con el µP a través de los buses de direcciones y datos (en la figura sólo se muestra un
módulo para cada tipo de memoria y dos módulos de entrada / salida, pudiéndose tener cualquier número de
estos mientras no se supere la máxima capacidad de direccionamiento del µP).

Figura 4-1 Diagrama en bloques de la estructura genérica de la microcomputadora elegida para estudio, compuesta por
módulos de memoria RAM y ROM y módulos de entrada / salida interconectados con el µP a través de los buses
de direcciones y datos.

74
Introducción a los Sistemas Digitales II

Como puede observarse de la misma figura, todos estos módulos están conectados en paralelo al bus
de datos del sistema (bus de datos del µP), por lo que todos aquellos dispositivos que deban volcar
información sobre este bus deberán tener salidas de datos triestado o con control de alta impedancia de
manera de poder controlar que en todo momento sólo uno de ellos (o ninguno) esté electricamente conectado
al bus (esto es con sus salidas en estado de baja impedancia) para así evitar el cortocircuito de sus salidas de
datos a través del mismo bus. Tal es el caso de los CIs de memoria que componen los módulos de memoria y
el caso de los módulos de entrada / salida que controlan periféricos de entrada.
Todos estos dispositivos poseen una entrada de control que permite colocar sus salidas de datos (o
bien sus entradas / salidas de datos, para el caso de las memorias RAM y módulos de entrada / salida) en el
estado de baja impedancia (Low-Z) o en el estado de alta impedancia (Hi-Z). A esta entrada de control la
llamaremos CS (Chip Select = Selección del Chip).
El bloque “decodificación de direcciones de módulos de memoria y entrada / salida” es el encargado
de generar las señales de habilitación o selección de los dispositivos que en un determinado momento estarán
conectados electricamente al bus de datos. Como puede observarse de la figura 4-1, estas señales constituyen
las entradas de control CS de los dispositivos conectados al bus de datos del sistema. Este bloque siempre
activará sólo una de sus salidas (o bien ninguna); la salida a ser activada será seleccionada en función de la
dirección presente en el bus de direcciones y de la combinación de valores de las señales de control IORQ’,
MREQ’, RD’ y WR’ del bus de control. Estas señales indican, en función de la instrucción que se esté
ejecutando en ese momento, que tipo de transferencia de datos se está efectuando actualmente
(lectura / escritura de memoria o lectura / escritura de módulos de entrada / salida).
El objeto de esta unidad es el diseño del subsistema de memoria de la microcomputadora o memoria
interna del computador, para lo cual estudiaremos la arquitectura interna y la operación externa de los
dispositivos de memoria que constituyen los módulos de memoria y la parte del bloque “decodificación de
direcciones de módulos de memoria y entrada / salida” encargada de decodificar las direcciones de memoria.
En una próxima unidad se verá el diseño del subsistema de interfaces a periféricos y la parte del bloque
“decodificación de direcciones de módulos de memoria y entrada / salida” encargada de decodificar las
direcciones de entrada / salida.

2. Memoria interna del computador.


La memoria interna del computador, también denominada memoria de trabajo del computador, es la
memoria de mayor velocidad. Esta memoria interna está conformada por circuitos integrados de memoria
por lo que se la denomina también como memoria electrónica o memoria semiconductora. Tanto los
formatos y tamaños de las palabras de datos como las velocidades de transferencia de los mismos deben ser
totalmente compatibles con las del µP del sistema. De hecho, un CI de memoria de un determinado
computador puede no ser compatible para ser usado en otro computador. De esta manera el intercambio de
información entre el µP y memoria se establece en una forma directa a través del bus de datos del sistema y
además es el µP el que decide y controla, en respuesta a la ejecución de una determinada instrucción, cuándo
dicho intercambio de información ha de llevarse a cabo. En esta memoria se almacenan las instrucciones y
datos con los que la CPU trabaja en el momento, por lo que el µP realiza de manera continua operaciones de
lectura y escritura sobre esta memoria a una gran velocidad.

2.1. Capacidad de memoria


La capacidad de memoria de un CI es la cantidad de bits que se pueden almacenar en el dispositivo.
Esta capacidad se indica normalmente como la cantidad de palabras de una determinada longitud que puede
ser almacenada en la memoria, expresada en la forma M x N, en donde M indica la cantidad de palabras o
registros de memoria y N la longitud o cantidad de bits de cada palabra o registro de memoria.
La cantidad de palabras o registros de memoria de un CI generalmente es una potencia de dos (2n) y
normalmente será un múltiplo de 210 = 1024 = 1K. Por ejemplo, un CI de memoria con una capacidad de

75
Introducción a los Sistemas Digitales II

4K x 20 (4.096 x 20) posee 4.096 registros de memoria de 20 bits cada uno, lo que nos lleva a una capacidad
de 81.920 bits.
A modo de repaso, se muestran continuación los valores de algunas potencias de 2 y las relaciones
entre ellas; notar que el incremento en uno del exponente duplica la potencia de dos y recordar que la
multiplicación de dos potencias de la misma base resulta en la base elevada a la suma de las potencias.
28 = 0,25 K = 256
29 = 0,5 K = 512
210 = 1 K = 1024
211 = 2 K = 2048
212 = 4 K = 4096

2 = 2 · 210 = 64 K = 65.536
16 6


220 = 210 · 210 = 1024 K = 1 M = 1.048.576

2 = 2 · 220 = 16 M
24 4


2 = 2 · 220 = 1024 M = 1 G = 1.073.741.824
30 10


236 = 26 · 230 = 64 G

3. Memoria ROM. Arquitectura interna.


Este tipo de memoria es no volátil, es decir que no perderá la información almacenada cuando se
interrumpa o se desconecte la alimentación. En la figura 4-2 se muestra un diagrama funcional simplificado
de la arquitectura interna (estructura) de un CI de memoria ROM con una capacidad de almacenamiento de
1024 registros de memoria o palabras de datos de 8 bits cada una (1K x 8).
La arquitectura mostrada es similar a la de muchos CIs de memoria ROM. Como se observa en la
figura, hay tres partes básicas: la matriz de registros (también llamada matriz de memoria), el decodificador
de direcciones y el buffer de salida.
La matriz de registros almacena los datos que han sido programados en la ROM. En este caso, cada
registro de memoria almacena una palabra de ocho bits y estos registros están configurados en una red de
matriz columna, de manera que podemos especificar la ubicación de cada registro dentro de la matriz de
acuerdo a la fila en la que se ubica. En algunas ROMs los registros se configuran en una red de matriz
cuadrada y la ubicación de cada registro vendrá dada por una fila y una columna específica.

76
Introducción a los Sistemas Digitales II

8 bits provenientes de la celda


de memoria seleccionada

0
Exitadores de
1
2 salida (buffer)
A0 3 con control de
alta impedancia o
A1 “tercer estado”
A2 Matriz de O0
Memoria de
Desde las O1
1024 x 8 8 líneas de
líneas menos
Decodificador datos hacia
significativas
de Direcciones (1024 el uP (a
del bus de
de 10 a 1024 celdas de través del
direcciones
memoria de bus de datos
del uP
8 bits cada D0 a D7)
una)
O7
A9

1021
1022
1023

CS

Selección del Integrado (del


Diagrama funcional de una memoria
circuito de decodificación
ROM de 1024 x 8. de direcciones de memoria)

Figura 4-2 Diagrama funcional simplificado de la arquitectura interna de un CI de memoria ROM con una capacidad de
almacenamiento de 1024 palabras de datos de 8 bits cada una (1K x 8).

Para el ejemplo de la figura 4-2 se tiene una matriz columna de 1024 registros de 8 bits cada uno. A
la ubicación de cada registro dentro de la matriz columna la llamaremos “dirección de memoria” y vendrá
dada por el código binario correspondiente a un número binario natural de “n” bits, de manera que para cada
combinación posible de unos y ceros tendremos una dirección distinta. De esta forma, con “n” bits podremos
direccionar 2n registros.
El decodificador de direcciones se utiliza para seleccionar uno de los registros de la matriz en
función de la dirección de memoria aplicada en sus entradas, por lo que deberá tener tantas salidas como
cantidad de registros posea la matriz de memoria. Recordemos que un decodificador posee n entradas y 2n
salidas, activando sólo una de sus salidas en función de la combinación de valores presentes en su entrada;
para nuestro caso de 1024 registros, el decodificador tendrá log2 1024 = 10 entradas, tal que 210 = 1024. Las
entradas de este decodificador constituyen las “líneas de entrada de direcciones” del CI de memoria
(A9 A8 - - - A1 A0), las que se deberán conectar a las líneas menos significativas del bus de direcciones del
µP.
Al igual que las líneas del bus de direcciones, las líneas de entrada de direcciones del CI de memoria
tienen asignadas los pesos correspondientes a la dirección de memoria referenciada. Los nombres asignados
a las líneas del bus de direcciones y a las líneas de entrada de direcciones del CI son las mismas, siendo A0
la línea de menor peso (20), A1 la línea de peso inmediato superior (21) y así sucesivamente hasta completar
el correspondiente conjunto de líneas.
La palabra de datos de 8 bits del registro seleccionado mediante las entradas de direcciones será
volcada sobre el buffer de salida. Este buffer de salida está constituido por ocho buffers triestado (uno por
cada bit) con sus entradas de control unidas a un mismo punto, constituyendo la entrada CS’ (Chip Select
negada = selección de chip negada) que es la señal de selección o habilitación del CI de memoria y que al
activarse en valor BAJO coloca las líneas de salida de datos O7 O6 - - - O1 O0 del chip de memoria (es
decir, las salidas de los búferes triestado) en el estado de baja impedancia o conexión eléctrica. Como estas
líneas de salida de datos del chip estarán conectadas a las respectivas líneas del bus de datos del µP, el buffer
de salida permitirá que los datos del registro seleccionado pasen al bus de datos del µP siempre y cuando CS’
esté en valor BAJO. Si CS’ está en valor ALTO, el buffer de salida está en el estado de Hi-Z y las líneas de

77
Introducción a los Sistemas Digitales II

salida de datos del chip, O7 a O0, quedarán “flotando”, esto es, electricamente desconectadas del bus de
datos del sistema.
Si bien sobre el bus de datos del sistema se pueden volcar datos de cualquier formato, el nombre
asignado a las líneas de este bus se corresponde con la posición relativa de los bits de los registros internos
del µP, asumiendo que los mismos almacenan un dato numérico. Así, al bit menos significativo de un
registro se lo designa como el “bit 0” y se corresponde con la línea D0 del bus; al bit de peso inmediato
superior se lo designa como “bit 1” y se corresponde con la línea D1 del bus y así sucesivamente hasta
completar los bits del registro y el conjunto de líneas del bus de datos. En forma similar, la línea de salida de
datos de O0 del chip de memoria se corresponde con el “bit 0” o bit menos significativo del registro de
memoria seleccionado en el chip; la línea de salida de datos de O1 se corresponde con el bit de peso
inmediato superior -bit 1- del registro seleccionado y así sucesivamente hasta completar el conjunto de líneas
de salida de datos y los bits del registro seleccionado.

3.1. Sincronización de la ROM.


Durante una operación de lectura habrá un retardo de propagación entre la aplicación de las entradas
de direcciones de la ROM y la aparición de los datos seleccionados sobre las líneas de salida de datos. Este
retardo de propagación, llamado tiempo de acceso, tACC, es una medida de la velocidad de operación de la
ROM. El tiempo de acceso se describe de manera gráfica en el timing de las señales de: entrada de
direcciones, entrada de selección de chip CS’ y salida de datos mostrado en la figura 4-3 y que se describe a
continuación.
En el tiempo t0 todas las líneas de entrada de direcciones están en algún nivel lógico específico,
algunas en ALTO y otras en BAJO. CS’ está en ALTO, de modo que las líneas de salida de datos de la ROM
están en su estado de Hi-Z (que se representa mediante la línea rayada).
En el tiempo t1 se vuelca una nueva dirección sobre el bus de direcciones del sistema y en el tiempo
t2 esta dirección ya es válida sobre la entrada de direcciones del integrado de memoria (ha debido transcurrir
un pequeño retardo de tiempo, t2 – t1, para que los datos se estabilicen sobre el bus). En este punto cada
entrada de dirección es un nivel lógico válido y la circuitería interna de la ROM comienza a decodificar las
nuevas entradas de dirección para seleccionar el registro que enviará sus datos a los búferes de salida. En t3
se activa la entrada CS’ para habilitar los búferes de salida. Finalmente, en t4, las líneas de salida de datos
cambian del estado de Hi-Z a los datos válidos que representan los datos almacenados en la dirección
especificada.

Figura 4-3 Sincronización de una operación de lectura en ROM.

78
Introducción a los Sistemas Digitales II

El retardo de tiempo entre t2, cuando la nueva dirección se hace válida, y t4, cuando las salidas de
datos se hacen válidas, es el tiempo de acceso, tACC. Las ROMs bipolares comunes tendrán tiempos de acceso
en el intervalo de 30 a 90 ns; los dispositivos NMOS entre 35 a 500 ns. Las mejoras obtenidas con la
tecnología CMOS han resultado en tiempos de acceso en el rango de 20 a 60 ns, por lo que es muy raro que
en la actualidad se produzcan memorias bipolares y NMOS.
Otro parámetro importante de sincronización es el tiempo de habilitación de salida, tOE, que es el
retardo entre la activación de la entrada CS’ y la salida válida de datos. Los valores comunes de tOE son de 10
a 20 ns para ROM bipolar, de 25 a 100 ns para NMOS y de 12 a 50 ns para CMOS. Este parámetro de
sincronización es importante en situaciones en las que las entradas de dirección ya están establecidas con sus
nuevos valores, pero las salidas ROM aún no han sido habilitadas.

3.2. Tipos de ROMs


Existen diferentes tipos de memoria ROM de acuerdo a que la misma pueda o no ser programada,
borrada y reprogramada. Analizaremos la implementación básica de los diferentes tipos de ROMs para
comprender fundamentalmente porqué estas memorias se comportan como “no volátiles” y ver cómo
difieren en la forma en que son programadas, borradas y reprogramadas.

3.2.1. Memoria ROM de Máscara


Esta memoria se conoce simplemente como ROM y se caracteriza porque la información contenida
en su interior se almacena durante su construcción y no se puede alterar. Son memorias ideales para
almacenar microprogramas, pequeños sistemas operativos (programas monitores, bootstraps), tablas de
conversión, tablas de caracteres, tablas de funciones matemáticas, etc.
Las memorias ROM se pueden implementar con sólo un transistor por célula o celda de memoria (bit
de memoria) o de forma más sencilla aún, con sólo un diodo por celda de memoria, de tal forma que si el
diodo existe se lee un “1” y si no existe se lee un “0”. Esto explica la no volatilidad de la memoria.
Estas celdas de memoria se organizan en grupos para formar registros del mismo tamaño y éstos se
ubican físicamente formando un arreglo de matriz columna. En la figura 4-4 se muestra, a modo de ejemplo
muy sencillo, la estructura de una ROM de matriz de diodos pequeña con una capacidad de 4 x 4, esto es,
4 registros o palabras de memoria de 4 bits cada uno (16 bits de memoria en total).
Está constituida por 4 filas y 4 columnas de hilos conductores que no hacen contacto eléctrico en sus
intersecciones. Cada intersección constituirá una celda de memoria. En algunas de estas intersecciones puede
existir un diodo con su ánodo conectado a la correspondiente columna y su cátodo conectado a la
correspondiente fila. Así, cada bit de la memoria está constituido por la presencia o ausencia de un diodo en
cada intersección y cada fila constituye un registro de 4 bits.

79
Introducción a los Sistemas Digitales II

Figura 4-4 Estructura de una ROM de matriz de diodos con una capacidad de 4 registros o palabras de memoria de 4 bits
cada uno (16 bits de memoria en total).

Las filas están conectadas a las salidas de un decodificador de 2 a 4 activo en cero, de manera que
todos los cátodos de los diodos correspondientes a una misma fila están conectados a la misma salida del
decodificador. Las columnas están conectadas a la fuente de alimentación Vcc a través de sendas
resistencias, de manera que todos los ánodos
ánodos de los diodos de la matriz están conectados a Vcc.
Note que las salidas de datos O3 O2 O1 O0 están conectadas a las líneas de columna a través de un
buffer inversor triestado de 4 bits. De esta manera, y de acuerdo al código binario introducido en la entrada
e
del decodificador (dirección de memoria), la salida del decodificador que se haya activado seleccionará el
registro correspondiente, colocando un “0” sobre dicha fila (es decir una conexión a tierra -0 volt- a través
del transistor inferior de la salida
lida totem pole del decodificador, que se encuentra saturado), mientras que las
otras salidas del decodificador colocarán un “1” sobre el resto de las filas (es decir una conexión a Vcc a
través de una resistencia de bajo valor y del transistor superior de la salida totem pole de la correspondiente
salida del decodificador, que se encuentra saturado). Así, todos los diodos pertenecientes al “registro
seleccionado” quedarán polarizados en forma directa imponiendo una tensión de aproximadamente 0,7 V
sobre lass columnas correspondientes; esta tensión es aplicada sobre las entradas de los búferes inversores
triestado que se corresponden con dichas columnas, obteniéndose en las salidas de estos búferes un “1”
cuando se active la señal de entrada CS’. Por el contrario,
contrario, una celda del “registro seleccionado” que no posea
diodo, impone la tensión Vcc sobre la columna correspondiente; esta tensión es aplicada sobre la entrada del
búfer inversor triestado que se corresponde con dicha columna obteniéndose en la salida del d búfer un “0”
cuando se active la señal de entrada CS’. Nótese que esto es así por más que dicha columna, en otro punto de
su recorrido, esté conectada al ánodo de un diodo, ya que dicho diodo, al pertenecer a un registro que no está
seleccionado, quedaráá despolarizado (su cátodo estará conectado a Vcc a través de la correspondiente salida
del decodificador) y no podrá imponer una tensión de 0,7 V sobre la columna.
En resumen:
• Sii la celda de memoria del registro “seleccionado” contiene un diodo, el diodo queda polarizado en forma
directa y el bit almacenado se corresponde con un “1”.
• Sii la celda de memoria del registro “seleccionado” no contiene un diodo, el bit almacenado se
corresponde con un “0”.
• Los
os diodos de los registros “no seleccionados” quedarán despolarizados y no impondrán ningún valor
lógico sobre la correspondiente columna.

80
Introducción a los Sistemas Digitales II

• Las celdas de memoria de los registros “no seleccionados” que no contengan diodo no impondrán ningún
valor lógico sobre la correspondiente columna.
• La palabra de datos almacenada en el registro seleccionado se volcará sobre las líneas de salida de datos
sólo cuando la señal de entrada de control CS’ esté activa en nivel BAJO (CS’ = 0).

En la tabla de la figura 4-5 se muestran los datos almacenados en la matriz de diodos ROM del
ejemplo de la figura 4-4. Los datos del registro seleccionado estarán presentes en la entrada del búfer
triestado de 4 bits y se colocarán sobre las salidas externas de datos O3 O2 O1 O0 del CI, cuando CS’ (CS
negado) esté en valor BAJO. De otro modo la salida de datos de la memoria permanece en un estado de Hi-Z
o desconexión eléctrica.

Líneas de Entrada
Nº de Registro Líneas de Salida de Datos
CS’ de Direcciones
Seleccionado
A1 A0 O3 O2 O1 O0
0 0 0 0 1 1 0 1
0 1 0 1 0 1 1 0
0 2 1 0 1 0 0 1
0 3 1 1 1 1 1 0
1 x x x Hi-Z Hi-Z Hi-Z Hi-Z

Figura 4-5 Tabla con los valores almacenados en la matriz de diodos ROM del ejemplo de la figura 4-4

Figura 4-6 (a) Celda de memoria ROM TTL; (b) Celda de memoria ROM NMOS.

En la figura 4-6 a) se muestra una celda de memoria correspondiente a una estructura de memoria
ROM TTL y en la figura 4-6 b) la correspondiente a una estructura de memoria ROM NMOS. Las bases de
los transistores bipolares y las puertas de los transistores MOSFET de canal N de una misma fila están
conectadas a una misma salida del decodificador (en este caso es un decodificador activo en uno), de manera
que cuando dicha salida se active los transistores conduzcan imponiendo una tensión de valor ALTO sobre
las columnas correspondientes; si la celda no contiene transistor, se impone una tensión de valor BAJO dada
por la conexión de la respectiva resistencia a tierra.
Este tipo de ROM no se puede reprogramar cuando tiene lugar un cambio de diseño que requiera una
modificación de los datos almacenados. En ese caso se tendría que reemplazar la ROM por una nueva con
los datos que se requieran escritos en ella. Para superar esta desventaja de la ROM de máscara, se han
desarrollado varios tipos de ROM que pueden ser programadas por el mismo usuario. Sin embargo, cuando

81
Introducción a los Sistemas Digitales II

se necesitan grandes volúmenes de CIs de memoria ROM programadas de forma idéntica, este tipo de ROM
sigue representando la opción más económica, ya que el costo se prorratea entre muchas unidades.

3.2.2. Memoria PROM


La memoria PROM (Programmable ROM) o memoria ROM programable, no se programa durante el
proceso de fabricación, sino que la programación la efectúa el usuario y se puede realizar una sola vez,
después de la cual no se puede borrar o volver a almacenar otra información en ella. La estructura de una
PROM es muy similar a la de una ROM de máscara. En la figura 4-7 se muestra a modo de ejemplo, parte de
la estructura de una PROM de matriz de diodos que aún no ha sido programada. La misma tiene una
capacidad de 4 x 4, esto es, 4 registros o palabras de memoria de 4 bits cada uno (16 bits de memoria en
total).

Figura 4-7 Diagrama esquemático de la estructura de una PROM de matriz de diodos que aún no ha sido programada. La
memoria tiene una capacidad de 4 registros de 4 bits cada uno (16 bits de memoria en total).

Como puede observarse de la figura, la matriz de diodos posee la misma estructura vista para la
memoria ROM de máscara, con la diferencia de que los diodos están presentes en todas las intersecciones de
la matriz, por lo que todas las celdas de memoria del CI tienen un “1” almacenado. De esta forma, para
conseguir el patrón de bits deseado, deberemos “fundir” o “destruir” los diodos que estén ubicados en las
intersecciones o celdas de memoria en donde queremos almacenar o grabar un “0”, de tal manera que la
correspondiente fila y columna queden electricamente desconectadas (notar que un diodo “fundido” se
comporta como un circuito “abierto” entre sus terminales). Para realizar esta programación deberemos
inyectar una corriente de una magnitud suficiente para poder fundir al diodo seleccionado y así crear un “0”

82
Introducción a los Sistemas Digitales II

almacenado; el diodo se deja intacto para crear un “1” almacenado. Decimos entonces que el proceso de
programación es destructivo, es decir, que una vez grabada, es como si fuese una ROM de máscara.
En una PROM, las líneas de datos deben ser bidireccionales para poder permitir el ingreso de los
datos a ser almacenados al momento de la programación de la memoria; por lo tanto, como se muestra en la
figura 4-7, el búfer de salida de la PROM debe ser, además de triestado, bidireccional. Las entradas de
control CE’ y OE’ son las que controlan el comportamiento del búfer. Cuando la entrada CE’ (Chip Enable
negada = habilitación del chip activa en valor BAJO) se coloca en valor BAJO, ambas compuertas OR
tendrán un “0” aplicado en una de sus entradas; en estas circunstancias, si la señal OE’ (Output Enable
negado = habilitación de salida activa en valor BAJO) se coloca en valor BAJO, entonces la salida de la
compuerta OR1 se coloca en “0” y coloca al grupo de búferes de salida en baja impedancia (Low-Z o estado
de conexión eléctrica) y la memoria está en estado de lectura (la salida de la OR2 está en “1” y los búferes de
entrada de datos en Hi-Z). Cuando la entrada CE’ se coloca en “1”, las salidas de ambas compuertas OR se
colocan en “1” y todos los búferes triestado permanecen en Hi-Z con lo que el integrado queda
electricamente desconectado del bus de datos del sistema.
El proceso de programación se realiza por registro o palabra de memoria, es decir que se selecciona
una posición de memoria y se “queman” los diodos del registro en donde se quiere grabar un “0”. El
integrado posee una terminal de entrada “Vpp” que se conecta a una tensión de 10 a 30 V (dependiendo del
integrado en particular) y una entrada PGM’ (ProGraM negado = programación activa en valor BAJO) que
cuando es activada aplica la tensión Vpp (10 a 30 V) sobre los diodos (o celdas de memoria) que se quieren
“quemar”, para que así circule por ellos una magnitud de corriente suficiente para poder fundirlos (en la
figura 4-7 no se muestran los circuitos encargados de aplicar esta tensión Vpp sobre los diodos). Para esto
debemos seguir los siguientes pasos: (1) colocar sobre las líneas de entrada de direcciones, la dirección del
registro de memoria a grabar; (2) colocar sobre las líneas de salida/entrada de datos, el dato a ser almacenado
en el registro seleccionado; (3) CE’ se mantiene en valor BAJO y OE’ se mantiene en ALTO (con esto se
coloca al grupo de búferes de entrada en baja impedancia para que las líneas de salida / entrada de datos
funcionen como líneas de entrada de datos); (4) la entrada PGM’ se mantiene en BAJO durante un breve
tiempo (este tiempo depende del integrado en particular y está alrededor de los 100 microsegundos) con lo
que se consigue la aplicación de la tensión Vpp sobre los diodos del registro seleccionado que se pretenden
quemar (ceros del dato a ser almacenado); (5) se repite la secuencia para todas las ubicaciones de memoria
del integrado.
Esto puede hacerse de forma manual, pero puede tomar mucho tiempo dependiendo de la cantidad de
datos a grabar. Por lo general se realiza en forma automática mediante un dispositivo dedicado a tal fin
llamado programador PROM. El chip de PROM se conecta al dispositivo programador a través de un zócalo
apropiado a su distribución de pines y señales. Los datos que se quemarán en la PROM se ingresan al
programador mediante un teclado o bien se transfieren desde una computadora. Esta última operación,
llamada descarga, permite que el usuario desarrolle y pruebe el programa-datos en una computadora y luego
lo transfiera de la memoria de la computadora al programador PROM. La circuitería del programador
selecciona cada dirección de la PROM, quema los datos correctos en esa dirección, verifica los datos y
continúa la secuencia con la siguiente dirección para repetir el proceso. En la figura 4-8 se muestra la imagen
de un programador universal para este tipo de chip de memoria.

Figura 4-8 Programador universal para CIs de


memoria.

83
Introducción a los Sistemas Digitales II

Por cuestiones didácticas y de simplicidad, se han presentado las estructuras de las memorias ROM y
PROM como conformadas por diodos, pero de hecho, en la práctica, las celdas de memoria están
constituidas por transistores bipolares -Tecnología TTL- o por transistores del tipo MOSFET -Tecnología
CMOS-. Ambas tecnologías presentan una estructura interna similar a la ya vista. Actualmente muy pocas
memorias PROMs bipolares están aún disponibles; casi todas usan tecnología CMOS. A modo de ejemplo,
en la figura 4-9 se muestra la estructura de dos celdas de memoria PROM NMOS. En la misma observamos
que las conexiones entre la terminal fuente de los MOSFETs de cada celda a la columna de salida se
implementa a través de un enlace de fusible que no es más que un muy delgado conductor formado sobre el
silicio, el cual se funde ante la circulación de una alta corriente a su través. De esta forma, ciertas conexiones
se dejan intactas o abiertas con el fin de programar una celda de memoria como un 1 o un 0 respectivamente.
El fabricante provee las PROMs con todos sus enlaces de fusibles intactos y el usuario puede elegir fundir
cualquiera de estos enlaces para producir el almacenamiento deseado de datos.

Figura 4-9 Celdas de memoria PROM NMOS con enlaces de fusibles que el usuario puede quemar para que queden
abiertos de manera selectiva para programar un cero lógico en la celda.

3.2.3. Memoria EPROM


La memoria EPROM (Erasable and Programmable ROM) o memoria ROM programable y borrable
es similar a la PROM con la diferencia que la información se puede borrar y volver a grabar por el usuario
tantas veces como se desee. Existen dos tipos de memoria EPROM de acuerdo a la forma en que estas
memorias pueden ser borradas, las UVEPROM y las EEPROM, tal como veremos a continuación.

3.2.3.1. Memoria UVEPROM


La memoria UVEPROM (Ultra Violet - Erasable and Programmable ROM) o memoria ROM
programable y borrable por luz ultra violeta, es una memoria EPROM, que como su nombre lo indica, es
borrable mediante la aplicación de una luz ultra violeta intensa que pasa a través de una ventana de cuarzo
transparente ubicada en la parte superior del empaquetamiento del chip y que permite que dicha radiación
llegue hasta el sustrato de silicio del CI. A esta memoria también se la conoce simplemente como EPROM.
En la figura 4-10 se muestran encapsulados UVEPROM comunes en donde puede observarse la ventana para
el paso de la luz ultravioleta que permite el borrado de de todo el contenido de la memoria. Se coloca una
etiqueta adhesiva sobre la ventana después del borrado y programación para protección contra borrado
accidental por la luz ambiental.

84
Introducción a los Sistemas Digitales II

Estas son memorias usadas como una ROM por extensos periodos de tiempo, borradas
ocasionalmente y reprogramadas cuando sea necesario. Una vez programada, la EPROM es una memoria no
volátil que mantendrá sus datos almacenados indefinidamente.

Figura 4-10 Encapsulados UVEPROM comunes que muestran la ventana para el paso de la luz ultravioleta.

La celda de memoria en una EPROM está constituida por un transistor del tipo de efecto de campo
MOSFET cuya compuerta (equivalente a la base de un transistor bipolar) es “flotante”, es decir que está
aislada electricamente del resto de sus terminales por un aislante de dióxido de silicio lo que hace que se
comporte como un capacitor capaz de almacenar una carga eléctrica que puede permanecer por años debido
a que no existe trayectoria de descarga. En su estado normal, cada transistor está descargado y cada celda
está almacenando un “1”. La aplicación de un pulso de alto voltaje en la celda de memoria seleccionada
inyecta electrones de alta energía en la región de compuerta flotante; estos electrones permanecen atrapados
en esta región y la celda queda almacenando un “0”, aún cuando se remueva la energía del dispositivo.
El proceso de programación por lo general se realiza mediante un circuito o dispositivo especial de
programación que se encuentra separado del circuito en el cual la EPROM estará instalada. Durante el
proceso de programación, las líneas de entrada de direcciones y datos de la EPROM se usan para seleccionar
qué celdas de memoria serán programadas como ceros y cuáles quedarán como unos. La programación
completa de un chip EPROM puede tomar varios minutos.
Cuando el aislante de dióxido de silicio, que mantiene a la compuerta del transistor aislada
electricamente, es expuesto a luz ultravioleta (UV) intensa, se vuelve un poco conductor y permite que la
carga almacenada en la compuerta sea removida. Esta luz UV produce una fotocorriente desde la compuerta
hacia el substrato de silicio y con ello remueve las cargas almacenadas. La luz UV es aplicada a través de
una ventana de cuarzo transparente que posee el empaquetado del CI. Para lograr el borrado de “toda” la
memoria se requiere exponer el chip a rayos UV durante 15 a 20 minutos. No existe forma de borrar celdas
seleccionadas; la luz UV borra todas las celdas al mismo tiempo, de modo que una UVEPROM borrada
almacena unicamente unos. Una vez borrada, la UVEPROM puede ser reprogramada.
En cuanto a la estructura interna de la matriz de registros, el búfer de salida, las señales de control
CE’, OE’, Vpp y PGM’ y los pasos a seguir en el proceso de programación, valen las mismas
consideraciones que para la memoria PROM a excepción, como ya se ha explicado, de que las celdas de
memoria que deben almacenar un “0” no se funden sino que se “cargan electricamente” al momento de la
programación, esto es, que la programación no es destructiva.
Las desventajas de estas memorias son la siguientes: (1) se las debe remover de su circuito para
poder borrarlas y reprogramarlas; (2) la operación de borrado actúa para todo el chip, no existe una forma de
seleccionar sólo ciertas ubicaciones de memoria para su borrado; (3) el proceso de borrado y reprogramación
por lo general puede tomar 20 minutos o más.

3.2.3.2. Memoria EEPROM


La memoria EEPROM (Electrically - Erasable and Programmable ROM) o memoria ROM
programable y borrable electricamente, es una memoria EPROM, que como su nombre lo indica, es borrable
electricamente.

85
Introducción a los Sistemas Digitales II

Este tipo de memoria es una mejora sobre la EPROM. Posee la misma estructura de compuerta
flotante de estas memorias pero con una modificación en los transistores que la componen y que constituye
la principal característica de la EEPROM: su capacidad de borrado eléctrico. Esta modificación consiste en
el agregado de una región de óxido muy delgada arriba del drenador de la celda de memoria MOSFET. En
forma similar a una EPROM, la aplicación de un voltaje alto (21 V) entre la compuerta y el drenador de un
transistor MOSFET que compone una celda de memoria, induce una carga eléctrica hacia la compuerta
flotante, carga que permanecerá aún cuando se suspenda la energía; la inversión de dicho voltaje causa la
remoción de las cargas almacenadas en la compuerta flotante y borra la celda. Debido a que este mecanismo
de almacenamiento y remoción de cargas eléctricas requiere intensidades de corriente muy bajas, la
programación y el borrado de una EEPROM se puede realizar dentro del mismo circuito en el que está
inserta la memoria (es decir, sin una fuente de luz ultravioleta ni con un dispositivo especial de
programación)
Otra ventaja de la EEPROM es su habilidad para borrar y reescribir bytes individuales en la matriz
de memoria. Durante una operación de escritura, la circuitería interna borra automáticamente todas las celdas
de memoria del registro de memoria seleccionado antes de escribir los nuevos datos. Esta capacidad de
borrar y reescribir un byte hace mucho más fácil realizar cambios en los datos almacenados en una
EEPROM.
Las primeras EEPROMs requerían circuitería de soporte externa a los chips de memoria. Esta
circuitería de soporte incluía la generación del voltaje de programación de 21V a partir comunmente de una
fuente de 5V y circuitería para controlar la sincronización y secuencia de las operaciones de borrado y
programación. Los dispositivos más recientes tienen integrada esta circuitería de soporte en el mismo chip
con la matriz de memoria, de modo que sólo requieren de una sola entrada de alimentación. Esto hace la
EEPROM tan fácil de usar como una memoria de lectura - escritura. De todos modos, se pueden conseguir
integrados EEPROM sin la circuitería de soporte y programarlos fuera del circuito en el que están insertos
usando dispositivos especiales de programación. En la figura 4-11 se muestra un integrado de memoria
EEPROM de una evolución intermedia, al cual se le llama “híbrido”, en el que se puede observar la matriz
de memoria y la circuitería de soporte integrada en el mismo chip (en realidad es una pequeña plaqueta que
incluye todos los circuitos y a la que se le agregan los pines de conexión de un integrado estándar);
actualmente todo esto viene integrado en una misma pastilla. En a figura 4-12 se muestra un dispositivo de
programación para EEPROMs.

Figura 4-11 Integrado de memoria EEPROM “híbrido” Figura 4-12 Dispositivo de programación para EEPROMs
con la matriz de memoria y la circuitería de
soporte.

La capacidad de borrado de un byte de la EEPROM y su alto nivel de integración tienen dos


desventajas: densidad y costo. La complejidad de la celda de memoria y la circuitería de soporte incorporada
en el chip ubican a las EEPROMs muy por debajo de las EPROMs en capacidad de bits por milímetro
cuadrado de silicio y costo. Por lo tanto, a pesar de su superioridad operacional, las desventajas de la
EEPROM en densidad y efectividad de costo han evitado que reemplace a la EPROM en aplicaciones en las
que la densidad y el costo son factores primordiales.

86
Introducción a los Sistemas Digitales II

3.3. Aplicaciones de la ROM.


Su uso está dado en aplicaciones en las que se necesita el almacenamiento no volátil de información,
datos o códigos de programación, y donde los datos almacenados rara vez, o nunca, cambian. A continuación
se presentan algunas de las áreas de aplicación más comunes:

Firmware:
La aplicación más extensa de las ROMs es en el almacenamiento de datos y códigos de programa
que deben estar disponibles al encender sistemas basados en microprocesadores. Estos datos y códigos de
programa se llaman firmware porque están firmemente almacenados en el hardware (es decir, son chips
ROM) y no están sujetos a cambio durante la operación normal del sistema.
Además de las computadoras, hay muchos sistemas basados en microprocesadores que usan
firmware ROM. Los productos para los consumidores, tales como automóviles, VCR, reproductores de
CD / DVD, hornos a microondas y otros, así como todo tipo de maquinaria de producción, tienen
microcontroladores implantados, los cuales constan de un microprocesador que controla y monitorea la
operación de acuerdo con programas y datos que están almacenados en ROM.

Memoria de arranque:
Muchas microcomputadoras y la mayoría de las computadoras grandes no tienen sus programas del
sistema operativo almacenado en ROM, sino que se almacenan en memorias masivas externas, por lo general
en un disco magnético. Entonces, para que el computador sepa qué realizar al ser encendido, se almacena en
ROM un programa relativamente pequeño llamado programa de arranque. Cuando enciende la computadora
se ejecutan las instrucciones que están en ese programa de arranque. Por lo general esas instrucciones causan
que la CPU inicie el hardware del sistema. Luego el programa de arranque carga los programas del sistema
operativo del almacenamiento masivo (disco) en su memoria interna. En ese punto la computadora comienza
a ejecutar el programa del sistema operativo y está lista para responder a los comandos del usuario. A este
proceso de inicio con frecuencia se lo llama “arranque del sistema”.

Tablas de datos:
Con frecuencia las ROMs se usan para almacenar tablas de datos que no cambian. Algunos ejemplos
son las tablas trigonométricas y las tablas de conversión de códigos. El sistema digital puede usar estas tablas
de datos para “buscar” el valor correcto.

Convertidor de datos:
El circuito convertidor de datos toma datos expresados en un tipo de código y produce una salida
representada en otro tipo. La conversión de códigos se necesita, por ejemplo, cuando una computadora o un
dispositivo digital dan salida a datos en código binario directo y se desea convertirlos a BCD para
visualizarlos en displays de siete segmentos. En uno de los métodos más fáciles de conversión de código se
usa una ROM programada, de manera que la aplicación de una dirección particular (el código de entrada)
produzca una salida de datos que represente el equivalente con el nuevo código.

Almacenamiento auxiliar:
Debido a que son no volátiles, a su alta velocidad, a sus requisitos de baja potencia y a que no tienen
partes móviles, los módulos de memoria instantánea (un tipo de EEPROM con la que se implementan los
llamados pen drives y las tarjetas de memorias) se han convertido en alternativas para el almacenamiento en
disco magnético. Esto es especialmente válido para bajas capacidades en las que la memoria instantánea

87
Introducción a los Sistemas Digitales II

compite en costo con el disco magnético. El bajo consumo de potencia de la memoria instantánea la hace
particularmente atractiva para computadoras portátiles que usan baterías.

4. Memoria RAM. Arquitectura interna.


Este tipo de memoria es volátil y perderá toda la información almacenada si se interrumpe o se
desconecta la alimentación. Sin embargo, algunas memorias RAM CMOS usan cantidades tan pequeñas de
energía en el modo de espera (cuando no se llevan a cabo operaciones de lectura o escritura) que se pueden
alimentar con baterías cuando la energía se interrumpe. La ventaja principal de esta memoria es que se puede
escribir o leer de ella rapidamente con igual facilidad.
El análisis de la memoria RAM que se hará a continuación se basa en parte del material que vimos
para la ROM, puesto que muchos de los conceptos básicos son comunes para ambos tipos de memoria. Al
igual que con la memoria ROM, es útil considerar a la RAM como si constara de un número de registros,
cada uno almacenando una sola palabra de datos y con una dirección única. Las RAMs por lo general vienen
con capacidades de palabra 1K, 4K, 8K, 16K, 64K, 128K, y 1024K, y con tamaños de palabra de 1, 4 u 8
bits. Como veremos más adelante, la capacidad de palabra y el tamaño de palabra se pueden expandir
combinando chips de memoria. En la figura 4-13 se muestra un diagrama funcional simplificado de la
arquitectura interna (estructura) de un CI de memoria RAM con una capacidad de almacenamiento de 1024
registros de memoria o palabras de datos de 8 bits cada una (1K x 8). Las diferencias con la arquitectura vista
para la ROM residen en la implementación de los registros de la matriz de memoria y en el buffer de salida.
Esta es una memoria de lectura / escritura, de modo que sobre cada registro se deberá poder leer y
escribir datos con la misma facilidad. Básicamente existen dos formas de implementar las celdas de memoria
de los registros de una memoria RAM, lo que nos lleva a dos tipos de memoria: RAM Estática (SRAM) y
RAM Dinámica (DRAM) que veremos a continuación.

8 bits desde / hacia la celda de


memoria seleccionada

0
1
2
A0 3
A1
A2 Matriz de I/O0
Exitadores
Memoria de
Desde las bidireccionales I/O1
1024 x 8 8 líneas de
líneas menos (buffer
Decodificador datos desde /
significativas bidireccional)
de Direcciones (1024 hacia el uP
del bus de con control de
de 10 a 1024 celdas de (a través del
direcciones alta impedancia
memoria de bus de datos
del uP o “tercer
8 bits cada D0 a D7)
estado”
una)
I/O7
A9

1021
1022
1023

WE CS

Diagrama funcional de una memoria Habilitación de Selección del Integrado (del


escritura sobre la circuito de decodificación
RAM de 1024 x 8. memoria de direcciones de memoria)

Figura 4-13 Diagrama funcional simplificado de la arquitectura interna de un CI de memoria RAM con una capacidad de
almacenamiento de 1024 palabras de datos de 8 bits cada una (1K x 8).

Para permitir la escritura y lectura de los registros, las líneas de datos de estas memorias deberán ser
líneas bidireccionales, es decir que serán líneas de entrada / salida de datos y las denominaremos como
I/O7 I/O6 - - - I/O1 I/O0. Durante una operación de lectura, las líneas de entrada / salida de datos actúan
como salidas de datos, para volcar el contenido del registro seleccionado sobre el bus de datos. Durante una

88
Introducción a los Sistemas Digitales II

operación de escritura, las líneas de entrada / salida de datos actúan como entrada de datos, para almacenar
en el registro seleccionado el dato presente
presente en el bus de datos. Por lo tanto, el buffer de salida deberá también
ser bidireccional para permitir el flujo de información en ambos sentidos (escritura y lectura).
Se agrega entonces una nueva línea de control de entrada WE’ (Write Enable negada = habilitación
ha
de escritura) que actúa sobre el buffer de salida y la matriz de memoria para permitir la escritura sobre el
registro seleccionado cuando la misma es activada en valor BAJO.
El búfer bidireccional de la memoria estará conformado por ocho búferes
búfere bidireccionales triestado
(uno por cada bit de la palabra de datos); las entradas de control de los búferes de salida están conectados a
un mismo punto, al igual que las entradas de control de los búferes de entrada, siendo ambas líneas de
control manejadas
das por una lógica muy sencilla.

Figura 4-14 Búfer bidireccional para una memoria RAM con palabras de datos de 4 bits

En la figura 4-14
14 se muestra un búfer bidireccional de este tipo para una memoria con palabras de
datos de 4 bits, el cual puede ser expandido para cualquier cantidad de bits (se muestra el de 4 bits
simplemente por una cuestión de sencillez).
Las entradas de control CS’ (Chip Select negada = selección del chip activa en valor BAJO) y
WE’’ (Write Enable negado = habilitación de escritura activa en valor BAJO) son las que controlan el
comportamiento del búfer. Cuando la entrada CS’ se coloca en “1”, las salidas de ambas compuertas OR se
colocan en “1” y todos los búferes triestado permanecen
permanec en Hi-Z Z con lo que el integrado queda
electricamente desconectado del bus de datos del sistema. Se dice entonces que el chip de memoria está
deshabilitado.. Caso contrario, cuando la entrada CS’ se coloca en valor BAJO, se dice que el chip de
memoria está seleccionado y ambas compuertas OR tendrán un “0” aplicado en una de sus entradas; en estas
circunstancias, si la señal WE’ se coloca en valor ALTO, entonces la salida de la compuerta OR1 se coloca
en “0” y coloca al grupo de búferes de salida en baja impedancia
im (Low-Z Z o estado de conexión eléctrica) y la
memoria está en estado de lectura (la salida de la OR2 está en “1” y los búferes de entrada de datos en Hi-Z);
Hi
de otro modo, con WE’ en valor BAJO, es la salida de la compuerta OR2 la que se coloca en “0” “0 colocando
al grupo de búferes de entrada en baja impedancia quedando la memoria en estado de escritura (la salida de
la OR1 queda en “1” y los búferes de salida de datos en Hi-Z).
Hi Z). En la tabla de la figura 4-15
4 se resume el
funcionamiento de este búfer triestado
iestado bidireccional.

CS’ WE’ Búferes de lectura Búferes de escritura Consecuencia


CI seleccionado para escribir sobre
0 0 Hi-Z Habilitados (Low-Z)
uno de sus registros
CI seleccionado para leer uno de sus
0 1 Habilitados (Low-Z)
(Low Hi-Z
registros
1 x Hi-Z Hi-Z CI no seleccionado

Figura 4-15 Tabla que indica el funcionamiento del búfer triestado bidireccional de la figura 4-14.
4

89
Introducción a los Sistemas Digitales II

Al igual que para la memoria ROM, los nombres asignados a las líneas del bus de direcciones y a las
líneas de entrada de direcciones del CI son las mismas, siendo A0 la línea de menor peso (20), A1 la línea de
peso inmediato superior (21) y así sucesivamente hasta completar el correspondiente conjunto de líneas.
En forma similar, la línea de entrada / salida de datos I/O0 del chip de memoria se corresponde con
el “bit 0” o bit menos significativo del registro de memoria seleccionado en el chip; la línea de
entrada / salida de datos de I/O1 se corresponde con el bit de peso inmediato superior -bit 1- del registro
seleccionado y así sucesivamente hasta completar el conjunto de líneas de entrada / salida de datos y los bits
del registro seleccionado.
Por lo demás, son válidas todas las consideraciones hechas para la arquitectura y operación de la
memoria ROM.

4.1. RAM Estática (SRAM)


Las celdas de memoria RAM estáticas son en esencia Flip-Flops que permanecerán en un estado
específico indefinidamente (almacenan un bit), con la condición de que no se interrumpa la energía en el
circuito. Como ya vimos, estas celdas de memoria o FFs en este caso, están agrupadas de manera de
conformar un conjunto de palabras de datos o registros de una determinada longitud. Estos registros deberán
poder ser leídos y escritos, en distintos tiempos, con la misma facilidad y por lo tanto deberán ser registros
triestados como los ya estudiados en la unidad 3. A modo de ejemplo, en la figura 4-16 se muestran dos de
los registros triestado de 4 bits que forman parte de una matriz de memoria RAM. Las cuatro entradas y
salidas de datos de cada registro están conectadas a un bus de datos interno que transfiere los datos del
registro seleccionado hacia las líneas de entrada / salida, en el caso de una lectura, o bien transfiere los datos
presentes sobre las líneas de entrada / salida al registro seleccionado, en el caso de una escritura. Notar que
en este caso no necesitamos de un búfer bidireccional en la salida, ya que como veremos al analizar el
funcionamiento, son los mismos registros triestados y la inhabilitación del decodificador de direcciones, a
través de la entrada CS’, los que cumplen con dicha función. Si la entrada CS’ está en valor ALTO, el
decodificador de direcciones está inhabilitado, con lo que todas sus salidas permanecen en cero (ya que se
trata de un decodificador activo en uno). Esto hace que las salidas de todas las compuertas AND de todos los
registros (0a, 0b, 1a, 1b, etc.) permanezcan en cero, con lo que las entradas de todos los registros de la matriz
quedan inhabilitadas (ya que no hay flanco de sincronismo) y las salidas de todos los registros de la matriz
quedan en estado de alta impedancia. Como resultado de esto, las líneas de entrada / salida de datos del chip,
que se corresponden con el bus interno del mismo, quedan desconectadas electricamente del bus de datos del
sistema y decimos que el chip de memoria está deshabilitado. Caso contrario, cuando CS’ = 0, el
decodificador de direcciones está habilitado y sólo una de sus salidas se activa colocándose en valor ALTO.
Supongamos que sea la salida S0 la que se encuentra activa, entonces se coloca un uno sobre una de las
entradas de ambas compuertas AND 0a y 0b del registro Nº 1 y decimos que se ha seleccionado dicho
registro, ya sea para leer o escribir, esto en función del valor de la entrada WE’. Así, si WE’ = 0, se coloca, a
través del negador, un uno en la otra entrada de la compuerta AND 0a y la salida de esta compuerta se coloca
en “1” generando en ese momento la activación de la señal de sincronismo de los FFs y produciéndose en
consecuencia la escritura o almacenamiento en el registro de los datos presentes en la entrada del mismo (la
salida de la compuerta AND 0b se encuentra en cero y los búferes de salida en Hi-Z). De otro modo, si
WE’ = 1, la salida de la AND 0a se mantiene en cero y no se genera señal de sincronismo alguna, pero en
cambio, la salida de la AND 0b se coloca en uno y los búferes de salida se mantienen en el estado de baja
impedancia, con lo que se puede leer el contenido de dicho registro seleccionado. Como el resto de las
salidas del decodificador permanecen en cero, los otros registros permanecen inhabilitados para la lectura y
escritura. Así, vemos que con esta estructura de matriz de registros triestado el chip de memoria puede ser
seleccionado / inhabilitado sin necesidad de un búfer bidireccional triestado.

90
Introducción a los Sistemas Digitales II

I/O1 I/O3
I/O0 I/O2

I3 I2 I1 I0
IE
0a
Clk SET SET SET SET
D Q D Q D Q D Q

CLR Q CLR Q CLR Q CLR Q


FF3 FF2 FF1 FF0
Decodificador
OE
0b
S0 REGISTRO 0 O3 O2 O1 O0
S1

A0

A1

An
I3 I2 I1 I0
IE
1a
Clk D
SET
Q D
SET
Q D
SET
Q D
SET
Q

S2n+1
CLR Q CLR Q CLR Q CLR Q
FF3 FF2 FF1 FF0
EN’
OE
1b
REGISTRO 1 O3 O2 O1 O0
CS’

WE’

Figura 4-16 Implementación circuital de una SRAM que muestra dos de los registros triestado de 4 bits que forman parte de
su matriz de memoria.

4.2. RAM Dinámica (DRAM)


Mientras que la celda de memoria en una SRAM es un FF que retiene la información mientras el
biestable esté energizado, la celda de memoria de una DRAM consiste en un simple transistor MOSFET que
almacena la información como una carga eléctrica acumulada entre la compuerta y el sustrato del transistor,
tal que se comportan como un capacitor. Debido a la autodescarga de este capacitor usado como elemento de
memoria, la información almacenada en una celda DRAM durará unos pocos milisegundos, aún cuando la
memoria esté energizada, y por lo tanto se requerirá la recarga de la información de manera periódica; a esto
se le llama regeneración o refresco de la memoria dinámica. En chips de memoria DRAM modernos, cada
celda de memoria se debe regenerar por lo general cada 2, 4 u 8 milisegundos, caso contrario se perderán sus
datos.
La necesidad de regeneración o refresco es una desventaja de la RAM dinámica en comparación con
la RAM estática, debido a que se puede requerir circuitería de soporte externa al chip de memoria. Algunos
chips DRAM vienen con la circuitería de control para la regeneración ya incorporada y no necesitan de
hardware externo adicional, pero sí requieren de una sincronización especial para las señales de control de

91
Introducción a los Sistemas Digitales II

entrada del chip. Además, esto hace que la velocidad de acceso a los datos sea baja en comparación con la
SRAM.
Las entradas de dirección de una DRAM se deben manejar en una forma menos directa que en la
SRAM, es decir que el direccionamiento de la memoria es más complejo y por ende el diseño de los circuitos
de decodificación también es más complejo.
Debido a que las celdas de la matriz de memoria están constituidas por simples transistores
MOSFET, la DRAM posee un menor consumo de potencia, una mayor densidad de memoria (lo que lleva a
un ahorro de espacio para una determinada capacidad de memoria) y un menor costo por bit. Así, cuando las
consideraciones de diseño más importantes son mantener bajos el tamaño, el costo y la cantidad de potencia
requerida, la memoria DRAM es la elegida.

4.3. SRAMs versus DRAMs


Debido a su estructura simple de celdas de memoria, las DRAMs por lo común tienen cuatro veces la
densidad de las SRAMs. Este incremento en la densidad permite una capacidad de memoria cuatro veces
mayor para colocarse en una sola tarjeta o, de manera alterna, requiere un cuarto de espacio en la tarjeta para
la misma cantidad de memoria. El costo por bit de almacenamiento en DRAM comúnmente es de un quinto a
un cuarto del de las SRAM.
Para aquellas aplicaciones en las que la velocidad y la menor complejidad en el diseño sean más
importantes que las consideraciones de costo, espacio y potencia, las SRAMs son las mejores. Son más
rápidas que las DRAMs y no requieren regeneración, lo que hace más simple el diseño. Así, las principales
aplicaciones de las SRAMs son en áreas donde sólo se necesitan cantidades pequeñas de memoria y/o donde
se requiere alta velocidad.
En la memoria principal o memoria interna de la mayoría de las computadoras personales, se usa
DRAM debido a su alta capacidad y bajo consumo de potencia. Sin embargo, en estas computadoras algunas
veces se usan pequeñas cantidades de SRAM para funciones que requieren máxima velocidad, como gráficas
de video, tablas de consulta y memoria caché.
En la tabla mostrada a continuación se indican las ventajas y desventajas de los dos sistemas de
memoria, lo cual permite seleccionar el tipo de memoria dependiendo de la aplicación.

Sistema de
Ventajas Desventajas
Memoria
• La velocidad de acceso es alta. • Menor densidad, debido a que cada
• Para retener los datos solo necesita celda de almacenamiento requiere más
SRAM estar energizada. transistores.
• Son más fáciles de diseñar. • Mayor costo por bit.
• Mayor consumo de Potencia.
• Mayor densidad. • La velocidad de acceso es baja.
• Menor costo por bit. • Necesita regeneración o refresco de la
DRAM
• Menor consumo de potencia. información almacenada para retenerla.
• Diseño complejo.

5. Conexionado de la memoria a la CPU.


Como ya dijimos, la memoria del computador puede estar formada por varios CIs que estarán
conectados al µP a través del bus del sistema (bus de direcciones, bus de datos, bus de control).

92
Introducción a los Sistemas Digitales II

Las líneas de salida de datos de todos los CIs de memoria ROM y las líneas de entrada / salida de
datos de todos los CIs de memoria RAM se conectan a las líneas del bus de datos del µP respetando el orden
de los pesos de las líneas de datos de todos los dispositivos. Así, la línea D0 del bus datos del µP se conecta a
todas las líneas de datos O0 e I/O0 de los CIs de memoria ROM y RAM y así continuando con el resto de las
líneas del bus hasta cubrir todas las líneas de datos de los CIs. Logicamente, la longitud de las palabras de
memoria de todos los CIs deberán tener la misma longitud que el bus de datos del sistema y nunca podrán
estar conectados electricamente al bus más de un CI, lo que se consigue manteniendo las líneas de datos de
todos los CIs en un estado de alta impedancia excepto las del CI seleccionado para intercambiar datos con el
µP. Esto se consigue mediante la apropiada activación de la señal de entrada de selección CS’ de cada
integrado; la generación de estas señales de control es llevada a cabo por los circuitos de decodificación de
direcciones de memoria que estudiaremos a continuación.
Las entradas a estos circuitos de decodificación de direcciones de memoria provienen de las líneas de
mayor peso del bus de direcciones del µP y que no ingresan a las líneas de entrada de direcciones de los
chips de memoria y de algunas de las líneas del bus de control del µP. Las salidas de estos circuitos de
decodificación, como ya se dijo, constituyen las entradas CS’ de los integrados de memoria.
Las líneas de entrada de direcciones de todos los CIs de memoria (ROM y RAM) se conectan a las
líneas de menor peso del bus de direcciones del µP, respetando el orden de los pesos de las líneas de
direcciones de todos los dispositivos (la línea A0 del bus direcciones del µP se conecta a todas las líneas de
entrada de direcciones A0 de los CIs de memoria y así continuando con el resto de las líneas del bus hasta
cubrir todas las líneas de entrada de direcciones de los CIs). Así, podemos decir que hay una conexión del
tipo paralelo de las líneas de entrada de direcciones de los CIs con respecto al bus de direcciones y de esta
forma, cuando el µP vuelca una dirección sobre este bus, ingresa la misma información de dirección de
memoria a todos los CIs; en todos los CIs se seleccionará un registro de memoria con la misma ubicación
relativa (por ejemplo, queda seleccionado el quinto registro de memoria en cada CI) pero sólo uno de estos
registros de memoria quedará habilitado para intercambiar información con el µP a través de bus de datos
(en el caso de una lectura, el contenido del registro es volcado sobre el bus de datos y en el caso de una
escritura el dato establecido sobre el bus será almacenado en dicho registro de memoria). El registro
habilitado será aquel perteneciente al CI seleccionado, el que colocará sus líneas de entrada / salida de datos
en baja impedancia a través de la activación de la señal de entrada de selección CS’. Para poder realizar la
selección del correspondiente CI se utilizan entonces las líneas del bus de direcciones que no ingresan a los
chips de memoria, más las líneas del bus de control que establecen que la dirección corresponde
efectivamente a memoria.

5.1. Líneas de control usadas en la decodificación de


direcciones
Para que los circuitos de decodificación de direcciones de memoria y módulos de E/S puedan
habilitar al dispositivo correcto, necesitan saber si la transferencia de información que se debe llevar a cabo
actualmente -en respuesta a la ejecución de una determinada instrucción- es entre el µP y memoria o entre el
µP y un módulo de E/S y además si dicha transferencia involucra una lectura o escritura sobre alguno de
dichos dispositivos. Esto se logra decodificando los valores que adoptan determinadas líneas del bus de
control y en el caso particular del µP Z-80 estas líneas son: MREQ’, IORQ’, RD’ y WR’.
El bus de datos del µP es único y por lo tanto bidireccional. Así, el µP puede estar leyendo una
información (flujo de datos hacia el µP) o escribiendo una información (flujo de datos desde el µP hacia
memoria o módulos de entrada / salida) lo cual se indica mediante la activación en valor bajo de una de las
señales de salida del bus de control RD’ o WR’ respectivamente, las cuales son excluyentes entre sí.
El bus de direcciones también es único y en él se vuelcan tanto “direcciones de memoria” como
“direcciones de E/S”. Las dos líneas de salida del bus de control del µP que indican si la dirección actual
presente en el bus de direcciones corresponde a un registro de memoria o a un registro de un módulo de E/S
o bien a una simple puerta de E/S son MREQ’ e IORQ’ respectivamente, ambas activas en valor bajo (como
indican sus negaciones) y excluyentes entre sí (sólo una de ellas puede estar activa a un tiempo).

93
Introducción a los Sistemas Digitales II

Cada una de estas señales de control es generada por el µP en respuesta a la ejecución de una
instrucción, de la siguiente manera:
• Si la instrucción involucra una lectura de memoria, se activan RD’ y MREQ’, como por ejemplo:
LD A , (5C4Fh) ; ADD A, (ED00h) ; etc.
• Si la instrucción involucra una escritura en memoria, se activan WR’ y MREQ’, como por ejemplo:
LD (64FFh), A ; LD (IX+5), B ; etc.
• Si la instrucción involucra la lectura de un registro de un módulo de E/S o lectura de una puerta de
entrada, se activan RD’ e IORQ’, como por ejemplo: IN A,(05d)
• Si la instrucción involucra la escritura en un registro de un módulo de E/S o escritura en una puerta de
salida, se activan WR’ e IORQ’, como por ejemplo: OUT (12),A

5.2. Decodificación de direcciones de memoria


La decodificación de una dirección de memoria consiste en tomar la dirección, “codificada” en
binario natural, que está presente en el bus de direcciones del µP y “decodificarla” en la forma apropiada
para determinar cuál es el registro físico al que hace referencia dicha dirección. Esto implica determinar cuál
es el CI que contiene el registro direccionado y la ubicación del registro dentro del CI, para que la
información contenida en dicho registro sea volcada sobre el bus de datos (en el caso de una ROM o RAM
en estado de lectura) o bien para que la información presente en el bus de datos sea almacenada en dicho
registro (caso de una RAM en estado de escritura).
En la mayoría de las aplicaciones de memoria, la capacidad de memoria RAM o ROM requerida por
el computador se satisface mediante el uso de varios CIs de memoria que se conectarán al µP a través del bus
del sistema, tal como se explicó en forma genérica en un apartado anterior. Estudiaremos ahora con mayor
detalle cómo se realiza esta interconexión de memoria con el µP y cómo se diseña el circuito de
decodificación de direcciones de memoria, que nos permitirá asignar una franja de direcciones exclusiva para
cada CI de memoria y controlar que, en todo momento, solamente un CI, o ninguno, esté conectado
electricamente al bus de datos, mediante la apropiada generación de las señales de habilitación o selección
para cada integrado.
Estudiaremos el diseño del banco de memoria de un computador valiéndonos de un ejemplo que
ilustra las ideas más importantes necesarias para el conexionado de la memoria con un microprocesador. Se
ha elegido un ejemplo en donde todos los CIs tienen la misma capacidad de memoria y tamaño de palabra.
De todas maneras, las técnicas que se presentan no son las únicas y se pueden ampliar a CIs de distinta
capacidad de memoria y tamaño de palabra a la mostrada en el ejemplo y también a un conjunto de CIs en
donde no todos posean la misma capacidad de memoria.

Ejemplo 4-1
Para un computador basado en un µP Z-80, se requiere implementar un total de memoria de 16K x 8.
De estos 16K implementaremos 4K para memoria ROM y 12K para RAM.
Para implementar esto se dispone únicamente de CIs de memoria ROM de 4K x 8 y CIs de
memoria RAM de 4K x 8.

Vemos entonces que los CIs para ambos tipos de memoria son de la misma capacidad y tienen el
mismo ancho de palabra del bus de datos del µP (8 bits). Así, para conseguir el total de memoria requerida
necesitaremos en total 4 de estos CIs: para la memoria ROM de 4k x 8 bastará con 1 CI de memoria ROM y
para la RAM necesitaremos combinar 3 CIs de memoria RAM de 4K x 8 para poder conformar la memoria
de 12K x 8 requerida. Todos los chips de memoria tendrán la misma cantidad de líneas de entrada de
direcciones y líneas de salida o entrada / salida de datos (todos tienen la misma capacidad de memoria y
tamaño de palabra) y la única línea de entrada que diferenciará a un tipo de integrado de memoria de otro
será la línea de habilitación de escritura WE’ para los CIs de memoria RAM. Como los integrados poseen

94
Introducción a los Sistemas Digitales II

una capacidad de 4K x 8 (4096 registros de memoria de 8 bits cada uno) tendrán 12 líneas de entrada de
direcciones (log2 4096 = 12 tal que 212 = 4096) y 8 líneas de datos (de salida para las ROM y de entrada /
salida para las RAM). El bus de direcciones del µP es de 16 líneas, lo que le da una capacidad de
direccionamiento de 216 bytes = 26 · 210 bytes = 64K bytes = 65.536 bytes (notar que la capacidad de
direccionamiento está dada en “bytes” ya que el bus de datos es de 8 bits). Es decir que sólo
implementaremos la cuarta parte del total de memoria que el µP puede direccionar. En la figura 4-17 se
muestra el mapa de memoria ampliado y en la figura 4-18 se muestra un mapa de memoria general del
sistema. Por último, en la figura 4-19 vemos el circuito completo del sistema que muestra la interconexión de
los CIs al bus del sistema y el circuito de decodificación de direcciones de memoria.

Líneas Externas Líneas Internas


A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 DIR DISP.

Desde 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0000H
ROM
Hasta 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0FFFH

Desde 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1000H RAM-


Hasta 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1FFFH 0

Desde 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 2000H RAM-


Hasta 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 2FFFH 1

Desde 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 3000H RAM-


Hasta 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3FFFH 2

Figura 4-17 Mapa de memoria ampliado del sistema del ejemplo 1.

0000H
ROM
0FFFH
1000H
RAM-0
1FFFH
2000H
RAM-1
2FFFH
3000H
RAM-2
3FFFH
4000H


No Implementado ⁞

FFFFH
Figura 4-18 Mapa de memoria general del sistema del ejemplo 4-1.

Lo primero que haremos será asignar una franja de direcciones exclusiva para cada CI de memoria,
tal como se muestra en los mapas de memoria de las figuras 4-17 y 4-18. En nuestro caso particular de usar
un µP Z-80, deberemos asignarle a la memoria ROM los primeros lugares partiendo desde la dirección de
memoria 0, ya que este µP, al ser encendido o reseteado, coloca su registro Contador de Programa, PC, en
cero y es entonces a partir de esa dirección de memoria en donde deben estar cargados los programas que
hacen operativo al sistema. De esta manera, a los registros de la ROM se le asignarán todas las direcciones
de memoria contiguas que van desde la 0000H hasta la 0FFFH correspondientes a las primeras 4096
direcciones (desde la 0d hasta la 4095d). Como ya se ha dicho, estas 4096 direcciones se conforman con 12
bits, es decir que se conforman con todas las posibles combinaciones de valores de las 12 líneas menos
significativas del bus de direcciones, A0 hasta A11, mientras que las líneas restantes del bus, A12 hasta A15,

95
Introducción a los Sistemas Digitales II

permanecen en valor BAJO. Las próximas 4096 direcciones, que van desde la 1000H hasta la 1FFFH, serán
asignadas al primer chip de memoria RAM (al que designaremos como RAM-0); estas direcciones también
se conforman, al igual que la ROM, con todas las posibles combinaciones de valores de las 12 líneas menos
significativas del bus de direcciones, A0 hasta A11, pero en este caso la línea A12 permanece en valor
ALTO mientras que el resto de las líneas desde A13 hasta A15 permanecen en valor BAJO. Así, al segundo
chip de memoria RAM (RAM-1), se le asignan las próximas 4096 direcciones, que van desde la 2000H hasta
la 2FFFH, y que también se conforman, al igual que las anteriores, con todas las posibles combinaciones de
valores de las 12 líneas menos significativas del bus de direcciones, A0 hasta A11, pero en este caso la línea
A12 permanece en valor BAJO y la línea A13 en valor ALTO, mientras que el resto de las líneas A14 y A15
permanecen en valor BAJO. Por último, al tercer chip de memoria, RAM-2, se le asignan las últimas 4K
direcciones del total de las 16K direcciones de memoria a asignar y que van desde la 3000H hasta la 3FFFH
y que también se conforman con todas las posibles combinaciones de valores de las líneas A0 hasta A12 del
bus de direcciones, permaneciendo en este caso la línea A12 y la línea A13 en valor ALTO, mientras que el
resto de las líneas A14 y A15 permanecen en valor BAJO.
En resumen, las primeras 12 líneas menos significativas del bus de direcciones, A0 a A11, se
utilizan para seleccionar uno de entre 4K registros de memoria en cada CI de memoria. Todas las posibles
combinaciones de valores de estas 12 líneas de menor peso se repiten para cada una de las cuatro
combinaciones de valores de las próximas dos líneas de pesos inmediatos superiores, A12 y A13, de manera
que cada combinación de valores de estas dos líneas identifica a uno de entre los cuatro CIs de memoria. De
esta manera, mientras que A13 = A12 = 0, las líneas A11 a A0 pueden presentar todas las combinaciones
posibles de valores para seleccionar una de los 4K registros de memoria del integrado de memoria ROM.
Cuando A13 = 0 y A12 = 1, los valores presentes en las líneas A11 a A0 seleccionan un registro de memoria
de la RAM-0. Cuando A13 = 1 y A12 = 0, se selecciona un registro de memoria de la RAM-1 y cuando
A13 = A12 = 1, se selecciona un registro de memoria de la RAM-2. Vemos entonces que para direccionar los
16K de memoria requeridos sólo hacen falta 14 de las 16 líneas del bus de direcciones (214 = 16K), desde A0
hasta A13, y así, como puede observarse del mapa de memoria, las dos líneas restantes, A14 y A15, se
mantienen en “cero”; cualquier otra combinación de valores que tomen estas dos últimas líneas más
significativas del bus, estarán haciendo referencia a direcciones de memoria mayores a 3FFFH, es decir, a
direcciones de memoria que no están fisicamente implementadas y su uso se reserva para el
direccionamiento de una futura ampliación de memoria.
En el circuito mostrado en la figura 4-19 vemos, como ya se explicó anteriormente, que las 12 líneas
menos significativas o de menor peso del bus de direcciones A0 hasta A11 se comparten entre todos los CIs
(es decir que estas 12 líneas ingresan como señales de entrada de direcciones a todos los CIs) por lo que en
todo momento habrá un registro de memoria seleccionado en cada uno de los integrados, con la misma
posición relativa. A este primer grupo de líneas de direccionamiento lo llamaremos líneas de
direccionamiento interno. Al resto de las líneas, A12 hasta A15, las llamaremos líneas de direccionamiento
externo y serán las encargadas de diferenciar un dispositivo de memoria de otro. Para nuestro caso, debemos
seleccionar uno de entre 4 dispositivos de memoria y para esto basta con dos líneas de dirección, ya que con
ellas conseguimos 22 = 4 diferentes combinaciones de unos y ceros que nos permiten realizar la
identificación de cada integrado de memoria. Esto lo conseguiremos tomando de las líneas de
direccionamiento externo, las dos líneas de menor peso, es decir A12 y A13, las que ingresan a un
decodificador de 2 a 4 activo en cero (la salida que se activa se coloca en valor bajo y las otras se mantienen
en valor alto). Las salidas de este decodificador se aplican a las entradas de selección CS’ de los integrados
de memoria. Así, por ejemplo, cuando A12 = A13 = 0, la salida 0 del decodificador se coloca en “cero”
(todas las otras se mantienen en “uno”) y habilita a la memoria ROM colocando sus líneas de salida de datos
en un estado de baja impedancia, volcándose en el bus de datos del sistema el contenido del registro de
memoria direccionado por las 12 líneas de direccionamiento interno A0 hasta A11; todos los otros integrados
de memoria quedan deshabilitados (líneas de datos en Hi-Z) ya que las otras salidas del decodificador se
mantienen en uno. Tal como puede observarse en el mapa de memoria, mientras que A12 = A13 = 0, las
líneas A11 a A0 pueden presentar todas las combinaciones posibles de valores y así el integrado de memoria
ROM responderá al siguiente rango de direcciones de 14 bits:
A13 – A0 = 00000000000000 a 00111111111111 = 0000H a 0FFFH

96
Introducción a los Sistemas Digitales II

De manera similar, cuando A13 = 0 y A12 = 1, el decodificador coloca su salida 1 en “cero”,


seleccionando así la RAM-O, la cual responde volcando en el bus de datos del sistema el contenido del
registro de memoria direccionado por las 12 líneas de direccionamiento interno A0 hasta A11 (o bien
almacenando en el registro seleccionado el contenido del bus de datos, si es el caso de una escritura). Las
otras salidas del decodificador se mantienen en “uno” y el resto de los integrados de memoria deshabilitados.
Así, RAM-0 responde al siguiente intervalo de direcciones:
A13 – A0 = 01000000000000 a 01111111111111 = 1000H a 1FFFH

Verifique el alumno los rangos de direcciones correspondientes para las ROM-1 y ROM-2.

D0 – D7

A0 – A11

ROM
DECODIFICA- O0 – O7
DOR

0 A0 – A11

A12 A 1 CS’

D0 – D7 A13 B 2
RAM-0
A0 – A15 3 I/O0 – I/O7
E

A0 – A11
WE’
CS’

uP
RAM-1
A14
I/O0 – I/O7
A15

A0 – A11
MREQ’ WE’
CS’

WR’
RAM-2
I/O0 – I/O7

A0 – A11
WE’
CS’

Figura 4-19 Circuito completo del sistema del ejemplo 1 que muestra la interconexión de los CIs al bus del sistema y el
circuito de decodificación de direcciones de memoria.

Como ya se analizó, para direccionar los 16K de memoria requeridos sólo hacen falta 14 líneas
(214 = 16K), con lo que las últimas dos líneas del bus de direcciones, A14 y A15, deben permanecer en
“cero” cuando se hace referencia a una dirección dentro del rango de los primeros 16K implementados, ya
que cualquier otra combinación de valores que tomen estará haciendo referencia a direcciones de memoria

97
Introducción a los Sistemas Digitales II

que no están fisicamente implementadas. Hay que tener en cuenta además que, como el bus de direcciones es
único y, dependiendo de la instrucción que se esté ejecutando, la dirección volcada sobre este bus puede ser
una dirección de memoria o una dirección de entrada / salida, por lo que dicha dirección será válida para
memoria sólo si la señal MREQ’ (Memory REQuest negada = requerimiento de memoria activa en valor
BAJO) del bus de control está activa. Por lo tanto, el decodificador deberá estar habilitado para seleccionar
uno de los CIs de memoria, sólo cuando todas estas líneas, A15, A14 y MREQ’ estén en valor bajo, es decir,
cuando A15 = A14 = MREQ’ = 0, condición que se consigue introduciendo estas líneas a la entrada de una
compuerta OR (la salida de la compuerta será “0” sólo cuando todas sus entradas sean “0”) y ésta será la
señal que usaremos para habilitar el decodificador. Ahora bien, la entrada de habilitación del decodificador
es E (Enable = habilitación activa en valor ALTO) por lo que debemos introducir un “1” en dicha entrada
para su habilitación y es por esto que colocamos un negador a la salida de la compuerta antes de introducir la
señal de habilitación al decodificador; lo mismo se logra reemplazando la compuerta OR y el negador por
una compuerta NOR. Cuando alguna de las líneas A15, A14 o MREQ’ se coloca en valor alto, la salida de la
OR se coloca en “1” y a la entrada E del decodificador ingresa un “0”, con lo que el decodificador se
deshabilita y todas sus salidas se desactivan colocándose en “1” (recordar que es un decodificador activo en
“0”) con lo que todos los integrados de memoria quedan inhabilitados o deseleccionados (todos los CS’
estarán en valor alto), colocando sus líneas de datos en un estado de alta impedancia (Hi-Z). Esto último
puede ocurrir porque A15 o A14 o ambas se colocaron en “1” mientras que MREQ’ se mantiene en “0”, lo
que significa que si bien la dirección presente en el bus es efectivamente para memoria, lo es para un registro
de memoria que no está fisicamente implementado en el circuito, es decir una dirección de memoria que está
por arriba de los 16K implementados. También puede ocurrir que sea la señal MREQ’ la que se haya
colocado en “1”, independientemente de los valores de A15 y A14, lo que significa simplemente que dicha
dirección no corresponde a memoria, sino que es una dirección de entrada / salida. Por último generamos la
señal MEMWR’ (MEMory WRite negada = escritura en memoria activa en valor BAJO) que ingresará a las
líneas de entrada WE’ (Write Enable negada = habilitación de escritura activa en valor BAJO) de todos los
integrados de memoria RAM. La activación de esta señal habilita la escritura sobre el registro direccionado
de un CI de memoria RAM, siempre y cuando el CI esté seleccionado (es decir, si CS’ = 0); de esta manera,
el dato que está presente en el bus de datos será almacenado en el chip de memoria seleccionado (en el
registro seleccionado por las líneas de direccionamiento internas) cuando así sea requerido por una
instrucción; esta señal es generada a la salida de una compuerta OR a la que ingresan las señales WR’ y
MREQ’ provenientes del bus de control del µP (la señal MEMWR’ se activa en valor bajo cuando
WR’ = MREQ’ = 0).

5.3. Expansión del tamaño de la palabra


En muchas aplicaciones de memoria la capacidad de memoria RAM o ROM requerida o el tamaño
de la palabra no se satisface mediante el uso de un solo chip de memoria. Se deben combinar varios chips de
memoria con el fin de proporcionar la capacidad y / o el tamaño de palabra. Ya vimos en un ejemplo anterior
cómo se hace para combinar varios chips de memoria con el objeto de satisfacer la capacidad de memoria
requerida. Veremos ahora, también a través de un ejemplo, cómo hacer para combinar varios chips de
memoria con el objeto de satisfacer el tamaño de palabra requerida. Como el ejemplo tiene el fin de ser
instructivo, el tamaño del chip de memoria fue elegido sólo para hacer más sencillos los dibujos. Las técnicas
presentadas se pueden ampliar a chips de memoria de mayor capacidad.

Ejemplo 4-2
Suponga que se necesita una memoria que pueda almacenar 16 palabras de 8 bits y sólo se dispone
de chips RAM de 16 x 4, es decir, CIs de memoria que poseen 16 registros de 4 bits cada uno. Para
implementar la memoria deseada, se pueden combinar dos de estos chips de 16 x 4 en una configuración tal
como la mostrada en la figura 4-20.
Debido a que cada chip puede almacenar 16 palabras de 4 bits y deseamos almacenar 16 palabras de
8 bits, se usa cada chip para almacenar la mitad de cada palabra. En otras palabras, RAM-0 almacenará los

98
Introducción a los Sistemas Digitales II

cuatro bits de orden superior de cada una de d las 16 palabras y RAM-11 almacenará los cuatro bits de orden
inferior de cada una de las 16 palabras. Para lograr esto conectaremos las líneas de entrada /salida de datos
del chip RAM-00 a las cuatro líneas más significativas del bus de datos, D7 a D4, y las l líneas de
entrada /salida de datos del chip RAM-1
RAM 1 a las cuatro líneas menos significativas del bus de datos, D3 a D0.
Las líneas de entrada de selección CS’ de ambos CIs se conectan a un mismo punto, de manera que ambos
chips sean seleccionados simultaneamente.
simultaneamente. De esta manera, cuando ambos CIs sean seleccionados, en cada
uno de ellos se seleccionará un registro de memoria con la misma ubicación relativa y que en conjunto
conformarán una palabra de 8 bits. En el caso de una lectura, la RAM-0
RAM 0 coloca el contenido
co de su registro de
4 bits seleccionado sobre las cuatro líneas superiores del bus de datos y la RAM-
RAM-1 coloca el contenido de su
registro de 4 bits seleccionado sobre las cuatro líneas inferiores del bus de datos. En el caso de una escritura,
los 4 bits
its superiores del dato establecido sobre el bus de datos serán almacenados en el registro de memoria
seleccionado de la RAM-00 y los 4 bits inferiores en el registro de memoria seleccionado de la RAM-1.
RAM

Figura 4-20 Combinación de dos CIs de memoria de 16 x 4 para expandir el tamaño de palabra y obtener un módulo de
memoria de 16 x8.

En esencia, la combinación de los dos chips RAM actúan como un chip de memoria individual de
16 x 8. A esta combinación la denominaremos
d módulo de memoria de 16 x 8. La misma idea básica para
expandir el tamaño de palabra funcionará para diversas situaciones.
---------------------------------------------------------

99

También podría gustarte