Está en la página 1de 47

10-Memorias Sincrnicas

10.1 Memorias sincrnicas


10.2 Metodologas de temporizacin
(timing)
10.3 Ejemplos: registros de corrimiento y
contadores simples
10.4 HDL

10: Memorias Sincrnicas

Circuitos simples con feedback


Dos inversores forman una celda de memoria

esttica
va a mantener valor mientras tenga energa
"1"
"stored value"
"0"

Como se introduce un nuevo valor en la celda?

selectivamente romper realimentacin


cargar nuevo valor en la celda
"remember"
"data"

"load"

"stored value"
10: Memorias Sincrnicas

Memoria basada en compuertas


conectadas

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
Set

Q'

R
S

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'
R'

S'

R'

NOR
x y z
0 0 1
0 1 0
1 0 0
1 1 0

NAND
x y z
0 0 1
0 1 1
1 0 1
1 1 0

Q'
10: Memorias Sincrnicas

Comportamiento temporal de latch R-S

Reset

Hold

Q'

Set

Reset

Set

100

Race

R
S
Q
\Q
10: Memorias Sincrnicas

Comportamiento de estados de latch


R-S
SR=10

Diagrama de estados SR=00


SR=01
estados: valores
posibles
transiciones: cambios
basados en inputs
Difcil observar latch R-S
en estado 1-1
R o S usualmente
cambian antes
condicin de carrera
o transicion no
deterministica
oscilaciones posibles entre
estados 00 y 11

Q Q'
0 1

SR=01
SR=01

Q Q'
1 0

SR=00
SR=10

SR=10

SR=11

SR=11

SR=01

Q Q'
0 0

SR=11
SR=00
SR=11

SR=00

Q Q'
1 1

SR=10
S
0
0
1
1

R
0
1
0
1

Q
hold
0
1
unstable

10: Memorias Sincrnicas

Anlisis de latch R-S


Tabla estados y K-mapa
R

Q'

S
S
0
0
0
0
1
1
1
1

R
0
0
1
1
0
0
1
1

Q(t)

Q(t)
0
1
0
1
0
1
0
1

Q(t+)
0
hold
1
0 reset
0
1 set
1
X no permitido
X

S=R=1 no es permitido

Q(t+)

S
R

Q(t)

R
ecuacin caracterstica
Q(t+) = S + R Q(t)
10: Memorias Sincrnicas

Actividad: latch R-S usando NAND


R

Q'

R
0
0
1
1
0
0
1
1

R
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

hold
reset
set
not allowed

Q(t)

R
ecuacion caracteristica
Q(t+) = S + R Q(t)
10: Memorias Sincrnicas

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 puede
causar cambio en
valor almacenado
Set

S'
R'
enable'
Q
Q'

R'

enable'
Q'

S'

100

Reset
NOR
x y z
0 0 1
0 1 0
1 0 0
1 1 0
10: Memorias Sincrnicas

Reloj (Clock)

Usado para mantener el tiempo


hay que esperar tiempo suficiente para que los inputs
(R' y S') estn estables
entonces hay que esperar que los inputs cursen
efectos en los valores almacenados

Reloj es una seal peridica


periodo (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%)

period
10: Memorias Sincrnicas

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 seales se propagan
R

clock
S

Q
S

NOR
x y z
0 0 1
0 1 0
1 0 0
1 1 0

stablechanging stable changing stable


R and S
clock
10: Memorias Sincrnicas

10

Latches en cascada

Conectar output de un latch al input de otro

Como se controla la propagacin de los cambios entre


los latches?
debera moverse por un latch por periodo del reloj
el movimiento de seales entre los latches no debe
ser mas rpido

clock

10: Memorias Sincrnicas

11

Estructura maestro-esclavo (Masterslave)


Se rompe el flujo alternando relojes

usar el reloj positivo para hacer que los


inputs entren a un latch
usar el reloj negativo para activar segundo
latch
Ver el par como una unidad bsica (masterslave Flip Flop activado por niveles)

slave stage

master stage
R

CLK
10: Memorias Sincrnicas

12

Problema de captura de 1
En primer etapa de master-slave FF

perturbacin 0-1-0 en R o S mientras reloj esta


alto se captura en etapa master
induce restriccin que lgica no tenga
perturbaciones
slave stage
master stage

Set
S
R
CLK
P
P
Q
Q

1s
Reset catch

P
P

CLK

Master
Outputs
Slave
Outputs

10: Memorias Sincrnicas

13

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 (negative edge triggered)

slave stage

master stage

CLK
10 compuertas
10: Memorias Sincrnicas

14

Flip-flop JK

J es un set, K es reset, ambos indican complemento del


estado actual
J

J
0
0
1
1

CLK

FF
K
0
1
0
1

JK
Q(k+1)
Q(k)
0
1
Q(k)

