14-Maquinas Asincronicas

Anuncio
ELO211: Sistemas Digitales
Tomás Arredondo Vidal
1er Semestre – 2009
Este material está basado en:
❒ textos y material de apoyo:
Contemporary Logic Design 1st / 2nd edition. Gaetano
Borriello and Randy Katz. Prentice Hall, 1994, 2005
❒ material del curso ELO211 del Prof. Leopoldo Silva
❒ material en el sitio http://es.wikipedia.org
14: Asincrónicas
1
14-Maquinas Secuenciales Asincrónicas
14.1 Bases electrónicas para almacenar bits
14.2 Latch asincrónico R-S
14.3 Diseño de FFs en base a latches
14.4 Multivibrador aestable
14.5 Multivibrador monoestable
14: Asincrónicas
2
Bases electrónicas para almacenamiento de bits
❒ Los programas de computadoras usan memoria RAM
(Random Access Memory) para almacenar programas y
datos (bits) utilizados para la computación
❒ Ha habido una gran mejora en la densidad de
almacenamiento desde tubos a memoria
electromagnéticas (ferritas) a circuitos integrados
actuales (ICs: Integrated Circuits)
❒ Memoria volátil tiene que ser realimentada con
electricidad o se pierde toda la información cuando se
apaga la computadora
14: Asincrónicas
3
Bases electrónicas para almacenamiento de bits
❒ RAM volátil moderna almacena bits en una de dos
formas:
❍
❍
como cargas en condensadores (e.g. DRAM: Dynamic RAM)
como estados en flip flops (e.g. SRAM: Static RAM)
❒ DRAM tiene que ser refrescada periódicamente (e.g. el
standard JEDEC especifica cada 64ms o menos)
❒ Memorias no volátiles incluyen ROM, Flash, discos duros,
floppys, cintas magnéticas. Pueden o no ser secuenciales
y típicamente son mas caras y mas lentas que memorias
volátiles (e.g. DRAM)
❒ Otros tipos de memoria no volátiles siendo actualmente
desarrollados incluyen nanotubos de carbón y el efecto
de magnetoresistencia de tunnel (TMR)
14: Asincrónicas
4
Bases electrónicas para almacenamiento de bits (cont)
❒ DRAM es un tipo de RAM que almacena cada bit de datos en un
condensador separado
❒ Ya que los condensadores no ideales tienen perdidas de electrones
(cargas) la información eventualmente se pierde si no se refresca
❒ La ventaja de DRAM es que estructuralmente es mas simple, solo se
necesita un transistor y condensador por bit, esto permite una gran
densidad
❒ Ejemplo: Transistor NMOS (Negative-Channel Metal-Oxide
Semiconductor) usados para cargar un condensador
Control Acceso: 1/0
Datos: 1/0
14: Asincrónicas
5
Bases electrónicas para almacenamiento de bits (cont)
Ejemplo: DRAM de 4x4 celdas
❒ Para leer un valor, con RAS (Random Access
Strobe = 0)
❍ usando a0 y a1 se activan los transistores
de una fila y se conectan los condensadores
de esa fila a las líneas de detección (sense
lines)
❍ los amplificadores (sense amplifiers)
discriminan entre un 0 y un 1 y amplifican
las señales al valor correcto (e.g. TTL = 5V)
❍ se usan a2 y a3 para seleccionar la columna
correcta y se conecta al output via el MUX
❍ después del ciclo de lectura los
amplificadores recargar los valores de los
condensadores que fueron descargados por
la lectura
❒
❒ Para la escritura de un bit se lee su fila
completa al latch, se modifica el bit
deseado en el latch usando Data In (D.I) y
se almacena la fila modificada en los
condensadores correspondientes
D.I.
14: Asincrónicas
6
Bases electrónicas para almacenamiento de bits (cont)
❒ SRAM es un tipo de RAM volátil que almacena cada bit de
datos en una configuración estable que mantiene el valor
del bit mientras haya poder aplicado
❒ Usando un par de inversores CMOS esta configuración se
puede lograr de la siguiente forma. Esto se denomina
almacenamiento bi-estable ya que el output en CMOS es
estable alrededor de los dos valores Vcc y GND
"1"
"stored value"
"0"
14: Asincrónicas
7
Circuitos simples con feedback
❒ Dos inversores forman una celda de memoria
estática
❍ van a mantener valor mientras tenga energía el
circuito
"1"
"stored value"
"0"
❒ Como se introduce un nuevo valor en la celda?
selectivamente romper realimentación
❍ cargar nuevo valor en la celda
❍
"remember"
"data"
"load"
"stored value"
14: Asincrónicas
8
Estabilidad e inputs asincrónicos
❒ Circuitos sincrónicos (con reloj)
❍ inputs, estados e outputs muestreados o
cambian en relación a señal común (reloj)
❍ pueden ser master/slave, activados con cantos
❒ Circuitos asincrónicos
❍ inputs, estados y outputs muestreados o
cambian independientes de señal de referencia
común (glitches/hazards una preocupacion )
❍ e.g., R-S latch
14: Asincrónicas
9
Estabilidad e inputs asincrónicos (cont)
❒ Inputs asincrónicos a circuitos sincrónicos
❍
❍
❍
❍
inputs pueden cambiar en cualquier tiempo, no van a
satisfacer tiempos de setup/hold
peligroso, inputs sincrónicos son preferidos
en generar es buena practica de diseño el tener circuitos
que solamente tienen inputs sincrónicos
hay veces que los inputs asincrónicos no se pueden evitar
(e.g., señal reset, memory wait, input de usuario), por eso
se usa un sincronizador
Sincronizador (D0)
Async
Input
D Q
D Q
Clock
D Q
Clock
14: Asincrónicas
10
Estabilidad e inputs asincrónicos (cont)
Sincronizador (D0)
❒ Que puede salir mal?
❍
input cambia muy cerca de un canto de
reloj (violando restricciones de tiempo
de setup/hold) esto causa que el output
del FF sincronizador sea indefinido
In
Q0
Async
Input
D Q
?
Clock
Input a D0 es asincrónico
FF no captura la señal
CLK
se llega a estado inconsistente
o erróneo!
14: Asincrónicas
11
Falla de sincronización
❒ Ocurre cuando el input a un FF cambia cerca del canto del reloj
(tiempo de setup y hold del input no son respetados)
❍ el FF puede entrar en un estado metaestable – no es ni logica 0 ni 1
❍ puede quedarse en este estado indefinidamente (poco probable
dado variaciones termales y asimetrías en retardos de señales a
nivel de transistores de implementación del FF)
logic 1
logic 0
logic 1
small, but non-zero probability
that the FF output will get stuck
in an in-between state
logic 0
oscilloscope traces demonstrating
synchronizer failure and eventual
decay to steady state
14: Asincrónicas
12
Falla de sincronización (cont)
❒ Probabilidad de falla puede ser reducida pero nunca puede ser 0
❒ Posibles mejoras:
❍
❍
❍
hacer que el reloj sea mas lento: esto le da mas tiempo al
sincronizador para decaer a un estado estable;
fallas del sincronizador puede ser un grave problema para
sistemas de alta velocidad
usar tecnología con lógica mas rápida: esto hace que la
“cumbre” sea mas delgada
poner dos sincronizadores en cascada: ambos tendrían que
fallar para tener un estado metaestable
asynchronous
input
D
Q
D
synchronized
input
Q
Clk
synchronous system
14: Asincrónicas
13
Falla de sincronización (cont)
❒ Nunca tener inputs asincrónicos que hagan fan-
out a mas de un flip-flop
❍
❍
por diferencias en cableado y otros retardos podrían
tener valores diferentes, seria un estado invalido
hay que sincronizar lo antes posible y tratar como señal
sincrónica
Clocked
Synchronous
System
Async
Input
D Q
Synchronizer
Q0
Async
Input D Q
D Q
Clock
Clock
D Q
Q1
Clock
Q0
D Q
Q1
Clock
14: Asincrónicas
14
14-Maquinas Secuenciales Asincrónicas
14.1 Bases electrónicas para almacenar bits
14.2 Latch asincrónico R-S
14.3 Diseño de FFs en base a latches
14.4 Multivibrador aestable
14.5 Multivibrador monoestable
14: Asincrónicas
15
Memoria basada en compuertas conectadas
❒ Se denomina latch a un elemento de almacenamiento de un bit
❒ Usando compuertas NOR
❍
similar a par de inversores, pueden forzar output Q a 0 (reset=1,
set=0) o 1 (set=1, reset=0)
Reset
R
Q
S
Q'
Q
Set
R
S
NOR
x y z
0 0 1
0 1 0
1 0 0
1 1 0
❒ Usando compuertas NAND
❍
similar a par de inversores, pueden forzar output Q a 0 (reset=0,
set=1) o 1 (set=0, reset=1)
S'
Q
S'
R'
R'
Q
Q'
14: Asincrónicas
NAND
x y z
0 0 1
0 1 1
1 0 1
1 1 0
16
Comportamiento temporal de latch R-S
S
0
0
1
1
Reset
R
0
1
0
1
Q
hold
0
1
unstable
Hold
Set
R
Q
S
Q'
Reset
Set
100
Race
R
S
Q
\Q
14: Asincrónicas
17
Estados para un latch R-S
R
Q
S
Q'
❒ Tabla de verdad
Q Q'
0 1
S
0
0
1
1
R
0
1
0
1
Q
hold
0
1
unstable
Q Q'
1 0
Q Q'
0 0
Q Q'
1 1
14: Asincrónicas
18
Comportamiento de estados de latch R-S
SR=10
❒ Diagrama de estados
❍
❍
SR=00
SR=01
estados: valores
posibles
transiciones: cambios
basados en inputs
SR=01
oscilaciones posibles entre
estados 00 y 11
Q Q'
1 0
SR=10
SR=11
❒ Difícil observar latch R-S
en estado 1-1
❍ R o S usualmente
cambian antes
❍ condición de “carrera” o
transicion “no
deterministica”
SR=01
Q Q'
0 1
SR=00
SR=10
SR=11
Q Q'
0 0
SR=11
SR=00
SR=11
SR=00
SR=01
SR=10
Q Q'
1 1
S
0
0
1
1
R
0
1
0
1
Q
hold
0
1
unstable
14: Asincrónicas
19
NOR
x y z
0 0 1
0 1 0
1 0 0
1 1 0
Análisis de latch R-S
❒ Para generar tabla estados y K-mapa: poner valores de
input, dejar que señales se propaguen y llenar próximo
estado
R
Q
Q'
S
S
0
0
0
0
1
1
1
1
R
0
0
1
1
0
0
1
1
Q(t)
0
1
0
1
0
1
0
1
S=R=1 no es permitido
Q(t+∆)
0
hold
1
0 reset
0
1 set
1
X no permitido
X
Q(t)
Q(t+∆)
S
R
S
Q(t)
0
0
X
1
1
0
X
1
R
ecuación característica
Q(t+∆) = S + R’ Q(t)
14: Asincrónicas
20
Actividad: latch R-S usando NAND
R’
Q'
R
0
0
1
1
0
0
1
1
R’
S’
Q
S’
S
0
0
0
0
1
1
1
1
Q(t)
S’
1
1
1
1
0
0
0
0
R’
1
1
0
0
1
1
0
0
Q(t)
0
1
0
1
0
1
0
1
Q(t+∆)
0
1
0
0
1
1
X
X
S
hold
0
0
X
1
1
0
X
1
reset
Q(t)
set
not allowed
R
ecuacion caracteristica
Q(t+∆) = S + R’ Q(t)
14: Asincrónicas
21
Latch R-S con enable
❒ Controlar cuando
entradas R y S importan
❍ de otra forma
cualquier ruido en R o
S mientras enable es
bajo podría causar
cambio en valor
almacenado
Set
S'
R'
enable'
Q
R
R'
Q
enable'
Q'
S'
S
Reset
100
NOR
x y z
0 0 1
0 1 0
1 0 0
1 1 0
Q'
14: Asincrónicas
22
14-Maquinas Secuenciales Asincrónicas
14.1 Bases electrónicas para almacenar bits
14.2 Latch asincrónico S-R
14.3 Diseño de FFs en base a latches
14.4 Multivibrador aestable
14.5 Multivibrador monoestable
14: Asincrónicas
23
Latch R-S con reloj
❒ Control del latch R-S con un reloj
❍
❍
❍
no se puede dejar que R y S cambien mientras el reloj
esta activo (cuando clock’=0)
solo se tiene la mitad del periodo de reloj para que las
señales se propagan
señales tienen que estar estables durante la otra mitad
del periodo del reloj
R’
R
Q
clock’
Q’
S’
NOR
x y z
0 0 1
0 1 0
1 0 0
1 1 0
S
stable changing stable changing stable
R’ and S’
clock’
14: Asincrónicas
24
Latches en cascada
❒ Conectar output de un latch al input de otro
❒ Como se controla la propagación de los cambios entre los
latches?
❍ debería moverse por un latch por periodo del reloj
❍ el movimiento de señales entre los latches no debe ser
mas rápido
❍ inputs correctos, con respecto al tiempo se dan a los FFs
❍ ningún FF cambia de estado mas de una vez por evento del
reloj (canto o nivel)
R
R
Q’
R
Q’
S
S
Q
S
Q
clock
14: Asincrónicas
25
Estructura maestro-esclavo (Master-slave)
❒ Se rompe el flujo alternando relojes
❍
❍
usar el nivel positivo del reloj para hacer que los inputs entren
al primer latch
usar el nivel del reloj negativo para activar segundo latch
❒ Ver el par como una unidad básica usado para almacenar un bit
slave stage
master stage
R
R
Q’
S
S
Q
P’
P
R
Q’
S
Q
CLK
❒ La segunda etapa va a tener cambio de output un corto tiempo
después que el reloj vaya de alto a bajo
❒ Por esto se considera como un latch master-slave activado en el
canto negativo (negative edge-triggered master-slave latch)
14: Asincrónicas
26
Estructura maestro-esclavo (Master-slave) (cont)
❒
A pesar del costo adicional, el latch master-slave activado en el
canto negativo tiene varias ventajas sobre un latch activado en
niveles
1.
Cambios de valores están restringidos a un latch master-slave y no se
pueden propagar a un segundo latch hasta el próximo periodo del reloj
2.
Ya no estamos preocupados que el retardo de la lógica combinacional
sea mayor que el periodo del reloj sino que la lógica entre las latches
calcule nuevos valores antes del nuevo canto de bajada
3.
Por lo anterior generalmente se puede incrementar la frecuencia del
reloj en esta configuración (mas que en una basada en niveles)
14: Asincrónicas
27
Master-Slave: Problema de captura de 1
❒ Esta configuración de tiene un problema de captura de
perturbaciones
❒ Ejemplo: En la primer etapa de master-slave latch
❍
❍
perturbación 0-1-0 en R o S mientras reloj esta alto se captura
en etapa master
induce restricción que lógica no tenga perturbaciones
slave stage
master stage
Set
S
R
CLK
P
P’
Q
Q’
1s
Reset catch
R
R
Q’
S
S
Q
P’
P
R
Q’
S
Q
CLK
Master
Outputs
Slave
Outputs
14: Asincrónicas
28
Flip-flop D
FF D
D Q(k+1)
0 0
1 1
❒ Hace que S y R se complementen
❍
❍
❍
elimina problema de captura de 1
no puede mantener valor previo
(debe tener un valor nuevo en cada periodo del reloj)
valor de D antes que el reloj baje es lo que se guarda en el FF
slave stage
master stage
D
R
Q’
S
Q
P’
P
R
Q’
Q’
S
Q
Q
CLK
10 compuertas
14: Asincrónicas
29
FF D Activado en cantos (versión 2)
❒ Solución mas eficiente: solo 6 compuertas
❍
sensible a inputs solo cerca de los cantos del reloj (no mientras
reloj este alto)
D’
D
tiene D’ cuando
reloj va a bajo
0
D FF activado en
canto negativo
4-5 retardos de compuertas
R
Q
Clk=1
Q’
S
debe respetar tiempos de setup
y hold para capturar input
correctamente
0
tiene D cuando
reloj va a bajo
D
D’
ecuación característica
Q(t+1) = D
14: Asincrónicas
30
FFs Activados en cantos (cont)
❒ Análisis
D’
D’
D
D
D’
R
D’
R
Q
Clk=0
Clk=0
S
S
D
D
Q
D’
cuando reloj va de alto a bajo
se almacena input
D
new D
new D ≠ old D
D’
cuando reloj es bajo
datos se mantienen
14: Asincrónicas
31
FFs Activados en cantos (cont)
❒ Cantos positivos
❍ inputs muestreados en canto de subida; outputs
cambian después de canto de subida
❒ Cantos negativos
❍ inputs muestreados en canto de bajada; outputs
cambian después de canto de bajada
100
D
CLK
Qpos
Qpos’
Qneg
Qneg’
positive edge-triggered FF
negative edge-triggered FF
14: Asincrónicas
32
Flip-flop JK
❒ J es un set, K es reset, ambos indican complemento del estado
actual
J
J
0
0
1
1
Q
K
CLK
FF
K
0
1
0
1
JK
Q(k+1)
Q(k)
0
1
Q’(k)
❒ Ecuación característica: Q(t+1) = J(t) Q’(t) + K’(t) Q(t)
❒ Implementación de un FF D usando un FF JK
D
J
Q
K
Q’
CLK
14: Asincrónicas
33
Flip-flop T
❒ T es un toggle (un tipo de interruptor de presión), se oprime una
vez y queda en un estado, se vuelve a oprimir y cambia de estado
T
Q
FF T
T Q(k+1)
0 Q(k)
1 Q’(k)
CLK
❒ Implementación de FF T usando un FF JK
T
J
Q
K
Q’
CLK
14: Asincrónicas
34
Latch Transparente
❒ Un latch transparente puede verse como un mux realimentado
D
Q
D
1
0
CLK
Q
FF D
D Q(k+1)
0 0
1 1
G
14: Asincrónicas
35
Latch Transparente (cont)
❒ Una implementación mediante compuertas es la siguiente
D
G
S
P
Q
R
Si G y D están un tiempo
suficiente en 1 se llega al
estado estable PQRS=0101
❒ Cuando G esta alto, Q sigue a D. En caso contrario Q permanece
estable. Se denomina un latch D estático ya que mantiene Q
mientras G este inactivo.
❒ Si D esta alto al ocurrir un canto de bajada en G, se produce una
perturbación (falso cero) en Q. Esto debido a que R y S conmutan
en tiempos diferentes. Esta perturbación genera oscilaciones.
❒ Otro problema es si el ancho del pulso G es demasiado angosto
causa que el latch no alcanza a setearse.
❒ Otra dificultad es si D cambia casi al mismo tiempo que el latch se
activa con el canto de bajada G. En este caso no puede
determinarse cual será el valor se captura en el latch.
14: Asincrónicas
36
Latch Transparente (cont)
D
G
S
P
Q
R
❒ Por estas razones, el diseño de dispositivos secuenciales debe
garantizar que las entradas sean validas y estables durante los
periodos en que estas pueden influir sobre el cambio de estado.
❒ G debe permanecer activa por el tiempo que sea suficiente para
que el latch pueda capturar el dato. Esto requiere un mínimo ancho
para el pulso G.
❒ El tiempo de set-up debe garantizar que el valor de D se haya
propagado a través del lazo de realimentación antes que se active
el latch.
❒ El tiempo de hold debe garantizar que el latch este cerrado y Q
estable antes de permitir los cambios en la entrada D.
❒ Latches transparentes también se pueden configurar en forma
maestro-esclavo (activados por cantos de subida y bajada)
14: Asincrónicas
37
14-Maquinas Secuenciales Asincrónicas
14.1 Bases electrónicas para almacenar bits
14.2 Latch asincrónico S-R
14.3 Diseño de FFs en base a latches
14.4 Multivibrador aestable
14.5 Multivibrador monoestable
14: Asincrónicas
38
Multivibrador Aestable (oscilador continuo)
Este circuito es un oscilador elemental (para oscilar se le asigna Init = 1)
Init
❒ x, y, z son las variables de estado, se tiene que:
❒
❍
X = (z Init)’
Y = x’
X
Z = y’
Y
Init
z
x
y
Z
xyz
000
001
010
011
100
101
110
111
0
111
111
110
110
101
101
100
100
1
111
011
110
010
101
001
100
000
La matriz de transiciones indica que solo el estado 101 es estable ya que
con Init = 0 eventualmente se llega y se queda en el estado 101.
❒ Si se tiene un ciclo de oscilación de High a Low (HL) y de Low a High (LH)
para cada compuerta se obtiene un circuito oscilador con el periodo:
T = 3(THL + TLH)
❒ Los FFs se clasifican como multivibradores bi-estables
❒
14: Asincrónicas
39
14-Maquinas Secuenciales Asincrónicas
14.1 Bases electrónicas para almacenar bits
14.2 Latch asincrónico S-R
14.3 Diseño de FFs en base a latches
14.4 Multivibrador aestable
14.5 Multivibrador monoestable
14: Asincrónicas
40
Multivibrador Monoestable
❒ El siguiente circuito permite generar un pulso de ancho programable
❒ Se emplea para generar temporizadores que generan eventos
después de un tiempo dado
R
Q
S
Q’
Dispara
❒ Se suele usar una red RC después del inversor para generar el
retardo (no esta en diagrama)
❒ Con el canto de subida en R (1) se inicia el multivibrador, después del
canto de bajada en Q hay un retardo hasta que S sube (2)
❒ El tiempo que genera el multivibrador es la señal Q’ (entre 3 y 4).
❒ Se debe reiniciar la señal R a cero para reiniciar disparo del circuito
tiene un estado estable (dispara una vez o one shot)
14: Asincrónicas
41
Descargar