Upload
others
View
6
Download
0
Embed Size (px)
Citation preview
Reti Sincrone
• Le reti sequenziali sincrone memorizzano il proprio stato in dei FF-D
• Le variabili di stato future sono quelle all’ingresso dei FF-D mentre le variabili di stato presente sono le uscite dei FF-D.
• Lo stato cambia al fronte del clock. Il clock deve quindi essere tale che lo stato futuro sia stabile prima dell’arrivo del fronte
• Il metodo di sintesi ed analisi di una rete sincrona è analogo a quello delle reti asincrone, ma ci sono meno restrizioni, ad esempio• le configurazioni di stati fra cui esistono transizioni non devono
essere necessariamente adiacenti. • Gli stati non devono essere necessariamente stabili per le
configurazioni di ingresso che li hanno generati• … (vedi fine blocco sulle reti sequenziali)
• Il Flip Flop assume quindi una grande importanza in quanto blocco elementare di memorizzazione di un bit
Componenti sincroni di largo impiego• Registri
• Semplice
• Con write enable (WE)
• Con output enable (OE)
• Universal Shift register (USR) => Quattro modalità
• Contatori
• Riconoscitore di sequenza
• Generatore di forme d’onda
4
Reti sincrone: come realizzare il ritardo T0
Rete combinatoria ideale
Ingressi
Stato presenteStato futuro
sf1
sfk
s1
sk
REGISTRO
Uscite
Q D
F.F.-D
Q D
F.F.-D
Q D
F.F.-D
Clock di periodo T0. T0 deve essere tale che tutti I segnali sfi e le uscite siano stabili prima del fronte e rispettando inoltre il tsetup
T0
tsmax = max(ts1,…,tsk)
tRmax : tempo di risposta ; tSUmin : tempo di set-up
5
Registri in cascata e tempo di HOLD
ATTENZIONE: Se l’uscita di un registro risulta essere l’ingresso di un altro registro, occorre che il tempo di risposta (TR) sia sufficientemente elevato in modo tale che sia rispettato il tempo di hold (TH) del registro a valle, quindi: TR > TH
R1 R2
I O
It(n-1) It(n-1) Itn
ItnIngresso di R1
Uscita di R1=
Ingresso di R2
TSU
TR
TH
Se TR < TH non viene rispettato il tempo di hold!!
Clock
Clock
6
Sincronizzazione di segnaliasincroni
Se le condizioni espresse nel lucido precedente sono soddisfatte, la cascata di 2 registri può essere utilizzata per sincronizzare degli ingressi asincroni
R1 R2
Clock
Sistema esterno asincrono
Rete sincrona
Segnali sincroni
Segnali asincroni
Rete di sincronizzazione
• I segnali sincroni arrivano subito dopo il fronte del clock o comunque con anticipo rispetto al fronte successivo
• I segnali asincroni possono arrivare in qualsiasi momento, siccome c’è il rischio che essi pervengano durante un tempo di setup, è talvolta necessario sincronizzarli tramite lo schema sopra
7
Il procedimento di sintesi delle reti sincrone
Specifiche Grafo degli stati Tabella di flusso
Codifica dello stato (arbitraria)
Tabella delle transizioniSintesi MINIMA di F e G
SCHEMA LOGICO
F(rete combinatoria)
G(rete combinatoria)
REGISTRO
u(tn)i(tn)
s(tn+T0) s*(tn)T0
Registro Registro con OE
R
Q0
Qn-1
D0
Dn-1
>
Qui, cioè nella rete a monte, viene calcolato, durante il periodo di clock, il valore futuro del registro nel clock successivo
QD
>
FF-D
DiQi
CLK
CLK
All’interno n FF-D che condividono il clock
R
Q0
Qn-1
D0
Dn-1
>
SE OE (Output Enable) attivo, allora l’uscita vale come in un normale registro. Se OE non è attivo l’uscita va in alta impedenza. Si usa in schemi dove l’uscita può essere controllata da più reti di cui è garantito che una sola abbia OE attivo
QD
>
FF-D
Di
Qi
CLK
CLK
OE si usa allo stesso modo per tutti i FF componenti ed ha effetto immediato, cioè non agisce sullo stato futuro, ma direttamente sulle uscite
OEOE
OE
Registro con WE
R
Q0
Qn-1
D0
Dn-1
>
Se Write Enable è non attivo, allora lo stato futuro del registro sarà uguale a quello presente. Se WE è attivo il registro funziona normalmente, cioè campiona gli ingressi sul fronte.
QD
>
FF-DDi
Qi
CLK
Questo schema ci consente di scegliere lo stato futuro in base alla configurazione degli ingressi di controllo del registro
WEWE
0
1
MUX
A
Quando WE è non attivo il registro è in memorizzazione (HOLD) e gli ingressi non vengono campionati
10
Contatore binario x4
13
2
0
Grafo degli stati
Stato
presente
Stato futuro
0 1
1 2
2 3
3 0
Tabella di flusso
Q1Q0 Q1fQ0f
00 01
01 10
10 11
11 00
Tabella delle transizioni
Q1\ Q0 0 1
0 0 1
1 1 0
Q1\Q0 0 1
0 1 0
1 1 0
Q1f Q0f
Q1f = Q1Q0+ Q1Q0
Q0f =Q0
Andamento temporale
Clock
Q1
Q0
Q0
Q1
11
Contatore binario x16: funzionamento
0
115
2
16 stati 4 bit per la codifica dello stato
Grafo degli stati
Q3Q2Q1Q0 Q3fQ2fQ1fQ0f
0000 0001
0001 0010
… …
1110 1111
1111 0000
Tabella delle transizioni
Contatore x 16
Clock
Q3 Q2 Q1 Q0L’uscita è un numero binario a 4 bit. Ad ogni impulso di clock l’uscita viene incrementata di 1 (modulo 16). Non è presente alcun ingresso.
12
Contatore binario x16: realizzazione
CI 4 BIT
a0 ADDER
a1
a2
a3
s0
s1
s2
s3
b0
b1
b2
b3
CO
01
000
D0
D1
D2
D3
Q0
Q1
Q2
Q3
Q0
Q1
Q2
Q3
13
Contatore: Reset, Load, Up/Down, EnableReset*: il conteggio viene portato a 0
Load*: carica un valore imposto dall’esterno L3L2L1L0
Enable: abilita il conteggio
U_D: incremento del conteggio o decremento
+ Prioritario
- Prioritario
Reset*
Load*
Enable
U_D
L[3..0]4
N.B. Sono tutti comandi sincroni
14
Load & Reset
Si Di
Reset*
Li
1
0
Load*
Espressione degli ingressi del registro (i=0..3)
Di = Reset* (Load* . Si + Load∗ . Li)
Reset* = 0 Di = 0
Reset* = 1 Di = Load* . Si + Load∗ . Li
Load* = 0 Di = Li (caricamento)Load* = 1 Di = Si (conteggio)
15
Up/Down & Enable
U_D
CI
Enable
a0
an-1
Espressione degli ingressi ai (i=0..3) e CICI = Enable U_Dai = Enable U_D
Enable = 0 viene sommato, al valore corrente dello stato, 0 il contatore è fermo
Enable = 1 bisogna considerare il valore del segnale U_D Se U_D = 1 si torna alla configurazione di figura: conteggio in avantiSe U_D = 0 si somma al valore corrente “-1” (1111): conteggio all’indietro
16
Contatore: comandi sincroni e funzionamento
0 0 1 2 3 0 0 1 2 3 2 1 2 3 1 2 6 4 5 6
0 1 2 3 0 0 1 2 3 2 1 2 3 1 2 6 4 5 6 7
x x x x x x x x x x x x x 1 x 6 4 x x x
Q[2..0]
Enable
Reset*
U_D
Load*
L[2..0]
Clock
Q*[2..0]
17
Contatore: riduzione della base di conteggiox16 x10
?
x16RESET* Q3 Q2 Q1 Q0
“9”
Ipotesi: U_D = 1 (conta in avanti)
Cosa cambia se si vuole comunque disporre anchedi un segnale RESET esterno?
x16LOAD* Q3 Q2 Q1 Q0
“0”
L3 L2 L1 L0
Ipotesi: U_D = 0 (conta indietro)
Cosa cambia se si vuole comunque disporreanche di un segnale LOAD esterno?
1001 “9”
Esercizio: a partire da un contatore binario x16 realizzare un contatore BCD, prevedendo icomandi di Enable, Load*, Reset* e U_D
18
Divisore di frequenza: esempio con un contatore x 8
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 . . .
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0
0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0
Q[2..0]
Q0
Q1
Q2
Clock
frequenza(Q0) = fCLOCK/2frequenza(Q1) = fCLOCK/4frequenza(Q2) = fCLOCK/8
Osservando le uscite del contatore si nota che:
19
Riconoscitore di sequenze: grafo degli statiRiconoscitore di sequenze di 3 bit: “011”. L’uscita si porta ad 1 appena la sequenza
viene riconosciuta e a 0 appena la sequenza di ingresso è “fuori sequenza”
I
1,0
A0,0
0,0
B1,0
0,0C
1,1
1,0
D0,1
E1,1
0,0
F1,1
0,0
0,1
1,0
i: 00011011011110101011010…
U: 00001111111000000001110…
i,U
20
Diagramma dei tempiClock
Ingresso (i) 1 1 0 1 1 0 1 1 1 1 0 1 1 0 0 …
Stato
Presente
I I I A B C D E F I I A B C D A
Stato
futuro
I I A B C D E F I I A B C D A …
Uscita(U) 0 0 0 0 1 1 1 1 0 0 0 0 1 1 0 0
Sulla base dell’ingresso presente e dello stato presente la rete calcola lo stato futuro e l’uscita. Lo stato futurodiventerà stato presente a seguito del prossimo fronte del clock.
21
Riconoscitore di sequenze: grafo degli stati
I
1,0
A0,0
0,0
B1,0
0,0C
1,1
1,0
D0,1
E1,1
0,0
F1,1
0,0
0,1
1,0
i,U
I,0
1
A,00
0
B,01
0C,1
1
1
D,10
E,11
0
F,11
0
0
1
i
Mealy
Moore
Come risulta l’uscita utilizzando Moore?
22
Riconoscitore di sequenze: tabella delle transizioni
0 1
I A I
A A B
B A C
C D I
D A E
E A F
F D I
Tabella di flusso dello stato futuro
0 1
000 001 000
001 001 010
010 001 011
011 100 000
100 001 101
101 001 110
110 100 000
Tabella delle transizioni dello stato futuro
Codifica dello stato
I: 000 A: 001 B: 010C: 011 D: 100 E: 101F: 110
Stato presente
i i
S0S1S2
Nota: non occorre preoccuparsi di come codificare lo stato interno per evitare problemi di alea.
23
Riconoscitore di sequenze: mappa di Karnaugh
0 1
000 001 000
001 001 010
010 001 011
011 100 000
100 001 101
101 001 110
110 100 000
Tabella delle transizioni
00 01 11 10
00 001 000 010 001
01 001 011 000 100
11 100 000 --- ---
10 001 101 110 001S0 S1 S2
i
S0 S1
S2 i
Mappa di Karnaugh
S0fS1fS2f
S0fS1fS2f
24
Riconoscitore di sequenze: reti minima di aggiornamento dello stato
00 01 11 10
00 001 000 010 001
01 001 011 000 100
11 100 000 --- ---
10 001 101 110 001
S0S1
S2 i
Mappe di Karnaugh 00 01 11 10
00 0 0 0 0
01 0 0 0 1
11 1 0 - -
10 0 1 1 0
00 01 11 10
00 1 0 0 1
01 1 1 0 0
11 0 0 - -
10 1 1 0 1
00 01 11 10
00 0 0 1 0
01 0 1 0 0
11 0 0 - -
10 0 0 1 0
S0f= S0S1’i + S1S2i’ + S0S1i’
S2f= S1’i’ + S0’S1S2’ + S0S1’S2’
S2 i
S0S1 S0S1
S0S1
S2 iS2 i
S1f= S0‘S1S2’i + S1’S2i
Nota: non occorre preoccuparsi del problema dell’alea statica!
S0fS1fS2f
25
Riconoscitore di sequenze: la funzione di uscita
S0S1S2 U
000 0
001 0
010 0
011 1
100 1
101 1
110 1
111 -
Tabella della verità della funzione di uscita
0 1
00 0 0
01 0 1
11 1 -
10 1 1
Mappa di Karnaugh
S0S1
S2
U
U =S0 + S1S2
Alea?
(Modello di Moore)
26
Riconoscitore di sequenze: stati equivalenti
I
1,0
A0,0
0,0
B1,0
0,0C
1,1
1,0
D0,1
E1,1
0,0
F1,1
0,0
0,1
1,0
i,U
Osservando il grafo degli stati è possibile notare che sia C che F vengono raggiunti con la stessa configurazione di ingresso (1) e presentano la stessa uscita (1). Per le due configurazioni di ingresso transitano negli stessi stati con la stessa uscita: con ingresso 0 in D con uscita 1 e con ingresso 1 in I con uscita 0. E’ possibile quindi non aggiungere lo stato F: da E con ingresso 1 si ha uscita 1 e stato fututo C.
1,1
27
Generatore di forme d’onda: una prima soluzione
0 0 1 0 1 1 0 1 0
0 1 0 0 1 0 1 1 0
Clock
X
Y
x8A0Q0
Q1
Q2
A1
A2
0 1 2 3 4 5 6 7
X 0 0 1 0 1 1 0 1Y 0 1 0 0 1 0 1 1
Uscita
UscitaLa forma d’onda generata è affetta dal problema dell’alea?
E’ ovvio che in questo particolare caso, siccome stiamogenerando una forma d’onda, vorremmo che essa non sia
affetta da alea
…
U
Versione ai morsetti di principio possono essere aggiunti ingressi per
configurare la forma d’onda o per abilitare e disabilitare la generazione
Generatore di forme d’onda• Una forma d’onda è un segnale che assume il valore alto o basso in precisi istanti temporali e che
poi, una volta terminata la sequenza, solitamente ricomincia ciclicamente.
• Un generatore di forme d’onda è una rete sequenziale con un’uscita che rappresenta la forma d’onda stessa. Essendo l’uscita la forma d’onda si preferisce che non sia affetta da alee per non confondere le alee con la forma d’onda generata.
• Per progettare un generatore di forme d’onda c’è una rete che tiene conto dell’istante al quale siamo (tipicamente un contatore) Ed una rete che, a partire dallo stato presente (le uscite del contatore) genera in modo combinatorio l’uscita. Nel lucido precedente tale rete era un multiplexer
• Per avere un generatore di forma d’onda programmabile (cioè avere la possibilità di modificare la forma d’onda generata) servono degli ingressi aggiuntivi che consentono la configurazione della forma d’onda da generare (nel lucido precedente veniva usato un registro)
• Per essere sicuri che la forma d’onda non sia affetta da alee ci sono due condizioni: lo stato deve variare fra configurazioni adiacenti (il conteggio binario non va bene in questo caso) . Inoltre la rete F deve essere ottenuta con coperture tali da non ammettere alee statiche sulla variazioni dell’ingresso singolo
• Esistono diversi tipi di contatori non binari, in essi la sequenza degli stati è diversa dall’ordine dei numeri binari• Contatore johnson : conto fino a 2n• Contatore gray: conto fino a 2n
29
Contatore Johnson (configurazioni di stato adiacenti)000 100 110
111011001
00 01 11 10
0 100 000 001 -
1 110 - 011 111
(y2y1y0)
y1y0
y2
(Y2Y1Y0)
00 01 11 10
0 1 0 0 -
1 1 - 0 1
y1y0
Y2
y200 01 11 10
0 0 0 0 -
1 1 - 1 1
y1y0
Y1
y200 01 11 10
0 0 0 1 -
1 0 - 1 1
y1y0
Y0
y2
Y2 = /y0 Y1 = y2 Y0 = y1
Unico bit che cambia
30
Generazione di forme d’onda: con contatore Johnson
D
/Q
D QD Q Q
R.C.
0 4 6 7 3 1 0 4 6 7 …
0 0 1 1 0 0 0 0 1 1 …
0 0 0 1 1 1 0 0 0 1 …
0 1 0 1 0 1 0 1 0 1 …
Clock
Stato(y2y1y0)
U
F
y2 y1 y0
Struttura di un contatore Johnson a 3 bit
Equazioni di stato:Y2 =y0
Y1 = y2
Y0 = y1
Valore decimale dello stato