Ecuacin caracterstica: Q(t+1) = J(t) Q(t) + K(t) Q(t)

Implementacin de un FF JK usando un FF D y vice versa ?

Q
CLK

Q
CLK

10: Memorias Sincrnicas

15

Flip-flop T

T es un toggle (un tipo de interruptor de presin), se oprime


una vez y queda en un estado, se vuelve a oprimir y cambia
de estado
T

FF T
T Q(k+1)
0 Q(k)
1 Q(k)

CLK

Implementacin de FF T usando un FF JK?


T

Q
CLK
10: Memorias Sincrnicas

16

Comparacin de latches y flip-flops


D Q
CLK
positive
edge-triggered
flip-flop

D
CLK
Qedge

D Q
G

Qlatch

CLK
transparent
(level-sensitive)
latch

comportamiento no es el mismo si es que los inputs


cambian cuando el clock esta alto
10: Memorias Sincrnicas

17

10-Memorias Sincrnicas
10.1 Memorias sincrnicas
10.2 Metodologas de temporizacin
(timing)
10.3 Ejemplos: registros de corrimiento y
contadores simples
10.4 HDL

10: Memorias Sincrnicas

18

Trminos de temporizacin

Reloj (clock): evento peridico, causa cambio en el estado de elemento


de memoria, puede ser canto de subida o canto de bajada o nivel alto o
nivel bajo

Tiempo de preparacin (setup): tiempo mnimo antes que el evento del


reloj en el cual el input tiene que estar estable (Tsu)

Tiempo de mantencin (hold): tiempo mnimo despus del evento del


reloj en el cual el input tiene que mantenerse estable (Th)

Retardo de propagacin (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)
Tsu Th

data

input
clock
hay una ventana de tiempo
alrededor del evento del
reloj en el cual la entrada
tiene que mantenerse estable
para ser reconocida correctamente

D Q

D Q

clock
stable changing
data
clock

10: Memorias Sincrnicas

19

Metodologas de temporizacin

Reglas para interconectar componentes y relojes

garantizan la operacin correcta del sistema


cuando son seguidas

Mtodo depende de los componentes usados para la memoria


enfoque va a ser FF activados en cantos (edge-triggered
FF)
encontrados en PLDs
Reglas bsicas para temporizacin correcta:
inputs correctos, con respecto al reloj, se proveen a los FF
ningn FF cambia de estado mas de una vez por evento del
reloj
El retardo de propagacin hacia el input de los FFs (Tprop) a
travs de la lgica combinacional y FFs (Tprop.delay) hasta el
output de los FFs debe completarse a tiempo para el correcto
muestreo del prximo canto del reloj mientras se respetan las
restricciones del tiempo de setup (Tsetup y Thold):
Tperiod > Tprop + Tprop.delay + Tsetup

10: Memorias Sincrnicas

20

Especificaciones tpicas

Ejemplo: D flip-flop activado en canto positivo


tiempo de propagacin: Tprop.delay > Th

mnimo ancho de reloj: Tperiodo > Tprop.delay + Tsu +Tprop

retardos de propagacin a travs de FF (bajo a alto, alto


a bajo, mximo y tpico)

Clk

Tsu

Th

1.8
ns

0.5
ns
Tw
3.3
ns

Tsu

Th

1.8
ns

0.5
ns
Tw
3.3
ns
Tpd

Tpd
1.1-3.6 ns

1.1-3.6 ns

todas las medidas se hacen desde el evento del reloj (canto positivo)
10: Memorias Sincrnicas

21

Cascadas de flip-flops

Ejemplo: Registro corrimiento (shift register)


valor nuevo va en primera etapa
mientras que el valor previo de la primera etapa va a la
segunda etapa
considerar tiempos de setup/hold/retardo de propagacin
(propagation delay tiene que ser > tiempo de hold)
IN

D Q

Q0

D Q

Q1

OUT

CLK
100ns

outputs
indefinidos

IN
Q0
Q1
CLK
10: Memorias Sincrnicas

22

Cascadas de flip-flops (cont)

Porque esto funciona


retardos de propagacin exceden tiempos T h (entradas y
reloj no cambian durante tiempo hold)
ancho de reloj en bajo excede T su

estos garantizan que la prxima etapa va a obtener valor


actual antes de que cambie al prximo valor
In

Q0
Q1

Tsu
1.8ns

Tsu
1.8ns
Tpd
1.1-3.6ns

Tpd
1.1-3.6ns

CLK
Th
0.5ns

Th
0.5ns

restricciones de tiempo
garantizan funcionamiento
correcto de componentes
en cascada
asume distribucin del
reloj infinitamente rpida
(sin skew)
10: Memorias Sincrnicas

23

Retardos (skew) en el reloj

Comportamiento correcto asume que el prximo estado


