Sunteți pe pagina 1din 49

ELO211: Sistemas Digitales Toms Arredondo Vidal 1er 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 Silva material en el sitio http://es.wikipedia.org
10: Memorias Sincrnicas

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 3

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)
R R S Q S Q NOR x y z 0 0 1 0 1 0 1 0 0 1 1 0

Reset Set

Q' NAND x y z 0 0 1 0 1 1 1 0 1 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)
Q S' Q

S' R'

R'

Q'
10: Memorias Sincrnicas 4

Comportamiento temporal de latch R-S


R Q

Q'

Reset R S Q \Q

Hold

Set

Reset

Set

100

Race

10: Memorias Sincrnicas

Comportamiento de estados de latch R-S


SR=10

Diagrama de estados estados: valores posibles

SR=00 SR=01

Q Q' 0 1 SR=01

SR=01 SR=10 SR=11 Q Q' 0 0

Q Q' 1 0

SR=00 SR=10

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 SR=01 SR=11

SR=11 SR=00 SR=11 SR=10

SR=00

Q Q' 1 1

S 0 0 1 1

R 0 1 0 1

Q hold 0 1 unstable
6

10: Memorias Sincrnicas

Anlisis de latch R-S


Tabla estados y K-mapa
R Q

Q(t)
S R Q(t+)

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

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

S
0 0 0 X X 1 1

Q(t)

R ecuacin caracterstica Q(t+) = S + R Q(t)


10: Memorias Sincrnicas 7

S=R=1 no es permitido

Actividad: latch R-S usando NAND


R Q'

Q(t)
R S

S 0 0 0 0 1 1 1 1

R 0 0 1 1 0 0 1 1

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
0 0 0 X X

S
1 1

reset set not allowed

Q(t)

R ecuacion caracteristica Q(t+) = S + R Q(t)


10: Memorias Sincrnicas 8

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

100

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

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 10

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 R

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

stable changing stable changing stable R and S clock 10: Memorias Sincrnicas 11

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

R S clock

R S

Q Q

R S

Q Q

10: Memorias Sincrnicas

12

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 (master-slave Flip Flop activado por niveles)
master stage R S R S Q Q P slave stage R S Q Q

CLK

10: Memorias Sincrnicas

13

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
master stage R 1s Reset catch S CLK R S Q Q P P slave stage R S Q Q

Set S R CLK P P Q Q

Master Outputs Slave Outputs


10: Memorias Sincrnicas 14

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)
master stage R D CLK 10 compuertas
10: Memorias Sincrnicas 15

slave stage Q Q P R S Q Q Q Q

Flip-flop JK
J es un set, K es reset, ambos indican complemento del estado actual
J K CLK Q Q J 0 0 1 1 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 ?
K J D Q Q CLK D J K CLK
10: Memorias Sincrnicas 16

Q Q

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 Q FF T T Q(k+1) 0 Q(k) 1 Q(k)

CLK

Implementacin de FF T usando un FF JK?


T J K CLK
10: Memorias Sincrnicas 17

Q Q

Comparacin de latches y flip-flops


D Q CLK positive edge-triggered flip-flop D CLK Qedge D Q G CLK transparent (level-sensitive) latch Qlatch

comportamiento no es el mismo si es que los inputs cambian cuando el clock esta alto
10: Memorias Sincrnicas 18

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

19

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 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 clock stable changing data clock
10: Memorias Sincrnicas 20

data

D Q

D Q

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

21

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
Tsu Th

retardos de propagacin a travs de FF (bajo a alto, alto a bajo, mximo y tpico)


Tsu D 1.8 ns Th 0.5 ns Tw 3.3 ns 1.8 ns 0.5 ns Tw 3.3 ns Tpd Q Tpd 1.1-3.6 ns 1.1-3.6 ns

Clk

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

22

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 23

Cascadas de flip-flops (cont)


Porque esto funciona retardos de propagacin exceden tiempos Th (entradas y reloj no cambian durante tiempo hold) ancho de reloj en bajo excede Tsu estos garantizan que la prxima etapa va a obtener valor actual antes de que cambie al prximo valor
In Q0 Q1 CLK Th 0.5ns Th 0.5ns

Tsu 1.8ns Tpd 1.1-3.6ns

Tsu 1.8ns Tpd 1.1-3.6ns

restricciones de tiempo garantizan funcionamiento correcto de componentes en cascada

asume distribucin del reloj infinitamente rpida (sin skew)


