elo211: sistemas digitales tomás arredondo vidal 1er...
TRANSCRIPT
ELO211: Sistemas Digitales
Tomás Arredondo Vidal1er Semestre – 2008
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 Silvamaterial en el sitio http://es.wikipedia.org
10: Memorias Sincrónicas 1
10-Memorias Sincrónicas
10.1 Memorias sincrónicas10.2 Metodologías de temporización (timing)10.3 Ejemplos: registros de corrimiento y
contadores simples10.4 HDL
10: Memorias Sincrónicas 2
Circuitos simples con feedback
10: Memorias Sincrónicas 3
"remember"
"load""data" "stored value"
"0"
"1"
"stored value"
Dos inversores forman una celda de memoria estática
va a mantener valor mientras tenga energía
Como se introduce un nuevo valor en la celda?selectivamente romper realimentacióncargar nuevo valor en la celda
Memoria basada en compuertas conectadas
10: Memorias Sincrónicas 4
R
S
Q
Q'
RS
Q
R'S'
Q'
S'
R'
Usando compuertas NORsimilar a par de inversores, pueden forzar output Q a 0 (reset=1, set=0) o 1 (set=1, reset=0)
Usando compuertas NANDsimilar a par de inversores, pueden forzar output Q a 0 (reset=0, set=1) o 1 (set=0, reset=1)
NORx y z0 0 10 1 01 0 01 1 0
NANDx y z0 0 10 1 11 0 11 1 0
Reset
Set
Comportamiento temporal de latch R-S
R
S
Q
Q'
Reset Hold Set SetReset Race
R
S
Q
\Q
100
10: Memorias Sincrónicas 5
Comportamiento de estados de latch R-S
Diagrama de estadosestados: valores posiblestransiciones: cambios basados en inputs
Difícil observar latch R-S en estado 1-1
R o S usualmente cambian antescondición de “carrera” o transicion “no deterministica”
Q Q'0 1
Q Q'1 0
Q Q'0 0
Q Q'1 1
SR=00SR=11SR=00
SR=10
SR=01SR=00SR=10
SR=00SR=01
SR=11 SR=11
SR=10SR=01
SR=01 SR=10
SR=11
oscilaciones posibles entre estados 00 y 11
S R Q0 0 hold0 1 01 0 11 1 unstable
10: Memorias Sincrónicas 6
Análisis de latch R-S
Q(t+∆)
RS
Q(t)
S R Q(t) Q(t+∆)0 0 0 00 0 1 10 1 0 00 1 1 01 0 0 11 0 1 11 1 0 X1 1 1 X
hold
reset
set
no permitido ecuación característicaQ(t+∆) = S + R’ Q(t)
10: Memorias Sincrónicas 7
Tabla estados y K-mapaR
S
Q
Q'
0 0
1 0
X 1
X 1Q(t)
R
S
S=R=1 no es permitido
Actividad: latch R-S usando NAND
R’
S’ Q
Q'
ecuacion caracteristicaQ(t+∆) = S + R’ Q(t)
R’S’
Q(t)
0 0
1 0
X 1
X 1Q(t)
R
S
S R S’ R’ Q(t) Q(t+∆)0 0 1 1 0 00 0 1 1 1 10 1 1 0 0 00 1 1 0 1 01 0 0 1 0 11 0 0 1 1 11 1 0 0 0 X1 1 0 0 1 X
hold
reset
set
not allowed
10: Memorias Sincrónicas 8
Latch R-S con enable
enable'
S'Q'
QR' R
S
Controlar cuando entradas R y S importan
de otra forma cualquier ruido en R o S mientras enable es bajo puede causar cambio en valor almacenado
Set Reset
S'R'enable'QQ'
100
NORx y z0 0 10 1 01 0 01 1 0
10: Memorias Sincrónicas 9
Reloj (Clock) Usado para mantener el tiempo
hay que esperar tiempo suficiente para que los inputs (R' y S') estén establesentonces hay que esperar que los inputs cursen efectos en los valores almacenados
Reloj es una señal periódicaperiodo (tiempo entre los ticks de reloj)ciclo de actividad (duty-cycle) (% del periodo en el cual el reloj esta alto vs bajo)
duty cycle (en este caso, 50%)
10: Memorias Sincrónicas 10
period
Reloj (cont)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 (cuando clock’=1) para que las señales se propagan
clock’
S’Q’
QR’ R
S
NORx y z0 0 10 1 01 0 01 1 0
clock’
R’ and S’changing stable changing stablestable
10: Memorias Sincrónicas 11
Latches en cascadaConectar output de un latch al input de otroComo se controla la propagación de los cambios entre los latches?
debería moverse por un latch por periodo del relojel movimiento de señales entre los latches no debe ser mas rápido
clock
R
S Q
Q’ R
S Q
Q’R
S
10: Memorias Sincrónicas 12
Estructura maestro-esclavo (Master-slave)
Se rompe el flujo alternando relojesusar el reloj positivo para hacer que los inputsentren a un latchusar el reloj negativo para activar segundo latch
Ver el par como una unidad básica (master-slaveFlip Flop activado por niveles)
master stage slave stage
P
P’
CLK
R
S Q
Q’ R
S Q
Q’R
S
10: Memorias Sincrónicas 13
Problema de captura de 1En primer etapa de master-slave FF
perturbación 0-1-0 en R o S mientras reloj esta alto se captura en etapa masterinduce restricción que lógica no tenga perturbaciones
Set1s
catch
SR
CLKPP’QQ’
Reset
MasterOutputs
SlaveOutputs
master stage slave stage
P
P’
CLK
R
S Q
Q’ R
S Q
Q’R
S
10: Memorias Sincrónicas 14
FF DD Q(k+1)0 01 1
Flip-flop DHace que S y R se complementen
elimina problema de captura de 1no 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 (negative edge triggered)
10: Memorias Sincrónicas 1510 compuertas
D Q
Q’
master stage slave stage
P
P’
CLK
R
S Q
Q’ R
S Q
Q’
Flip-flop JKJ es un set, K es reset, ambos indican complemento del estado actual
Ecuación característica: Q(t+1) = J(t) Q’(t) + K’(t) Q(t)Implementación de un FF JK usando un FF D y vice versa ?
CLK
J
K
QFF JK
J K Q(k+1)0 0 Q(k)0 1 01 0 11 1 Q’(k)
CLK
J
K
Q
Q’
D
CLK
J
K Q
Q’
D
Q’
10: Memorias Sincrónicas 16
Flip-flop TT 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
Implementación de FF T usando un FF JK?
CLK
T Q FF TT Q(k+1)0 Q(k)1 Q’(k)
CLK
J
K
Q
Q’
T
10: Memorias Sincrónicas 17
Comparación de latches y flip-flops
D Q
CLK D
CLK
Qedge
Qlatch
positiveedge-triggered
flip-flop
D QG
CLK
transparent(level-sensitive)
latch comportamiento no es el mismo si es que los inputscambian cuando el clock esta alto
10: Memorias Sincrónicas 18
10-Memorias Sincrónicas
10.1 Memorias sincrónicas10.2 Metodologías de temporización (timing)10.3 Ejemplos: registros de corrimiento y
contadores simples10.4 HDL
10: Memorias Sincrónicas 19
Términos de temporizaciónReloj (clock): evento periódico, causa cambio en el estado de elemento de memoria, puede ser canto de subida o canto de bajada o nivel alto o nivel bajoTiempo de preparación (setup): tiempo mínimo antes que el evento del reloj en el cual el input tiene que estar estable (Tsu)Tiempo de mantención (hold): tiempo mínimo después del evento del reloj en el cual el input tiene que mantenerse estable (Th)Retardo de propagación (propagation delay): tiempo que transcurre en el FF desde que inputs son muestreados hasta que outputs y nuevos estados son calculados (incluye tiempo en logica combinacional y FF)
clock
dataD Q D Q
input
clock
Tsu Th
10: Memorias Sincrónicas 20
hay una ventana de tiempo alrededor del evento del reloj en el cual la entrada tiene que mantenerse establepara ser reconocida correctamente
datachangingstable
clock
Metodologías de temporizaciónReglas para interconectar componentes y relojes garantizan la operación correcta del sistema cuando son seguidasMétodo depende de los componentes usados para la memoria
enfoque va a ser FF activados en cantos (edge-triggered FF)• encontrados en PLDs
Reglas básicas para temporización correcta:inputs correctos, con respecto al reloj, se proveen a los FFningún FF cambia de estado mas de una vez por evento del reloj
El retardo de propagación hacia el input de los FFs (Tprop) a través de la lógica combinacional y FFs (Tprop.delay) hasta el output de los FFs debe completarse a tiempo para el correcto muestreo del próximo canto del reloj mientras se respetan las restricciones del tiempo de setup (Tsetup y Thold):
Tperiod > Tprop + Tprop.delay + Tsetup
10: Memorias Sincrónicas 21
Especificaciones típicasEjemplo: D flip-flop activado en canto positivo
tiempo de propagación: Tprop.delay > Th
mínimo ancho de reloj: Tperiodo > Tprop.delay + Tsu +Tprop
retardos de propagación a través de FF (bajo a alto, alto a bajo, máximo y típico)
D
Clk
Q
T su1.8ns
T h 0.5ns
T w 3.3 ns
T pd1.1-3.6 ns
T su1.8ns
T h 0.5 ns
T pd
1.1-3.6 ns
T w 3.3 ns
todas las medidas se hacen desde el evento del reloj (canto positivo)10: Memorias Sincrónicas 22
Cascadas de flip-flopsEjemplo: Registro corrimiento (shift register)
valor nuevo va en primera etapamientras que el valor previo de la primera etapa va a la segundaetapaconsiderar tiempos de setup/hold/retardo de propagación (propagation delay tiene que ser > tiempo de hold)
IN
Q0
Q1
CLK
100ns
10: Memorias Sincrónicas 23
CLK
INQ0 Q1
D Q D Q OUT
outputsindefinidos
Cascadas de flip-flops (cont)Porque esto funciona
retardos de propagación exceden tiempos Th (entradas y reloj no cambian durante tiempo hold)ancho de reloj en bajo excede Tsu
estos garantizan que la próxima etapa va a obtener valor actual antes de que cambie al próximo valor
Tsu1.8ns
Tpd1.1-3.6ns
Th0.5ns
In
Q0
Q1
CLK
Tsu1.8ns
Tpd1.1-3.6ns
Th0.5ns
restricciones de tiempogarantizan funcionamientocorrecto de componentes
en cascada
asume distribución delreloj infinitamente rápida
(sin skew)
10: Memorias Sincrónicas 24
Retardos (skew) en el relojComportamiento correcto asume que el próximo estado es determinado por todos los FF al mismo tiempo
difícil en sistemas rápidos porque el tiempo para que el reloj llegue al FF es comparable al retardo en la lógicaefecto de retardo en FF en cascada:
CLK1 es una versión retardada de CLK0
InQ0Q1
CLK0CLK1
100
estado original: IN = 0, Q0 = 1, Q1 = 1por retardo, próximo estado se convierte en: Q0 = 0, Q1 = 0, y no Q0 = 0, Q1 = 1
10: Memorias Sincrónicas 25
Fallas en sincronización de inputsSincronización de inputs se hace para sincronizarlos con cantos del reloj y eliminar variabilidad en comportamiento del circuito Probabilidad de error se puede reducir pero no eliminar
(1) hacer el reloj mas lentopermite que la sincronización ocurra mas fácilmente(2) usar lógica mas rápida en el sincronizador(3) hacer cascada de sincronizadores (ambos tendrían que fallar)
D DQ Qasynchronous
inputsynchronized
input
synchronous system
Clk
10: Memorias Sincrónicas 26
Manejo de inputs asincrónicos
D Q
D Q
Q0
Clock
Clock
Q1
AsyncInput
Nunca permitir que un input asincrónico haga fan-out a mas de un flip-flop
sincronizar lo mas rápido posible y tratar como señal sincrónica
Clocked Synchronous
System
D Q
D Q
Q0
Clock
Clock
Q1
AsyncInput D Q
Synchronizer
10: Memorias Sincrónicas 27
Manejo de inputs asincrónicos (cont)
Que puede ocurrir?cambios en input ocurren muy cerca del canto del reloj (vulnerando restricción de tiempo de setup)
In
Q0
Q1
CLK
In es asincrónico y hace fan-out a D0 and D1
un FF captura la señal, el otro no
se llega a estado inconsistente
10: Memorias Sincrónicas 28
10-Memorias Sincrónicas
10.1 Memorias sincrónicas10.2 Metodologías de temporización (timing)10.3 Ejemplos: registros de corrimiento y
contadores simples10.4 HDL
10: Memorias Sincrónicas 29
RegistrosColecciones de flip-flops con controles y lógica similares
valores almacenados de alguna forma están relacionados (ej: forman un valor binario)comparten reloj, reset y setlógica similar en cada etapa
Ejemplo: registro de cuatro bits
R S R S R SD Q D Q D Q D Q
OUT1 OUT2 OUT3 OUT4
CLK
IN1 IN2 IN3 IN4
R S
"0"
10: Memorias Sincrónicas 30
Registros de corrimiento (shift register)Mantienen muestreo del input
almacena valor de los últimos 4 inputs en secuenciaEjemplo: 4-bit shift register
D Q D Q D Q D QIN
OUT1 OUT2 OUT3 OUT4
CLK
10: Memorias Sincrónicas 31
Registro de corrimiento universalTiene varias funciones:
inputs paralelo o serialoutputs paralelo o serialpermite corrimiento a la izquierda o derechanuevos valores para el corrimiento entran de izquierda a derecha
left_inleft_out
right_out
clearright_in
output
input
s0s1
clock
si clear = 1, contenidos y outputsdel registro = 0
s1 y s0 determinan la función: s0 s1 función0 0 hold state0 1 shift right1 0 shift left1 1 load new input
10: Memorias Sincrónicas 32
Diseño del registro de corrimiento universal
10: Memorias Sincrónicas 33
celda de un FF
DQ
CLK
Q[N-1](left)
Q[N+1](right)
Input[N]
to N-1th cell
to N+1th cell
clear s0 s1 new value1 – – 00 0 0 output0 0 1 output value of FF to left (shift right)0 1 0 output value of FF to right (shift left)0 1 1 input
Considerando uno de los cuatro FFs:valor nuevo en nuevo ciclo del reloj:
s0 and s1control mux0 1 2 3
CLEAR
Aplicación de registro de corrimiento
Conversión paralela a serial para transmisión serial
parallel inputs (8 bits)
parallel outputs (8 bits)
serial transmission (1 bit)
10: Memorias Sincrónicas 34
Reconocedor de patrones
Función combinacional de muestreo de inputsen este caso, reconocer el patrón 1001 en la señal de input IN
D Q D Q D Q D QIN
OUT1 OUT2 OUT3 OUT4
CLK
OUT
10: Memorias Sincrónicas 35
ContadoresSecuencian por un conjunto fijo de patrones
en este caso: 1000, 0100, 0010, 0001uno de los patrones es estado inicial (al cargarlo o usando set/reset)
D Q D Q D Q D QIN
OUT1 OUT2 OUT3 OUT4
CLK
10: Memorias Sincrónicas 36
Actividad
Como funciona este contador?
D Q D Q D Q D QIN
OUT1 OUT2 OUT3 OUT4
CLK
Cuenta la secuencia: 1000, 1100, 1110, 1111, 0111, 0011, 0001, 0000
Conocido como contador Mobius (o Johnson)
10: Memorias Sincrónicas 37
Contador BinarioLógica entre registros
XOR deciden cuando el bit debería cambiarsiempre para primer bit, solo cuando primer bit es verdad para el segundo etc...output : 0000, 0001, 0010, 0011, 0100, 0101, 0111, ...
D Q D Q D Q D Q
OUT1 OUT2 OUT3 OUT4
CLK
"1"
10: Memorias Sincrónicas 38
Contador binario de cuatro bits sincrónico
10: Memorias Sincrónicas 39
EN
DCBALOADCLKCLR
RCOQDQCQBQA
(1) Low order 4-bits = 1111
(2) RCO goes high
(3) High order 4-bits are incremented
Componente estandard en muchas aplicacionesFF con activación en canto de subida, con carga y clearsincrónicos con el relojcarga de datos paralelo desde D, C, B, Aenable: tiene que estar alta para contarRCO: ripple-carry se usa para cascadear contadores• alto cuando contador en estado mas alto (1111)• implementa usando una compuerta AND
Contadores con offset (punto de partida)
EN
DCBALOADCLKCLR
RCOQDQCQBQA
"1"
"0""0""0""0"
"0"
EN
DCBALOADCLKCLR
RCOQDQCQBQA
"1"
"0""1""1""0"
Carga de offset counters – sincrónicoe.g., 0110, 0111, 1000, 1001,1010, 1011, 1100, 1101, 1111, 0110, . . .
Termino – comparator para valor de terminoe.g., 0000, 0001, 0010, ..., 1100, 1101, 0000
Combinaciones (valor de comienzo y termino)
10: Memorias Sincrónicas 40
10-Memorias Sincrónicas
10.1 Memorias sincrónicas10.2 Metodologías de temporización (timing)10.3 Ejemplos: registros de corrimiento y
contadores simples10.4 Verilog
10: Memorias Sincrónicas 41
Flip-flops en Verilog
Usa lista always para esperar por un canto de reloj
module dff (clk, d, q);
input clk, d;output q;reg q;
always @(posedge clk)q = d;
endmodule
10: Memorias Sincrónicas 42
Flip-flops (cont)
reset/set syncronico asincrónicouna hebra que espera el relojtres modulos paralelos – solo una espera el reloj
Synchronous Asynchronous
module dff (clk, s, r, d, q);input clk, s, r, d;output q;reg q;
always @(posedge clk)if (r) q = 1'b0;else if (s) q = 1'b1;else q = d;
endmodule
module dff (clk, s, r, d, q);input clk, s, r, d;output q;reg q;
always @(posedge r)q = 1'b0;
always @(posedge s)q = 1'b1;
always @(posedge clk)q = d;
endmodule
10: Memorias Sincrónicas 43
FF Incorrecto
Usa always para esperar por un cambio de reloj
module dff (clk, d, q);
input clk, d;output q;reg q;
always @(clk)q = d;
endmodule
No es correcto! Q va a cambiar en cualquiercambio no solo un canto
10: Memorias Sincrónicas 44
Asignaciones que bloquean y no bloqueanBloquean (X=A)
completa la asignación antes de seguir al próximo comandoNo-bloquean (X<=A)
completa en zero tiempo y no cambia el valor del objetivo (X) hasta un punto de bloqueo (espera/retardo)
Ejemplo: swap
always @(posedge CLK)begin
A <= B;B <= A;
end
always @(posedge CLK)begin
temp = B;B = A;A = temp;
end
10: Memorias Sincrónicas 45
Asignación Register-transfer-level (RTL)Asignaciones que no bloquean se llaman asignaciones de transferencia de registros (RTL)
si en un bloque always activadas por canto de relojtodos los FFs cambian juntos
// B,C,D all get the same value of Aalways @(posedge clk)
beginB = A;C = B;D = C;
end// implements a shift register tooalways @(posedge clk)
beginB <= A;C <= B;D <= C;
end
10: Memorias Sincrónicas 46
Contador Mobius en Verilog
initialbegin
A = 1’b0;B = 1’b0;C = 1’b0;D = 1’b0;
end
always @(posedge clk)begin
A <= ~D;B <= A;C <= B;D <= C;
end
10: Memorias Sincrónicas 47
Contador Binario en Verilog
10: Memorias Sincrónicas 48
module binary_counter (clk, c8, c4, c2, c1);
input clk;output c8, c4, c2, c1;
reg [3:0] count;
initial begincount = 0;
end
always @(posedge clk) begincount = count + 4’b0001;
end
assign c8 = count[3];assign c4 = count[2];assign c2 = count[1];assign c1 = count[0];
endmodule
module binary_counter (clk, c8, c4, c2, c1, rco);
input clk;output c8, c4, c2, c1, rco;
reg [3:0] count;reg rco;
initial begin . . . end
always @(posedge clk) begin . . . end
assign c8 = count[3];assign c4 = count[2];assign c2 = count[1];assign c1 = count[0];assign rco = (count == 4b’1111);
endmodule
Resumen Memorias Sincrónicas
Bloques fundamentales de circuitos con estadoslatch y flip-floplatch R-S, R-S master/slave, D master/slave, flip flops activados por cantos: D, JK, T
Metodologías de temporizaciónuso de relojesFFs en cascada funcionan porque retardos de propagación exceden tiempo de holdcuidado de los retardos en reloj (clock skew)
Inputs asincrónicosposibles problemas en el sincronizador
Registros básicosregistros de corrimientocontadores
10: Memorias Sincrónicas 49