es determinado por todos los FF al mismo tiempo
difcil en sistemas rpidos porque el tiempo para que
el reloj llegue al FF es comparable al retardo en la
lgica
efecto de retardo en FF en cascada:
100
In
Q0
Q1
CLK0
CLK1

CLK1 es una versin


retardada de CLK0

estado original: IN = 0, Q0 = 1, Q1 = 1
por retardo, prximo estado se convierte en: Q0 = 0, Q1 = 0, y no Q0 = 0, Q1 = 1
10: Memorias Sincrnicas

24

Fallas en sincronizacin de inputs

Sincronizacin 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 lento
permite que la sincronizacin ocurra mas fcilmente
(2) usar lgica mas rpida en el sincronizador
(3) hacer cascada de sincronizadores (ambos
tendran que fallar)

asynchronous
input

synchronized
input

Q
Clk

synchronous system
10: Memorias Sincrnicas

25

Manejo de inputs asincrnicos

Nunca permitir que un input asincrnico haga fan-out a


mas de un flip-flop
sincronizar lo mas rpido posible y tratar como seal
sincrnica
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

10: Memorias Sincrnicas

26

Manejo de inputs asincrnicos (cont)


Qu puede ocurrir?
cambios en input ocurren muy cerca del
canto del reloj (vulnerando restriccin de
tiempo de setup)
In
Q0
Q1

In es asincrnico y hace fan-out


a D0 and D1
un FF captura la seal,
el otro no
se llega a estado inconsistente

CLK

10: Memorias Sincrnicas

27

10-Memorias Sincrnicas
10.1 Memorias sincrnicas
10.2 Metodologas de temporizacin
(timing)
10.3 Ejemplos: registros de corrimiento y
contadores simples
10.4 HDL

10: Memorias Sincrnicas

28

Registros

Colecciones de flip-flops con controles y lgica similares


valores almacenados de alguna forma estn
relacionados (ej: forman un valor binario)
comparten reloj, reset y set
lgica similar en cada etapa

Ejemplo: registro de cuatro bits


OUT1

OUT2

OUT3

OUT4

"0"
R S
D Q

R S
D Q

R S
D Q

R S
D Q

CLK
IN1

IN2

IN3

IN4

10: Memorias Sincrnicas

29

Registros de corrimiento (shift register)


Mantienen muestreo del input

almacena valor de los ltimos 4 inputs en


secuencia
Ejemplo: 4-bit shift register

OUT1
IN

D Q

D Q

OUT2
D Q

OUT3

OUT4

D Q

CLK

10: Memorias Sincrnicas

30

Registro de corrimiento universal


Tiene varias funciones:

inputs paralelo o serial


outputs paralelo o serial
permite corrimiento a la izquierda o derecha
nuevos valores para el corrimiento entran de
izquierda a derecha
output

left_in
left_out
clear
s0
s1

right_out
right_in
clock

input

si clear = 1, contenidos y outputs


del registro = 0
s1 y s0
s0
0
0
1
1

determinan la funcin:
s1 funcin
0
hold state
1
shift right
0
shift left
1
load new input

10: Memorias Sincrnicas

31

Diseo del registro de corrimiento


universal

Considerando uno de los cuatro FFs:


valor nuevo en nuevo ciclo del reloj:
clears0
1

0
0
0
0
0
1
0
1

s1

0
1
0
1

