Apuntes Unidad 4 - Sistemas Digitales 2
Apuntes Unidad 4 - Sistemas Digitales 2
SISTEMAS DIGITALES II
APUNTES UNIDAD N° 4
DISPOSITIVOS DE MEMORIA
AÑO 2013
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.
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
76
Introducción a los Sistemas Digitales II
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
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.
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.
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.
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.
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.
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.
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.
86
Introducción a los Sistemas Digitales II
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.
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
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.
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.
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
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.
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.
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.
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.
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
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.
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
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
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).
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