COMPONENTES DE MEMORIZACIÓN 1.

Anuncio
COMPONENTES DE MEMORIZACIÓN
1.
2.
3.
4.
Registros
Contadores
Bancos de registros
Memorias
Objetivo fundamental:
- Almacenar datos
- Realizar transformaciones sencillas:
o Desplazar
o Contar
-------------------------------------------------------------------------------------------------------
1.- Registros
Es el componente de memorización más sencillo.
Un registro de n bits está formado por n biestables por lo que tendrá:
n entradas
n salidas
una señal de reloj común.
Tenemos 1 biestable por cada bit que queremos almacenar.
I3
I0
I1
I2
Pr
D3
Q3
D2
Q2
D1
Q1
D0
Q0
Clr
Clk
Este registro lo representaremos de la siguiente forma:
o Preset
I3 I2 I1 I0
o Clear
D3 D2 D1 D0
1
Registro de 4 bits con biestables tipo D y señales asíncronas de puesta a 1 (Preset (Pr)) y
puesta a cero (Clear (Clr)).
Preset: Todos a 1 cuando Pr = 0.
Clear: Todos a 0 cuando Clr = 0.
De ahora en adelante, las supondremos pero no las pintaremos.
Registros de desplazamiento
En el esquema anterior se almacena un dato automáticamente en cada flanco ascendente de
la señal de reloj.
Sin embargo, en la mayoría de los sistemas digitales, un dato se memoriza durante varios
ciclos de reloj antes de modificarlo. Por este motivo es útil poder controlar cuando ha de
introducirse el dato en el registro.
Esto se consigue con el uso de una señal de control denominada carga (load) o habilitación
(enable) que permite cargar un dato en el registro.
Los datos se pueden introducir y sacar en serie o paralelo. Además los datos se pueden
desplazar (shift) dentro del registro a la derecha o a la izquierda. Por tanto, podemos
distinguir diferentes tipos de registros:
-
Entrada paralelo / salida paralelo
-
Entrada serie / salida serie
Con desplazamiento a derecha
Con desplazamiento a izquierda
-
Entrada paralelo / salida serie
Éste es el más usado aunque podría ser
también con desplazamiento a la izquierda
2
-
Entrada serie / salida paralelo
Éste es el más usado aunque podría ser
también con desplazamiento a la izquierda
-
Rotación
Con desplazamiento a derecha
Con desplazamiento a izquierda
Entrada paralelo / salida paralelo
Está formado por multiplexores y biestables
Load
I3 I2 I1 I0
Load
0
1
D3 D2 D1 D0
I3
1
I2
0
1
Q3
I3
I1
0
1
Q2
Q1
No cambia
I2
I1
Q0
I0
I0
0
1
0
Load
D3
Q3
D2
Q2
D1
Q1
Q0
D0
Clk
3
Entrada serie / salida paralelo
Vamos a ver el caso con desplazamiento a la derecha.
Shift
IL
Shift
0
1
D3 D2 D1 D0
Q3
IL
Q2
Q1
No cambia
Q3
Q2
Q0
Q1
IL
1
0
1
0
1
0
1
0
Shift
D3
Q3
D2
Q2
D1
Q1
Q0
D0
Clk
4
Otros registros
Con esta idea podemos implementar otros registros de desplazamiento
S1
0
0
1
1
S0
0
1
0
1
Q3
Q2
Q1
No cambia
I2
I1
Q1
Q0
Q3
Q2
I3
Q2
IL
S1
IL
I3
3 2
1 0
Entrada paralelo / salida paralelo.
Entrada serie / salida paralelo. desplazamiento. izquierda
Entrada serie / salida paralelo. desplazamiento. derecha
I0
IR
Q1
I3 I2 I1 I0
S0
IL
Q0
IR
D3 D2 D1 D0
I2
3 2
1
IR I0
I1
0
3 2 1
0
3 2
1 0
S0
S1
D3
Q3
D2
Q2
D1
Q1
Q0
D0
Clk
5
2.- Contadores
Un contador es un tipo especial de registro que incorpora un circuito que permite contar de
forma ascendente o descendente.
Vamos a diseñar un contador de tres bits que dependiendo de la entrada “C”, realice una
cuenta ascendente (C = 1) o descendente (C = 0).
a.- Para diseñar un contador de tres bits necesitamos tres biestables.
b.- A continuación tenemos que hacer la tabla de transición de estados.
C
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
Q2
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
Q1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
Q0
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
Q2+
1
0
0
0
0
1
1
1
0
0
0
1
1
1
1
0
Q1+
1
0
0
1
1
0
0
1
0
1
1
0
0
1
1
0
Q0+
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
c.- Una vez sabemos el estado en el que nos encontramos y el estado al que queremos
pasar, basta con conocer la tabla de excitaciones de los biestables que hayamos decidido
utilizar para determinar sus funciones.
Supongamos que queremos utilizar biestables tipo T, cuya tabla de excitación es:
Q -> Q+
T
0
0
1
1
0
1
1
0
->
->
->
->
0
1
0
1
6
De esta manera hayamos las funciones de entrada de los tres biestables.
C
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
Q2
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
Q1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
Q2+
1
0
0
0
0
1
1
1
0
0
0
1
1
1
1
0
Q0
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
Q1+
1
0
0
1
1
0
0
1
0
1
1
0
0
1
1
0
Q0+
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
T2
1
0
0
0
1
0
0
0
0
0
0
1
0
0
0
1
T1
1
0
1
0
1
0
1
0
0
1
0
1
0
1
0
1
T0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
d.- El siguiente paso es minimizar mediante Karnaugh las funciones T2, T1 y T0.
Estas funciones tienen 4 variables de entrada: C, Q2, Q1 y Q0
Recordar que Q2+, Q1+ y Q0+ nos han servido para calcular T2, T1 y T0 pero ya no las vamos a
utilizar más.
T1
T2
CQ 2
Q 1Q 0
1
1
1
1
T0 = 1
1
1
1
1
T1 = C ´Q 0´+ CQ 0
CQ 2
Q 1Q 0
1
1
1
1
T2 = CQ 1Q 0 + C ´Q 1´Q 0´
7
e.- Por último, dibujamos el circuito
C
.
.
E
.
T0
Q0
.
.
T1
.
Q´0
Q2
T2
Q´2
Q´1
.
clk
.
Q1
.
Si la entrada E = 1, el circuito funciona tal y como lo hemos diseñado, pero si E = 0, todos los
biestables tendrán a su entrada un 0 y por tanto mantendrán su valor (paramos el contador).
Contador asíncrono
Se pretende eliminar las puertas entre los biestables, esto se consigue haciendo que cada
biestable cambie de estado a distinta frecuencia, por lo que no están sincronizados todos
por la misma señal.
E
.
T0
T1
Q0
Q´0
Q1
T2
Q2
Q´2
Q´1
clk
clk
Q0
E=1
Q1
Q2
000
001
010
011
100
101
110
111
000
8
Retardo de propagación
A los contadores asíncronos también se les conoce como contadores con propagación ya que
el efecto de un impulso de reloj en la entrada lo siente primero T0. Después del retardo
propio del biestable (está formado por puertas lógicas), pasa a T1 y así sucesivamente hasta
el último biestable.
Veamos el efecto con tres biestables en el paso 111 a 000.
Este retardo acumulativo de un contador asíncrono es
una de sus mayores desventajas.
Siempre ha de ser menor que el periodo de la señal de
reloj.
111
000
A partir de un cierto número de bits se puede optar por contadores de modo mixto.
Por ejemplo supongamos un contador de 8 bits. En lugar de optar por un solo contador hemos
optado por tener dos contadores de 4 bits.
Solución 1: Contadores síncronos sincronizados de forma asíncrona.
clk
E
.
E
Contador síncrono
Clear
Q3 Q2 Q1 Q0
E
Contador síncrono
Clear
Q3 Q2 Q1 Q0
.
clear
.. .
.
Solución 2: Contadores asíncronos sincronizados de forma síncrona.
E
clk
.
E
Contador asíncrono
Clear
clear
.
Q3 Q2 Q1 Q0
E
Clear
Contador asíncrono
Q3 Q2 Q1 Q0
.. ..
9
3.- Bancos de registros
Un banco de registros es una matriz bidimensional (2n x m) de celdas de biestables (RFC,
Register File Cells), decodificadores de lectura y escritura y una lógica de adaptación de
salidas.
Cada fila es un registro, formado por m celdas.
Tenemos 2n filas (registros).
La ventaja de tener los registros agrupados en una matriz es que se requiere menos
circuitería que si los tuviéramos separados.
RFC
.
Selección escritura
D
Q
.
Salida
Entrada
clk
Entradas a RFC:
- Bit de entrada
- Señal de selección de escritura
- Señal de selección de lectura
- Señal de reloj
Salidas del RFC:
- Bit de salida
Selección lectura
El biestable D memoriza el bit de entrada si “selección de escritura” = 1 si no, mantiene el
valor que tenía.
Si “selección de lectura” = 1, el valor del biestable pasa a la salida a través del adaptador
triestado.
E
/m
WA
n
n
/
/
WE
RA
RE
clk
/m
Decodificador de escritura: Si WE = 1, selecciona una de las
filas según WA y memoriza los valores de la entrada E
coincidiendo con el flanco ascendente del reloj.
Decodificador de lectura: Si RE = 1, selecciona una de las
filas según RA y la saca por la salida S.
Si RE = 0, todos los valores de la salida tendrán un valor de
alta impedancia.
S
10
E3
RFC
WA
WA
E1
E2
RFC
E0
RFC
RFC
1
1
0
RFC
RFC
RFC
RFC
RFC
RFC
RFC
RFC
RFC
RFC
RFC
RFC
0
RA
RA
WE
S3
S2
S1
RE
S0
No pintamos la señal de reloj para no complicar el dibujo.
La limitación principal del banco de registros es que de todos los registros que lo forman,
sólo podemos estar accediendo a uno de ellos para lectura y a uno para escritura en un
momento determinado.
Por esta razón, la mayoría de bancos de registros tienen dos decodificadores de lectura y
uno o dos de escritura ya que las operaciones normalmente requieren dos operandos y un
resultado.
Los bancos de registros son por lo general muy rápidos, pero tienen el inconveniente de ser
muy caros. Por este motivo se emplean en aplicaciones de alta velocidad y en
microprocesadores.
11
4.- Memorias
Hemos visto que los bancos de registros son de tamaño reducido, rápidos y apropiados para
la memorización temporal durante los cálculos.
Por otra parte, las memorias de acceso aleatorio (RAM: Random Acces Memory), son grandes
y más lentas, pero muy apropiadas para la memorización de programas y datos.
Al igual que los bancos de registros, las memorias están organizadas en matrices de (2n x m)
celdas de biestables (MC, Memory Cells), decodificadores de direcciones y una lógica de
adaptación de entradas/salidas, con la diferencia que en este caso, n es mucho mayor, y la
circuitería empleada para acceder a las celdas se reduce bastante.
Selección de fila
MC
.
Entrada
D
Q
Salida
Habilitación escritura
Entradas a MC:
- Bit de entrada
- Señal de selección de fila
- Señal de habilitación de escritura
Salidas del MC:
- Bit de salida
Para que la entrada se cargue en el biestable es necesario que tengamos permiso de
escritura (habilitación de escritura) y que hayamos seleccionado esa fila, entonces se
producirá un flanco ascendente que nos cargará el dato.
Para poder leer la salida es necesario que hayamos seleccionado esa fila.
12
Decodificador de
direcciones
0
MC
MC
MC
MC
MC
MC
MC
MC
MC
MC
MC
MC
MC
MC
MC
MC
1
A1
A0
2
3
RWS
CS
.
.
. .
IO 3
. .
IO 2
. .
IO 1
.
IO 0
CS = 1 La memoria opera normalmente.
CS = 0 Se inhabilita el funcionamiento de la memoria.
Habilitación de escritura (RWS). Selecciona el modo de operación de la memoria.
RWS = 1 Se escribe el contenido de la entrada (IO) en la memoria.
RWS = 0 Se lee el contenido de la memoria.
IO: Bus de datos. Línea que nos sirve tanto para introducir datos (escribir) como para
obtener datos (leer) de la memoria.
A: Bus de direcciones. Nos indica la fila a la que queremos acceder. Mediante el
decodificador de direcciones se activa la señal de selección de la fila
correspondiente.
13
Descargar