new value
0
output
output value of FF to left (shift righ
output value of FF to right (shift le
input

celda de un FF

to N-1th
cell

to N+1th
cell

Q
D

CLK

CLEAR
0 1 2 3
Q[N-1]
(left)

Input[N]

s0 and s1
control mux
Q[N+1]
(right)

10: Memorias Sincrnicas

32

Aplicacin de registro de corrimiento

Conversin paralela a serial para transmisin serial

parallel outputs (8 bits)

parallel inputs (8 bits)

serial transmission (1 bit)

10: Memorias Sincrnicas

33

Reconocedor de patrones

Funcin combinacional de muestreo de inputs


en este caso, reconocer el patrn 1001 en la seal de
input IN

OUT

OUT1
IN

D Q

D Q

OUT2
D Q

OUT3

OUT4

D Q

CLK

10: Memorias Sincrnicas

34

Contadores

Secuencian por un conjunto fijo de patrones


en este caso: 1000, 0100, 0010, 0001
uno de los patrones es estado inicial (al cargarlo o usando
set/reset)

OUT1
IN

D Q

D Q

OUT2
D Q

OUT3

OUT4

D Q

CLK

10: Memorias Sincrnicas

35

Contador Binario

Lgica entre registros


XOR deciden cuando el bit debera cambiar
siempre para primer bit, solo cuando primer bit es
verdad para el segundo etc...
output : 0000, 0001, 0010, 0011, 0100, 0101,
0111, ...
OUT1

D Q

OUT2

D Q

OUT3

D Q

OUT4

D Q

CLK

"1"

10: Memorias Sincrnicas

36

Contador binario de cuatro bits sincrnico

Componente estandard en muchas aplicaciones


FF con activacin en canto de subida, con carga y
clear sincrnicos con el reloj
carga de datos paralelo desde D, C, B, A
enable: tiene que estar alta para contar
RCO: ripple-carry se usa para cascadear contadores
alto cuando contador en estado mas alto (1111) EN
implementa usando una compuerta AND
D
(2) RCO goes high

(3) High order 4-bits


are incremented

C
B
A

RCO

QD
QC
LOAD QB
QA
CLK
CLR

(1) Low order 4-bits = 1111

10: Memorias Sincrnicas

37

Contadores con offset (punto de partida)

Carga de offset counters sincrnico


e.g., 0110, 0111, 1000, 1001,
1010, 1011, 1100, 1101, 1111, 0110, . . .

"1"

EN
RCO

"0"
"1"
"1"
"0"

D
C
B
A

QD
QC
QB
QA

LOAD
"0"

Termino comparator para valor de termino


e.g., 0000, 0001, 0010, ..., 1100, 1101, 0000
"1"

CLK
CLR

EN
RCO

"0"
"0"
"0"
"0"

Combinaciones (valor de comienzo y termino)

D
C
B
A

QD
QC
QB
QA

LOAD
CLK
CLR

10: Memorias Sincrnicas

38

10-Memorias Sincrnicas
10.1 Memorias sincrnicas
10.2 Metodologas de temporizacin
(timing)
10.3 Ejemplos: registros de corrimiento y
contadores simples
10.4 Verilog

10: Memorias Sincrnicas

39

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 Sincrnicas

40

Flip-flops (cont)
reset/set syncronico asincrnico

una hebra que espera el reloj


tres modulos paralelos solo una espera el
reloj
Synchronous

module dff
input
output
reg

(clk, s, r, d, q);
clk, s, r, d;
q;
q;

always @(posedge clk)


if (r)
q = 1'b0;
else if (s) q = 1'b1;
else
q = d;
endmodule

Asynchronous
module dff
input
output
reg

(clk, s, r, d, q);
clk, s, r, d;
q;
q;

always @(posedge r)
q = 1'b0;
always @(posedge s)
q = 1'b1;
always @(posedge clk)
q = d;
endmodule
10: Memorias Sincrnicas

41

FF Incorrecto
Usa always para esperar por un cambio de

reloj

module dff (clk, d, q);


input clk, d;
output q;
reg
q;

No es correcto! Q va a
cambiar en cualquier
cambio no solo un canto

always @(clk)
q = d;
endmodule

10: Memorias Sincrnicas

42

Asignaciones que bloquean y no


bloquean

Bloquean (X=A)
completa la asignacin antes de seguir al prximo
comando

No-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
temp = B;
B = A;
A = temp;
end

always @(posedge CLK)


begin
A <= B;
B <= A;
end

10: Memorias Sincrnicas

43

Asignacin 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 reloj
todos los FFs cambian juntos

// B,C,D all get the same value of A


always @(posedge clk)
begin
B = A;
C = B;
D = C;
end
// implements a shift register too
always @(posedge clk)
begin
B <= A;
C <= B;
D <= C;
end
10: Memorias Sincrnicas

44

Contador Mobius en Verilog


initial
begin
A =
B =
C =
D =
end

1b0;
1b0;
1b0;
1b0;

always @(posedge clk)


begin
A <= ~D;
B <= A;
C <= B;
D <= C;
end
10: Memorias Sincrnicas

45

Contador Binario en Verilog


module binary_counter (clk, c8, c4,
c2, c1);
input clk;
output c8, c4, c2, c1;
reg [3:0] count;
initial begin
count = 0;
end
always @(posedge clk) begin
count = count + 4b0001;
end
assign
assign
assign
assign
endmodule

c8
c4
c2
c1

=
=
=
=

count[3];
count[2];
count[1];
count[0];

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
assign
assign
assign
assign

c8 = count[3];
c4 = count[2];
c2 = count[1];
c1 = count[0];
rco = (count == 4b1111);

endmodule

10: Memorias Sincrnicas

46

Resumen Memorias Sincrnicas

Bloques fundamentales de circuitos con estados

latch y flip-flop
latch R-S, R-S master/slave, D master/slave,
flip flops activados por cantos: D, JK, T

Metodologas de temporizacin
uso de relojes
FFs en cascada funcionan porque retardos de propagacin
exceden tiempo de hold
cuidado de los retardos en reloj (clock skew)
Inputs asincrnicos
posibles problemas en el sincronizador
Registros bsicos
registros de corrimiento
contadores

10: Memorias Sincrnicas

47

También podría gustarte