1
I flip-flop ed il register file
Prof. Alberto BorgheseDipartimento di Scienze dell’Informazione
Università degli Studi di Milano
A.A. 2012-2013 http:\\borghese.di.unimi.it\1/41
Riferimento sul Patterson: Sezioni C.9 e C.11
Sommario
I problemi dei latch trasparenti sincroni
I flip-flop DI flip-flop D
I registri ed il register file
A.A. 2012-2013 http:\\borghese.di.unimi.it\2/41
2
I bistabili
• Elementi di memoria (latch)• “Cancelli” (flip-flop)
A.A. 2012-2013 http:\\borghese.di.unimi.it\3/41
•D
I latch
I latch sono chiamati anche dispositivi trasparenti: quando il clock è alto, il valore di D viene riportato in uscita, Q = D.
•Clk
Per tutto il tempo in cui il clock è attivo l’uscita è collegata all’ingresso D dopo di che il
A.A. 2012-2013 http:\\borghese.di.unimi.it\4/41
Per tutto il tempo in cui il clock è attivo, l uscita è collegata all ingresso D, dopo di che il “cancello” si chiude.
Il “cancello” è aperto per tutta la durata di un semiperiodo del clock. Problema?
3
Struttura di un circuito sequenziale
Logica combinatoriaD Q
Flip-flop
D QFlip-flop
Logica combinatoriaD Q
Flip-flop
D QFlip-flopFlip-flop
T
p pT
Flip-flopT
p pT
Clock
A.A. 2012-2013 http:\\borghese.di.unimi.it\5/41
Clock
Shift register
TT
I = D3 Q3 = D2
T
Q2 = D1 Q1 = U
Registro a scorrimento (shift register o barrel shifter). •Un unico ingresso I e un’unica uscita U.
Clk
A.A. 2012-2013 http:\\borghese.di.unimi.it\6/41
g•In presenza di un segnale attivo (clock alto), il contenuto viene spostato verso dx di una posizione. •Il valore contenuto nell’elemento più a dx dove va?•Qual’è il problema con l’utilizzo dei latch?
4
Shift register con i latch (i problemi)
TT
I = D3 Q3 = D2
T
Q2 = D1 Q1 = U
Clk
I
Clk
A.A. 2012-2013 http:\\borghese.di.unimi.it\7/41
I
Q3
Q2
Q1=U3Δτ 3Δτ 3Δτ
Sommario
I problemi dei latch trasparenti sincroni
I flip-flop DI flip-flop D
I registri ed il register file
A.A. 2012-2013 http:\\borghese.di.unimi.it\8/41
5
Dispositivo di sincronizzazione
A.A. 2012-2013 http:\\borghese.di.unimi.it\9/41
Flip-flopDispositivi attivi sul fronte (di salita o discesa) del clock (edge sensitive): il loro stato (uscita) può commutare solo in corrispondenza della transizione alto->basso o basso->alto del clock.
T
D
T
D Q = Qslave
__Qslave
Qmaster
__Qmaster
DslaveD
TT T
A.A. 2012-2013 http:\\borghese.di.unimi.it\10/41
Configurazione Master-Slave
Clk
6
_ Q’
ClkDFlip-flop D
DQ
_ Qm
___ __ ClkQm
Clk
Qm
_ Q
Flip
_ D
_ClkD
___Clk·•
__ ClkQm
A.A. 2012-2013 http:\\borghese.di.unimi.it\11/41
Clk
D_ Qm
Qm_ Q
Q
_ Q’
ClkDFunzionamento del flip-flop D
DQ
_ Qm
___ __ ClkQm
Clk
Qm
_ Q
Flip
_ D
_ClkD
___Clk·•
__ ClkQm
A.A. 2012-2013 http:\\borghese.di.unimi.it\12/41
Clk
D_ Qm
Qm_ Q
Q
7
Clk
_ Q’
Funzionamento del flip-flop D (flip)D
Q
Flip
_ Qm
___Clk·
ClkD
Clk
_
Qm
_ Q
Qm
_ D
Clk
Clk_D
A.A. 2012-2013 http:\\borghese.di.unimi.it\13/41
Clk
D
Qm
ClkD
t
Funzionamento del flip-flop D (flop)
Clk
_ Q’
D
QFlip Flop
_ Qm
___Clk·
ClkD
_ ___Qm Clk
Q_Q
Clk
Qm
_ Q
Clk
_ D ___
Qm Clk
A.A. 2012-2013 http:\\borghese.di.unimi.it\14/41 t
Clk
___ QmClk_ __ QmClk
Q
Ritardo globale:3 Δτmisurato a partiredal fronte di discesa.
8
Temporizzazione dei flip-flop
Clk
_ Q’
D
Q
Flip Flop
_ Qm
_ __ QmClk
E’ attivo su quale fronte?
Q_Q
Qm
_ Q
___ QmClkD
Qm
_ D
A.A. 2012-2013 http:\\borghese.di.unimi.it\15/41
quale fronte?
t
___ QmClk
Clk
_ __ QmClk
Q
TT
I=D3 Qs3 = D2
T
Clk
Qs2 = D1 Qs
1 = U
Shift register con i flip-flop
1 1
=>0
0
I
Clk
Q3 = Qs3
Qm3
FlipFlop
A.A. 2012-2013 http:\\borghese.di.unimi.it\16/41
Q3 Q 3
Qm2
U = Qs1
Qs2
3Δτ3Δτ 3Δτ 3Δτ
9
Configurazione master-slave
• Semi-periodo di clock alto:Il master è trasparente: ingresso > uscita del latch master– Il master è trasparente: ingresso -> uscita del latch master.
– Lo slave è “opaco” -> mantiene l’uscita.– Lo slave è “disaccoppiato” dal latch master.
• Semi-periodo di clock basso:– Il master è opaco: l’uscita del latch master si mantiene.
A.A. 2012-2013 http:\\borghese.di.unimi.it\17/41
Il master è opaco: l uscita del latch master si mantiene.– Il master è “disaccoppiato” dall’ingresso esterno.– Lo slave è trasparente e porta in uscita l’uscita del latch
master.
Struttura di un circuito sequenziale
Logica combinatoriaD Q
Flip-flop
D QFlip-flopFlip-flop
T
p pT
Pone dei problemi di sincronizzazione: la logica combinatoria deve terminare la commutazione in tempo utile.
A.A. 2012-2013 http:\\borghese.di.unimi.it\18/41
10
Temporizzazione di un circuito sequenziale
Logica combinatoriaD Q
Flip-flop
D QFlip-flopFlip-flop
T
p pT
•La logica ha tempo sufficiente per completare la commutazione.•Il periodo di clock è tale, per cui la commutazione del clock avviene dopo che la logica combinatoria ha terminato tutte le commutazioni.•Il tempo necessario alla logica combinatoria per commutare è ≤ tempo associato al cammino critico.
A.A. 2012-2013 http:\\borghese.di.unimi.it\19/41
•Il clock arriva contemporaneamente a tutti i dispositivi sincronizzati.
Temporizzazione: problemi
Logica combinatoriaD Q
Flip-flopT
D QFlip-flopT
L’input D deve essere stabile intorno alla commutazione del clock:•Tempo di set_up: è il tempo minimo per cui deve rimanere stabile l’input D prima del fronte di clock. •Tempo di hold: è il tempo minimo per cui deve rimanere stabile l’input D dopo il fronte di clock (solitamente trascurabile).•Tempo necessario per fare commutare l’uscita master di un flip-flop.
T T
A.A. 2012-2013 http:\\borghese.di.unimi.it\20/41
p p f f p f p
t
Tempo di holdTempo di set-up
D
Clk
11
Temporizzazione: Come si dimensiona il clock
Logica combinatoriaD Q
Flip-flop
D QFlip-flop
T > k * (tp+ tc + ts+ tw)
Tempo di propagazione: è il tempo necessario per propagare il segnale nel flip-flip e qundi alla logica combinatoria (tp).Tempo di skew: ritardo massimo del clock (tw).
Flip-flopT
p pT
Tempo di hold (th)Tempo di propagazione (tp)
(> Tempo di hold)Tempo logica Tempo di hold
A.A. 2012-2013 http:\\borghese.di.unimi.it\21/41 t
Tempo di set-up (ts)
D
Clk
e po og cacombinatoria (tc)
Sommario
I problemi dei latch trasparenti sincroni
I flip-flop DI flip-flop D
I registri ed il register file
A.A. 2012-2013 http:\\borghese.di.unimi.it\22/41
12
Cella di memoriaLa memoria è suddivisa in celle, ciascuna delle quali assume un valore binario stabile.Si può scrivere il valore 0/1 in una cella.Si può leggere il valore di ciascuna cella.
A.A. 2012-2013 http:\\borghese.di.unimi.it\23/41
Control (lettura – scrittura)Select (selezione)Data in & Sense (Data in & Data out).
Latch sincrono come elemento di memoria
E’ trasparente quando Write = 1Se Write = 1 Qt+1 = DSe Write = 0 Qt+1 = Qt
D
WriteS’
•D
A.A. 2012-2013 http:\\borghese.di.unimi.it\24/41
DC’•
Clk = Write
13
Registro
Data in Data out
Write
A.A. 2012-2013 http:\\borghese.di.unimi.it\25/41
Registri
A.A. 2012-2013 http:\\borghese.di.unimi.it\26/41
Un registro a 4 bit. Memorizza 4 bit.
NB Non è un registro a scorrimento (shift register!)
Latch di tipo D
14
Lettura di un registro
Lo stato (contenuto) del bistabile è sempre disponibile.
A.A. 2012-2013 http:\\borghese.di.unimi.it\27/41
La lettura è possibile per tutta la durata del ciclo di clock.
Scrittura di un registroAd ogni colpo di clock lo stato del registro assume il valore dell’ingresso dati.
Cosa occorre modificare perchè il registro venga scritto d ?
Write
A.A. 2012-2013 http:\\borghese.di.unimi.it\28/41
quando serve?Introdurre una sorta di “apertura del cancello (chiusura circuito)” .Può essere sincronizzata o meno con il clock.
Il clock apre il passaggio al conteuto di D attraverso il latch. Quando il segnale di Write è a zero, lo stato non varia.
•
•
D
Clk
S’
C’
•
•
D
Clk
•
•
D
Clk
S’
C’Write
15
Un banco 4 registri x 3bit
D Q D Q D Q
Q0 2Q0 1Q0 0
D2 D1 D0
W0
Clk
D Q D Q D Q
D Q D Q D Q
Q0.2Q0.1Q0.0
Q1.2Q1.1Q1.0W1
W
A.A. 2012-2013 http:\\borghese.di.unimi.it\29/41
D Q D Q D Q
Q2.2Q2.1Q2.0
Q3.2Q3.1Q3.0
W2
W3
Funzionamento del banco di registriDato Write
Dato ReadRegistro 0
Write Registro 2
bit3 bit1bit2 bit0
A.A. 2012-2013 http:\\borghese.di.unimi.it\30/41
Come seleziono il dato da leggere fra i 3 dati possibili?Come seleziono il registro su cui scrivere fra i 3 registri?
16
Lettura del banco di registriDato Write
DatoRegistro 0
#RegRead(2bit)
Write
Dato Read
Registro 2
bit3 bit1bit2 bit0
A.A. 2012-2013 http:\\borghese.di.unimi.it\31/41
Seleziono uno dei registri = porto in uscita l’uscita Q di tutti i bit del registro selezionatoAvrò tanti Mux quanti sono i bit che costituiscono il registro (in questo caso .....)
Scrittura del banco di registri
Dato
Dato Read
Registro 0
dec
#RegWrite(2bit)
Dato Write
Write
Registro 0
Registro 2
bit3 bit1bit2 bit0
A.A. 2012-2013 http:\\borghese.di.unimi.it\32/41
Invio il dato da scrivere a tutti i registri ma devo inviare il segnale di scrittura solamente al registro selezionato
17
Banco di Registri Struttura costituita da un insieme di registri32 bit
2 re
gist
ers
A.A. 2012-2013 http:\\borghese.di.unimi.it\33/41
32
Register file
Banco di registri utilizzabile come memoria
#Reg read 1g
#Reg read 2Contenuto 1
Contenuto 2
#Reg write
Contenuto Write
Insieme di 32 registri da 32 bit
A.A. 2012-2013 http:\\borghese.di.unimi.it\34/41
Possono essere letti / scritti fornendo il numero del registro.
R WX
18
Gestione del register fileLa lettura non modifica il contenuto di un registro (collego uscita Slave con il circuito combinatorio).
La scrittura invece richiede la modifica
#Reg read 1
#Reg read 2Contenuto 1
Contenuto 2
#Reg write
Insieme di 32 registri da 32 bit
#Reg read 1
#Reg read 2Contenuto 1
Contenuto 2
#Reg write
Insieme di 32 registri da 32 bit
La scrittura invece richiede la modifica. Occorre il segnale W.Contenuto Write
R WXContenuto Write
R WX
A.A. 2012-2013 http:\\borghese.di.unimi.it\35/41
#bit_indirizzamento = log2 #bit
Porta di lettura del register file#Reg read 1
#Reg read 2Contenuto 1
Contenuto 2
#Reg write
Contenuto Write
Insieme di 32 registri da 32 bit
#Reg read 1
#Reg read 2Contenuto 1
Contenuto 2
#Reg write
Contenuto Write
Insieme di 32 registri da 32 bit
5
5
32R WXR WX
Un mux per ogni porta di lettura.
Ciascun Mux la la
A.A. 2012-2013 http:\\borghese.di.unimi.it\36/41
Ciascun Mux la la complessità di 32 mux, uno per ogni bit.
19
Possibile porta di scrittura del register file
5
Clk W#Reg read 1
#Reg read 2Contenuto 1
Contenuto 2
#Reg write
C W i
Insieme di 32 registri da 32 bit
#Reg read 1
#Reg read 2Contenuto 1
Contenuto 2
#Reg write
C W i
Insieme di 32 registri da 32 bit #RegWrite
32 Logica control
-loContenutoWrite
Registro 0
Registro k
Contenuto Write
R WXContenuto Write
R WX
A.A. 2012-2013 http:\\borghese.di.unimi.it\37/41
Registro N-1
Porta di scrittura del register file
W
#Reg read 1
#Reg read 2Contenuto 1
Contenuto 2
#Reg write
Contenuto Write
Insieme di 32 registri da 32 bit
#Reg read 1
#Reg read 2Contenuto 1
Contenuto 2
#Reg write
Contenuto Write
Insieme di 32 registri da 32 bit
Clk W
Ho ridotto drasticamente il numero di porte AND.
WR WXR WX
Ingresso C del latch dei registri:Decodificatore per indirizzare il registro
AND
Clk W
#Reg Write#Reg Write
n-1
A.A. 2012-2013 http:\\borghese.di.unimi.it\38/41
AND Comando W
Ingresso D del latch dei registri:Bit dato corrispondente. DatoDato
20
Register file
#Reg Write#Reg Write
RegWrite
n-2n-1
A.A. 2012-2013 http:\\borghese.di.unimi.it\39/41
DatoDato
n-1
n - 2
n-1
I bistabili: riassunto
• Semplici elementi di memoria (1 bit)• “Cancelli”• Latch o flip-flop.
• I latch possono essere asincroni o sincroni.
• La differenza tra latch e flip-flop sta nel fatto che nel primo, lo stato può cambiare (anche più volte) se il clock è alto, mentre nel secondo può cambiare solo su un fronte di clock (salita o discesa secondo l’implementazione).
• Differenti tipi (S-R, D, J-K, T, sincroni o asincroni,..)
A.A. 2012-2013 http:\\borghese.di.unimi.it\40/41
p ( )
• Differenti realizzazioni (con porte NOR, NAND,...)
21
Sommario
I problemi dei latch trasparenti sincroni
I flip-flop DI flip-flop D
I registri ed il register file
A.A. 2012-2013 http:\\borghese.di.unimi.it\41/41