elo211: sistemas digitales tomás arredondo vidal 1er...

49
ELO211: Sistemas Digitales Tomás Arredondo Vidal 1er Semestre – 2008 Este material está basado en: textos y material de apoyo: Contemporary Logic Design 1 st / 2 nd 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 Sincrónicas 1

Upload: ledien

Post on 21-Sep-2018

213 views

Category:

Documents


0 download

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'

QQ

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