Professional Documents
Culture Documents
Calcolatori 06 Circuiti Sequenziali
Calcolatori 06 Circuiti Sequenziali
Calcolatori
Dario Bruneo
Nota
Le slide seguenti sono da intendersi come materiale didattico aggiuntivo del corso di
Calcolatori 1.
Non possono in nessun modo essere sostitutive dei libri di testo, devono quindi
essere usate esclusivamente come una guida.
Mano, Kime “Logic and Computer Design Fundamentals” 3° edition Pearson Prentice Hall
Per aumentare la flessibilità sarebbe necessario disporre di circuiti in grado di immagazzinare i dati tra
un’operazione e l’altra
Ogni sistema digitale include sia parti realizzate con circuiti combinatori sia elementi di memoria
∂
Si supponga di dovere sommare x = 101 e y = 001
All’istante t1 = t0 + ∂, il bit c1 = 1 verrà ripresentato all’ingresso del full adder al quale saranno applicati gli ingressi x1 = 0 e y1 = 0,
ottenendo in uscita il bit s1 = 1 ed il bit c2 = 0
All’istante t2 = t1 + ∂, il bit c2 = 0 verrà ripresentato all’ingresso del full adder al quale saranno applicati gli ingressi x2 = 1 e y2 = 0,
ottenendo in uscita il bit s2 = 1 ed il bit c3 = 0
In 3 passi, con un ritardo pari a 2∂, una corretta sincronizzazione e l’utilizzo di un solo full adder si è ottenuta la somma di 2 numeri a
3 bit
Ad una variazione degli ingressi seguirà una variazione delle uscite ed una variazione dello stato futuro
Lo stato futuro sarà immagazzinato negli elementi di memoria e ripresentato in ingresso come stato presente
Concetto di “stabilità”:
Essendo l’uscita e lo stato futuro una combinazione sia degli ingressi che dello stato presente non è possibile
rappresentare tali combinazioni mediante le tabelle di verità
Al fine di includere il concetto di stato si utilzzeranno delle opportune tabelle, dette, tabelle di flusso
Contenuto: il valore della (o delle) variabili dello lo stato futuro / il valore della (o delle) variabili di uscita
Ad esempio nel caso del full-adder visto prima (2 ingressi, un’uscita, una variabile di stato)
XY X
C
0/0 0/1 1/0 0/1
Y
Tabella di flusso
Data una tabella di flusso (esplicitando, per semplicità, solo gli stati) si possono identificare gli stati stabili
XY X
!
C
0 0 1 0
!
C 0 1 1 1
!
Y
XY X
XY X
C
C
0 0 1 0
0 0 1 0
C 0 1 1 1
C 0 1 0 1
Y
Y
Si stabilizzano, raggiungendo dopo Oscillano, attraversando una
un numero finito di transizioni uno sequenza, infinita, di stati instabili
(N.B. questa tabella è differente dalle
stato stabile precedenti)
Il più semplice elemento di memorizzazione, come accennato prima, consiste di un elemento di ritardo
Mediante opportuni anelli di reazione è possibile memorizzare i dati per un tempo maggiore
latch SR
latch D
Tabella di flusso
!
Il comportamento del circuito viene, più semplicemente, descritto mediante la seguente tabella funzionale (una versione compatta della
tabella di flusso) costruita applicando, partendo da stati stabili, gli ingressi al circuito fino al raggiungimento di un ulteriore stato stabile
e ammettendo che le due variabili di stato/uscita siano sempre una il complemento dell’altra (escludendo cioè la combinazione di
ingressi 11)
S R Q+
Tabella funzionale
In tal caso, gli stati del circuito, diventano 2 0 0 Q HOLD
0 1 0 RESET
1 0 1 SET
1 1 X NON AMMESSA
Calcolatori a.a. 13/14 Dario Bruneo
Latch SR (cont.)
Le uscite corrispondenti saranno entrambe 0 (non vale più la regola che una sia il complemento dell’altra)
La possibilità che gli ingressi cambino simultaneamente è, nella realtà, altamente improbabile
Più verosimilmente uno dei due segnali arriverà prima portando il circuito in uno stato indefinito
La sintesi di un latch SR si effettua come la sintesi di un normale circuito combinatorio con ingressi S,R e Q
ed uscita Q+ (effettueremo una sintesi PS)
S R S
S R Q+
Q
0 0 Q
0 0 - Q+ = R’(Q+S)=(R’(Q+S))’’=
0 1 0
Q 0 -
= (R+(Q+S)’)’ = R↓(Q↓S)
1 0 1
1 1 X
R
Tabella funzionale Tabella di flusso di Q+ Forma PS
Si sarebbe potuta condurre la sintesi partendo da un’espressione SP, ma si sarebbe ottenuta una
implementazione del latch SR con porte NAND
X Y X NAND Y
0 0 1
!
0 1 1
1 0 1
! 1 1 0
Si può introdurre un ingresso di controllo che determina quando lo stato del latch può cambiare
Con l’utilizzo delle porte NAND di ingresso gli ingressi S e R ridiventano attivi alti
←periodo→
Calcolatori a.a. 13/14 Dario Bruneo
Latch D
Si possono forzare i due ingressi ad essere uno il complemento dell’altro, ottenendo un latch di tipo D
C D Q+
!
0 X X NESSUN CAMBIAMENTO
1 0 0 RESET
!
1 1 1 SET
In tal modo, viene ogni volta memorizzato lo stato corrispondente al segnale di ingresso
Non vi è più modo di mantenere lo stato se non quello di inserire una logica in grado di riportare l’uscita sull’ingresso
Per tutto il tempo in cui il clock rimane asserito, ogni piccola variazione negli ingressi provocherà un
cambiamento di stato
1) Nonostante la variazione
di D il latch non cambia
C stato essendo il clock basso
12 3
Potrebbero nascere problemi nel caso in cui le uscite del circuito combinatorio presentino degli impulsi non
previsti (glitch)
Sarebbe utile, in alcuni casi, disporre di elementi di memoria che non abbiano la proprietà della trasparenza ma che
siano “sensibili” solo al fronte (di salita o di discesa) del clock
Il clock viene inviato in maniera diretta al master ed in maniera negata allo slave
! latch
master
C=1 si abilita il master
C=0 si abilita lo slave
! latch
slave
Non si ha più la trasparenza: mentre il clock è basso qualsiasi modifica nei segnali di ingresso non viene
rilevata in quanto il master risulta disabilitato
La condizione di ingresso 11 effettuerà un’operazione di “toggle” che complementerà lo stato presente (0→1 ; 1→0)
J K Q+
0 0 Q HOLD
0 1 0 RESET
1 0 1 SET
1 1 Q’ TOGGLE
I flip-flop master-slave SR e JK possono portare a malfunzionamenti dovuti al fatto che per tutto un
semiciclo di clock il master rimane attivo
La presenza di un glitch negli ingressi S e R durante il periodo di attività del master potrebbe settare o
resettare il flip-flop
C
I flip-flop edge triggered commutano esclusivamente in corrispondenza delle transizioni del segnale di clock
! !
! !
C=0
C=1
Slave disabilitato
L’uscita Q non è influenzata dagli ingressi
C=0→1
C=1→0
Master disabilitato: manterrà il valore precedente alla Slave disabilitato prima che qualunque cambiamento del
transizione
master lo possa raggiungere
Slave abilitato
Bisogna porre particolare attenzione alla temporizzazione degli ingressi rispetto al segnale di clock
Gli ingressi devono stabilizzarsi entro un tempo tsu (tempo di setup) dall’arrivo del fronte del clock e
devono rimanere stabili, dopo l’arrivo del clock, per un tempo th (tempo di hold)
← th →
Input
←tsu→
Clock
← tp →
Output
Vincoli stringenti nascono se si utilizzano più flip-flop in cascata sincronizzati con lo stesso clock
! D Q D Q
C C
!
Si dovrà avere: tp>th (per evitare che il cambiamento nell’uscita del primo flip-flop influenzi il secondo nello stesso periodo di clock)
Nel seguito si assumerà, quando non esplicitamente dichiarato, che tutti i flip-flop siano del tipo positive edge triggered
D Q+ Flip-flop D J K Q+ Flip-flop JK
0 0 RESET 0 0 Q HOLD
1 1 SET 0 1 0 RESET
1 0 1 SET
1 1 Q’ TOGGLE
S R Q+ Flip-flop SR
0 0 Q HOLD
0 1 0 RESET T Q+ Flip-flop T
1 0 1 SET 0 Q HOLD
1 1 ? NON AMMESSA 1 Q’ TOGGLE
Preset e clear agiscono direttamente sulle porte NOR o NAND dei latch
Il clock, denominato C1 nel simbolo soprastante, controllerà tutti i segnali il cui nome inizia con 1 (in questo caso solo 1D)
Il comportamento di un circuito sequenziale è determinato dagli ingressi, dalle uscite e dallo stato
L’analisi si pone lo scopo di ricavare una descrizione dell’evoluzione temporale dello stato e delle uscite al
variare degli ingressi
!
Cirucito sequenziale sincronizzato
È necessario conoscere il tipo di flip-flop e le equazioni booleane che descrivono la rete combinatoria
Ad es.
DA = AX + BX
1 ingresso
2 flip-flop
DB = A’X
1 uscita
Y = (A + B)X’
Note le equazioni di ingresso e uscita, le relazioni funzionali tra ingressi, uscite e stato possono essere
contenute in una tabella detta tabella di stato (equivalente alla tabella di flusso)
DA = AX + BX
DB = A’X
Y = (A + B)X’
Monodimensionale Bidimensionale
Nel caso di reti che utilizzino altre tipologie di flip-flop (ad es. JK) si dovranno utilizzare, durante l’analisi, le
tabelle caratteristiche dei flip-flop
Si assuma di avere una rete sequenziale con flip-flop JK aventi le seguenti equazioni:
!
JA = B KA = BX’
! JB = X’ KB = AX’
J K Q+ Flip-flop JK
0 0 Q HOLD
0 1 0 RESET
1 0 1 SET
1 1 Q’ TOGGLE
!
Ritardo della parte
! combinatoria
I circuiti si possono classificare in base alla relazione tra uscite, ingressi e stato
L’esempio precedente mostrava una rete di Mealy (lo si può notare dalle equazioni di uscita)
Z=A
Un diagramma di stato è una rappresentazione grafica delle informazioni disponibili nella tabella di stato
Gli stati sono rappresentati da cerchi e le transizioni tra gli stati da archi orientati
Nei grafi corrispondenti a reti di Mealy l’uscita, dipendente sia dallo stato che dagli ingressi, è associata ad ogni arco
Nei grafi corrispondenti a reti di Moore l’uscita, dipendente solo dallo stato, è associata ad ogni cerchio
! Coppia stato/
uscita
Coppia
! ingresso/
uscita
Le reti di Mealy rispondono più velocemente ma sono sensibili alle variazioni non volute degli ingressi!
le reti di Moore devono aspettare la corrispondente transizione di stato (e quindi il segnale di clock), e solo allora inizieranno a
commutare verso una nuova uscita
Comunque, per quanto riguarda il comportamento ingresso/uscita, i due modelli risultano equivalenti
Sarà, quindi, sempre possibile passare da una rete di Mealy ad una rete di Moore equivalente e viceversa
Come si vedrà in seguito, le reti di Mealy sono normalmente caratterizzate da un numero di stati minori rispetto alle equivalenti reti di
Moore, risultando, quindi, in circuiti meno complessi
La sintesi dei circuiti sequenziali parte dalla definizione delle specifiche e si conclude con un diagramma
logico del circuito o con un elenco di funzioni booleane
N°flip-flop = ⎡log2(n)⎤,
dove n è il numero degli stati
Si semplificano le equazioni
Si svolgerà adesso la sintesi di una rete d’esempio al fine di evidenziare i passi suddetti
La descrizione verbale della rete da sintetizzare è, normalmente, il primo passo della fase progettuale.
! “Si progetti una rete sequenziale in grado di riconoscere, in una sequenza arbitraria di caratteri alfanumerici in ingresso, la
sottosequenza “aba”, segnalandone il riconoscimento con uno stato di uscita z2; lo stato z1 segnalerà ogni altra condizione.
! Si considerino sottosequenze sovrapposte (es. la stringa “ababa” deve essere considerata come 2 sottosequenze)”
La costruzione del diagramma di stato parte con la scelta di uno stato iniziale (detto di reset) non sempre specificato nella descrizione
verbale; nel nostro esempio si considererà come stato di reset uno stato nel quale nessuna carattere della sequenza “aba” sia stato
ancora rilevato
Reset
a
b
0
x
L’arrivo di un ingresso b
Stato 0 deve essere memorizzato in
a/z1 un nuovo stato perché
a/z1
L’arrivo di un ingresso a Reset corrisponde alla
deve essere memorizzato continuazione della
in un nuovo stato perché 1 sequenza (uscita z1)
x/z1
corrisponde all’inizio di 0
una nuova sequenza, a/z2
l’uscita, comunque, dovrà Un ingresso x deve farmi
b,x/z1 b/z1 tornare allo stato 0 (uscita
essere z1.
b,x/z1 2 z1)
Qualsiasi altro ingresso
non deve produrre nessun
effetto (l’uscità sarà Un ingresso a corrisponde
sempre) z1. all’inizio di una nuova
Stato 2 sequenza quindi lo stato non
deve cambiare (uscita z1)
Un ingresso a mi fa
riconoscere la sequenza
(uscita z2!) lo stato sarà 1
(sequenze sovrapposte)
Un ingresso x o un ingresso
b mi fanno tornare allo stato
di partenza (uscita z1)
A questo punto si può trasformare il diagramma di stato in forma tabellare ottenendo la tabella di
stato
a/z1
a/z1
Reset Stato presente Stato futuro Uscita
Se avessimo scelto di utilizzare un modello di Moore avremmo ottenuto il seguente diagramma di stato
Stato 0 - Stato 1
a
I passi procedono come a Stato 2
Reset
per il modello di Mealy
con l’eccezione che le Alla ricezione di una a, non
x 1/z1 si può più tornare allo stato
uscite sono associate agli
stati. 0/z1 1 perché ad esso è associata
a l’uscita z1 e si necessita di
b,x b b un’uscita z2
x
Creazione di un nuovo
3/z2 b,x 2/z1 stato!
Stato 3
Un ingresso x o un ingresso
a
La ricezione di una b mi farà b mi fanno tornare allo stato
andare nello stato 2 (ab). di partenza (uscita z1)
a
a
Reset
Stato presente Stato futuro Uscita
x 1/z1
0/z1 in=a in=b in=x
a
b 0 1 0 0
b,x b z1
x 1 1 2 0
3/z2 z1
b,x 2/z1
2 3 0 0
a z1
3 1 2 0
z2
A questo punto è possibile effettuare una fase di test producendo una sequenza casuale e osservando il
comportamento delle uscite a partire dal grafo o dalla tabella di stato
! input a b x a b a b a x b a b a x b
uscite modello
z1 z1 z1 z1 z1 z2 z1 z2 z1 z1 z1 z1 z2 z1 z1
! Mealy
uscite modello
z1 z1 z1 z1 z1 z2 z1 z2 z1 z1 z1 z1 z2 z1 z1
! Moore
Dalla fase di test si può osservare come entrambi i modelli rispondano correttamente alle specifiche di progetto
La scelta del modello da utilizzare non sempre è lasciata al progettista ma a volte rientra nei vincoli da rispettare
Nel modello di Mealy le uscite sono sensibili alle variazioni degli ingressi mentre nel modello di Moore le uscite sono stabili ed
influenzate univocamente dagli stati
Le uscite del modello di Moore sono quindi sincronizzate con il clock e portano ad una metodologia di temporizzazione più
“disciplinata”
Il modello di Mealy, però, è più pronto a reagire nel senso che l’uscita può variare senza aspettare l’arrivo del segnale di clock
Nel passaggio dalla descrizione verbale alla tabella di stato potrebbero crearsi degli stati ridondanti
a parità di ingresso effettuano transizioni verso stati uguali o a loro volta ridondanti
hanno le stesse uscite (modello di Moore) o a parità di ingresso le transizioni provocano le stesse uscite
a
! a/z1 a
a/z1 Reset
Reset
! x 1/z1
1 0/z1
x/z1
0 a
! a/z2 b,x b b
a/z1
b,x/z1 b/z1 a
! 2 b,x 4/z1
3 3/z2 b,x 2/z1
b,x/z1 b,x/z1 x
! a
Eventuali stati ridondanti possono essere eliminati durante la fase di costruzione del diagramma di stato
Bisogna effettuare una codifica degli stati, degli ingressi e delle uscite
A volte le codifiche degli ingressi e delle uscite sono già presenti nelle specifiche di progetto
Esistono varie metodologie di codifica: noi utilizzeremo, quando non esplicitamente dichiarato, la codifica Gray
Ingressi (a,b,x)
Uscite (z1,z2)
Quindi saranno necessari 2 bit per codificare gli ingressi, 1 bit per codificare le uscite e 2 bit per codificare
lo stato (in entrambi i modelli)
Codifica
Stati
Codifica
Codifica
AB
Ingressi Stati
XY Codifica
AB 0 00
Uscite
a 00 Z 0 00 1 01
b 01 z1 0 1 01 2 11
x 11 z2 1 2 11 3 10
Mealy Moore
Le tabelle diventeranno:
Stato Stato
Stato futuro Uscita Stato futuro Uscite
presente presente
AB AB Z AB AB Z
XY=00 XY=01 XY=11
XY=00 XY=01 XY=11 XY=00 XY=01 XY=11
00 01 00 00 0
00 01 00 00 0 0 0
01 01 11 00 0
01 01 11 00 0 0 0 11 10 00 00 1
11 01 00 00 1 0 0 10 01 11 00 0
Mealy Moore
stato presente
FF
FF
Nel caso del modello di Mealy, si avrà un’uscita che dipenderà da due variabili di ingresso (X Y) e da due variabili di stato (A B)
Stato
Stato futuro Uscita
presente X/Y
A/B 00 01 11 10
AB AB Z
00 x
XY=00 XY=01 XY=11 XY=00 XY=01 XY=11
01 x
00 01 00 00 0 0 0 11 1 x
01 01 11 00 0 0 0 10 x x x x
11 01 00 00 1 0 0 Z
Mealy
Nel caso di modello di Moore si avrà un’uscita che dipenderà da due variabili di stato (A B)
Stato
Stato futuro Uscite
presente
AB AB Z
XY=00 XY=01 XY=11
00 01 00 00 0
01 01 11 00 0
11 10 00 00 1
10 01 11 00 0
Moore
ingressi
Rete
combinatoria
FF
Al fine di determinare le equazioni di ingresso ai flip-flop conviene esprimere il funzionamento di questi ultimi mediante l’utilizzo di
tabelle dette di eccitazione
Esplicitano quali devono essere i segnali di ingresso per produrre una determinata transizione di stato
Si aggiungono alla tabella di stato le colonne relative agli ingressi dei flip-flop (3 stati → 2 flip-flop)
Stato
Stato futuro Ingressi FF
presente
AB AB DA DB
00 01 00 00 01 00 00
01 01 11 00 01 11 00
11 01 00 00 01 00 00
Mealy
Al fine di ottenere le equazioni di ingresso ai flip-flop si costruiscono, quindi, tante mappe di Karnaugh
quanti sono i segnali di ingresso complessivi ai flip-flop
nel nostro caso avendo 2 flip-flop ognuno con un segnale di ingresso (D) si costruiranno 2 mappe di Karnaugh
X/Y X/Y
A/B 00 01 11 10 A/B 00 01 11 10
Stato 00 x 00 1 x
Stato futuro Ingressi FF
presente
01 1 x 01 1 1 x
AB AB DA DB
11 x 11 1 x
XY=00 XY=01 XY=11 XY=00 XY=01 XY=11 10 x x x x 10 x x x x
00 01 00 00 01 00 00
DA DB
01 01 11 00 01 11 00
11 01 00 00 01 00 00
Mealy
Nel caso del modello di Moore il numero di flip-flop, essendo gli stati 4, rimane 2
Stato
Stato futuro Ingressi FF
presente
AB AB DA DB
00 01 00 00 01 00 00
01 01 11 00 01 11 00
11 10 00 00 10 00 00
10 01 11 00 01 11 00
Moore
Stato
Stato futuro Ingressi FF
presente
AB AB DA DB X/Y X/Y
A/B 00 01 11 10 A/B 00 01 11 10
Moore
Una volta ottenute le equazioni di ingresso ai flip-flop e le equazioni di uscita si può passare al disegno del
diagramma logico del circuito
ingressi
Rete
combinatoria
stato presente
FF
Mealy Moore
FF
Nel caso di flip-flop diversi dal tipo D si devono utilizzare le tabelle di eccitazione per ricavare gli ingressi ai
flip-flop
Per esempio nel caso di flip-flop JK, utilizzando il modello di Mealy dell’esempio precedente, si ottiene la seguente tabella
Stato
Stato futuro Ingressi FF
presente
AB AB JAKA - JBKB
Flip-flop JK
XY=00 XY=01 XY=11 XY=00 XY=01 XY=11
Q Q+ J K
0 0 0 x 00 01 00 00 0x-1x 0x-0x 0x-0x
0 1 1 x
01 01 11 00 0x-x0 1x-x0 0x-x1
1 0 x 1
1 1 x 0 11 01 00 00 x1-x0 x1-x1 x1-x1
Mealy
In tal caso avendo due flip-flop ognuno con due segnali di ingresso (JK) si dovranno costruire 4 mappe di
Karnaugh al fine di risalire alle 4 equazioni che regolano l’evoluzione dello stato
JA KA JB KB
!
Tali equazioni assieme all’equazione di uscita (che non è influenzata dall’utilizzo di flip-flop differenti) permettono di effettuare il
disegno del circuito
Stato di reset
All’accensione del circuito non posso prevedere in quale stato si configureranno i flip-flop
Utilizzo un segnale di reset esterno che agisce sugli ingressi di preset o clear di ogni flip-flop per forzarne lo stato
Stati di indifferenza
Si possono creare problemi nel caso in cui il circuito entri accidentalmente in uno di essi
Progettazione degli stati di indifferenza (stati futuri, uscite) in modo da auto-riparare il circuito e segnalare gli errori
È necessario, a tal punto, effettuare una fase di test simulando il comportamento del circuito prima di
realizzarlo
Bisogna verificare che la sequenza di stati relativi ad una data sequenza di ingresso coincida con quella specificata dal diagramma di
stato
Si utilizza un’apposita sequenza di test che di solito include anche il segnale di reset
I circuiti sequenziali sincroni sono caratterizzati dal fatto che i segnali agiscono sugli elementi di memoria in
intervalli di tempo discreti
! Impulsi di sincronizzazione
Gli ingressi non devono variare fino al raggiungimento di uno stato stabile
In compenso i circuiti asincroni possono raggiungere prestazioni migliori non essendo “legati” alla frequenza di clock