10: Memorias Sincrnicas

24

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 25

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

Q Clk

synchronized input

synchronous system
10: Memorias Sincrnicas 26

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 Q0

Clock D Q Q1 D Q

Clock Q1

Clock

Clock

10: Memorias Sincrnicas

27

Manejo de inputs asincrnicos (cont)


Que puede ocurrir?
cambios en input ocurren muy cerca del canto del reloj (vulnerando restriccin de tiempo de setup)
In Q0 Q1 CLK In es asincrnico y hace fan-out a D0 and D1 un FF captura la seal, el otro no se llega a estado inconsistente

10: Memorias Sincrnicas

28

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

29

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 "0" R S D Q CLK IN1 IN2 IN3 IN4 R S D Q R S D Q R S D Q OUT2 OUT3 OUT4

10: Memorias Sincrnicas

30

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 CLK D Q D Q

OUT2 D Q

OUT3 D Q

OUT4

10: Memorias Sincrnicas

31

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 si clear = 1, contenidos y outputs del registro = 0 s1 y s0 determinan la funcin: s0 s1 funcin 0 0 hold state 0 1 shift right 1 0 shift left 1 1 load new input

left_in left_out clear s0 s1

right_out right_in clock

input

10: Memorias Sincrnicas

32

Diseo del registro de corrimiento universal


Considerando uno de los cuatro FFs: valor nuevo en nuevo ciclo del reloj:
clear 1 0 0 0 0 s0 0 0 1 1 s1 0 1 0 1 new value 0 output output value of FF to left (shift right) output value of FF to right (shift left) input

celda de un FF

to N-1th cell

Q D

to N+1th cell CLK

CLEAR 0 1 2 3 Q[N-1] (left) s0 and s1 control mux Q[N+1] (right)


33

10: Memorias Sincrnicas

Input[N]

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

34

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 CLK D Q D Q

OUT2 D Q

OUT3 D Q

OUT4

10: Memorias Sincrnicas

35

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 CLK D Q D Q

OUT2 D Q

OUT3 D Q

OUT4

10: Memorias Sincrnicas

36

Actividad
Como funciona este contador?
OUT1 IN CLK D Q D Q OUT2 D Q OUT3 D Q OUT4

Cuenta la secuencia: 1000, 1100, 1110, 1111, 0111, 0011, 0001, 0000 Conocido como contador Mobius (o Johnson)

10: Memorias Sincrnicas

37

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 CLK D Q OUT2 D Q OUT3 D Q OUT4

"1"

10: Memorias Sincrnicas

38

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) implementa usando una compuerta AND
(2) RCO goes high

Contador binario de cuatro bits sincrnico

EN D C RCO B QD A QC LOAD QB QA CLK CLR

(3) High order 4-bits are incremented

(1) Low order 4-bits = 1111 10: Memorias Sincrnicas

39

Contadores con offset (punto de partida)


Carga de offset counters sincrnico e.g., 0110, 0111, 1000, 1001, 1010, 1011, 1100, 1101, 1111, 0110, . . .

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

EN RCO QD D QC C QB B QA A LOAD CLK CLR

"0"

Termino comparator para valor de termino e.g., 0000, 0001, 0010, ..., 1100, 1101, 0000

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

EN D C B A LOAD CLK CLR RCO QD QC QB QA

Combinaciones (valor de comienzo y termino)

10: Memorias Sincrnicas

40

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

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 Sincrnicas

42

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;

Asynchronous
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

always @(posedge r) q = 1'b0; always @(posedge s) q = 1'b1; always @(posedge clk) q = d; endmodule 10: Memorias Sincrnicas 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 cualquier cambio no solo un canto

10: Memorias Sincrnicas

44

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

45

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 46

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

47

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];
reg [3:0] count; reg rco; initial begin . . . end always @(posedge clk) begin . . . end assign assign assign assign assign endmodule c8 = count[3]; c4 = count[2]; c2 = count[1]; c1 = count[0]; rco = (count == 4b1111); module binary_counter (clk, c8, c4, c2, c1, rco); input clk; output c8, c4, c2, c1, rco;

10: Memorias Sincrnicas

48

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

Inputs asincrnicos Registros bsicos

uso de relojes FFs en cascada funcionan porque retardos de propagacin exceden tiempo de hold cuidado de los retardos en reloj (clock skew) posibles problemas en el sincronizador registros de corrimiento contadores
10: Memorias Sincrnicas

49

S-ar putea să vă placă și