Logica sequenziale

Transcript

Logica sequenziale
Logica sequenziale
I dispositivi logici si suddividono in due famiglie principali:

Logica combinatoriale



L’uscita all’istante tn dipende unicamente dallo stato degli ingressi
sempre al tempo tn, (trascuriamo i ritardi interni)‫‏‬
Porte logiche, decoders, multiplexers, ALU
Logica sequenziale



L’uscita all’istante tn dipende sia dallo stato degli ingressi al tempo
tn, sia dallo stato degli ingressi ad istanti precedenti (tn-1,n-2,.,ecc.)
Ha quindi una memoria che viene chiamata STATO.
Latch, flip-flops, macchine a stati, contatori, shift registers
02/25/12
Cibernetico elettronico
1
Flip-flop & Latches

Logica combinatoriale con “feed-back”



Uscita riportata all’ingresso
Latch è una memoria ad 1 bit che cambia
stato a seconda dell’ingresso
Flip-flop è un latch dotato di un ingresso di
clock (segnale di controllo)‫‏‬

02/25/09
Le uscite commutano solo sui fronti (salita e/o
discesa) del clock
Cibernetico elettronico
2
Definizioni (1)‫‏‬

Stato: è un insieme di variabili (variabili di stato per l’appunto) che
rappresentano la memoria di quello che è successo fino ad
ora


Conta-persone: lo stato è il numero di persone passate fino adesso,
ogni volta che passa una persona il numero viene incrementato di uno
Logica sequenziale digitale


Le variabili di stato sono binarie
Un circuito con n variabili di stato ha 2n stati possibili


Macchina a stati finiti (Finite State Machine)‫‏‬
I cambiamenti di stato sono solitamente sincronizzati da un clock
02/25/09
Cibernetico elettronico
3
CLOCK (1)‫‏‬

Clock: fornisce la marca temporale che scandisce i
cambiamenti di stato del circuito.





Il segnale di clock è active high se lo stato cambia sui fronti
di salita
active low se lo stato cambia sui fronti di discesa.
Periodo del Clock: è il tempo che trascorre tra due
transizioni dello stesso tipo
Frequenza del Clock: è il numero di volte che questo
accade per secondo
Duty cycle è la percentuale di tempo, durante un
periodo, in cui il clock è attivo.
02/25/09
Cibernetico elettronico
4
CLOCK (2)‫‏‬

th
ACTIVE
HIGH
Duty cicle = th (tL) / Periodo
th
Periodo
Frequenza = 1/Periodo

ACTIVE
LOW
tL
02/25/09
Cibernetico elettronico
tL
5
Elemento bistabile



Memoria ad un bit
L’elemento più semplice:
E’ bistabile in quanto ha due stati stabili:


Stato 1: Q alto, Vin1 basso, Vin2 alto
Stato 2: Q basso, Vin1 alto, Vin2 basso
Vout1
Vin1
Q
Vin2
02/25/09
Cibernetico elettronico
Vout2
/Q
6
Bestiario dei latch & flip-flop

Latch





S-R Latch
/S-/R Latch
S-R Latch con Enable
D Latch
Flip-flops





02/25/09
Edge-Triggered D Flip-Flop
Master/Slave S-R Flip-Flop
Master/Slave J-K Flip-Flop
Edge-Triggered J-K Flip-Flop
T Flip-Flop
Cibernetico elettronico
7
S-R Latch

Caveat:


Simbolo
Set
Reset
S
Q
Q
R
Q
/Q
Tabella della verità
Schema
R
Q
/Q
S
02/25/09
Propagazione (cfr. con porta
singola)‫‏‬
Durata minima degli impulsi
R
0
Qn
Hold
S
0
Reset
0
1
0
1
Set
1
0
1
0
ILLEGALE
1
1
0
0
Cibernetico elettronico
Qn-1
/Qn
/Qn-1
8


Si attiva solo con enable alto
S=R=1 illegale
S-R Latch con enable
Simbolo
S
C
R
Q
Q
/Q
Schema
R
Q
C
/Q
S
0
R
0
C
1
Qn
0
1
1
0
1
1
0
1
1
0
1
1
1
0
0
X
X
0
Qn-1
Qn-1
/Qn
/Qn-1
/Qn-1
S
02/25/09
Cibernetico elettronico
9
Si attiva solo con enable alto
Rimane il problema dell’instabilità
J=K=1 lecito



J-K Latch
Simbolo
J
Q
C
Q
K
Schema (oscilla)‫‏‬
K
R
J
J
0
K
0
C
1
Qn
0
1
1
0
1
1
0
1
1
0
1
1
1
/Qn-1
X
X
0
Qn-1
/Qn-1
Qn-1
/Qn-1
/Q
Q
C
Qn-1
/Qn
Q
C
S
J
/Q
K
/Q
Q
02/25/09
Cibernetico elettronico
10
Preset, Clear

I flip-flops hanno due ingressi asincroni.




Preset e Reset (Clear).
Servono ad impostare direttamente le uscite
dei latch S-R.
Operano indipendentemente dall’enable
(clock).
Quando disegnate un circuito:

Usate questi ingressi SOLO per inizializzare la
logica. Mai per realizzare funzioni logiche.
02/25/09
Cibernetico elettronico
11
Latch D-type


Simbolo
D
Q
C
Q

Immagazzina un dato di
un bit (NON set e reset)‫‏‬
Quando Enable è alto il
latch è trasparente
Risolve il problema di
SET=RESET=1
Tabella della verità
Schema
R
Q
C
S
D
02/25/09
/Q
Cibernetico elettronico
C
1
D
0
Qn
1
1
1
0
X
Qn-1
/Qn
0
12
Architettura Master-Slave


Risolve i problemi di “race around” legati ai
tempi di propagazione finiti delle porte
logiche.
Due latch in cascata:




il primo pilotato direttamente dal clock
il secondo dal clock invertito
Quando è attivo il primo stadio, non è attivo il
secondo (e viceversa).
La commutazione delle uscite avviene sul
fronte di salita (discesa) del clock.
02/25/09
Cibernetico elettronico
13


D-type flip-flop
Transizioni sul fronte di
discesa del clock
Se aggiungo un inverter al
clock le transizioni avvengono
sul fronte di salita
Tabella della verità
Simbolo
D
Q
>CLK
Q
D
D
D
Schema
CLK
Qn
/Qn
0
0
1
1
1
0
X
0
Qn-1
/Qn-1
X
1
Qn-1
/Qn-1
Q
C
D
Q
Q
C
Q
/Q
CLK
02/25/09
Cibernetico elettronico
14
S
R
C
Qn
/Qn
X
X
0
Qn-1
/Qn-1
0
0
Q
Qn-1
/Qn-1
0
1
0
1
Q
1
0
1
0
1
1
S-R flip-flop
S
C
R
S
R
S
C
R
Q
Q
Illegale? Illegale?
S
C
R
Q
Q
Q
/Q
C
02/25/09
Cibernetico elettronico
15


Risolve il problema S=R=1
Adesso funziona il toggle !
J-K flip-flop
J
C
K
Q
Q
/Q
J
K
Q
C
02/25/09
S
C
R
J
K
C
Qn
/Qn
X
X
0
Qn-1
/Qn-1
0
0
Qn-1
/Qn-1
0
1
0
1
1
0
1
0
1
1
/Qn-1
Qn-1
Q
Q
Cibernetico elettronico
S
C
R
Q
Q
Q
/Q
16
J
>CLK
K
J-K con un D-type
/Q
J
K
Q
CLT
02/25/09
CLK
Q
Q
J
K
C
Qn
/Qn
X
X
0
Qn-1
/Qn-1
X
X
1
Qn-1
/Qn-1
0
0
Qn-1
/Qn-1
0
1
0
1
1
0
1
0
1
1
/Qn-1
Qn-1
D
Q
Q
>CLK
Q
/Q
Cibernetico elettronico
17
T (toggle) flip-flop

T=1  toggle  Qn = /Qn-1

T=0  Qn = Qn-1
Senza T
Con T
T
D
Q
>CLK
Q
J
>CLK
K
Q
Q
Q
/Q
Divisore di frequenza per due
02/25/09
Cibernetico elettronico
18
Contatori

Un insieme di n flip-flop.



2n stati possibili
Possono contare in su o in giù
Tipologia:


02/25/09
Ripple counter
Syncronous counter
Cibernetico elettronico
19
Contatore ripple (1)‫‏‬




Implementazione molto semplice
Il clock viene dato in ingresso al primo TFF
Le uscite Q dei flip-flop sono i bit di uscita
LSB a sinistra (TFF con il clock)‫‏‬
Q0 (LSB)‫‏‬
1 T
PRN
TFF
clock >CLK
CLN
02/25/09
Q
1 T
Q1
PRN
TFF
>CLK
Q
Q3
Q2
1 T
PRN
TFF
>CLK
CLN
Cibernetico elettronico
CLN
Q
1 T
PRN
TFF
Q
>CLK
CLN
20
Contatore ripple (2)‫‏‬

Il contatore visto conta in giù.


Il nostro contatore a 4 bit può contare fino a 15 ma:



Per farlo contare in su basta usare dei TFF che commutino sui fronti di discesa.
Tramite i preset si può “caricare” in maniera asincrona qualsiasi numero di
partenza.
Si può quindi farlo contare per qualsiasi numero da 1 a 15.
Abbiamo bisogno dell’ausilio di un minimo di logica combinatoriale:


Un circuito che riconosca quando il contatore è arrivato a 16 e generi un
segnale logico
Un circuito che imposti il complemento a 15 del numero da contare



es. devo contare fino a 9  devo far partire il contatore dal numero 6
Il contatore si fermerà a 15 dopo aver contato quindi 9 colpi
Realizzo così un contatore programmabile.


Attenzione anche agli ingressi di clear, sono necessari per caricare gli zeri
I preset caricano solo 1 NON 0.
02/25/09
Cibernetico elettronico
21
Contatore programmabile

Reload !

02/25/09
Il caricamento viene fatto sia alla
partenza, sia ogni volta che il contatore
raggiunge il conteggio di F (1111)‫‏‬
Cibernetico elettronico
22
Contatore ripple (3)‫‏‬

Svantaggio principale:

Ritardo di propagazione del segnale:



tpr di circa 10 ns a flip-flop
n bit  ritardo totale = n tpr
La criticità aumenta con il numero di bit e con la
frequenza di clock.

Il conteggio finale rimane affidabile !


Non sono più affidabili i conteggi intermedi !!!

02/25/09
Cioè se interrompete il clock e aspettate un tempo
sufficiente (> n tpr ), il valore letto sarà il numero effettivo
di colpi di clock ricevuti.
Ad esempio nel nostro circuito precedente si possono
avere dei “reload” spuri generati in mezzo alla sequenza di
conteggio.
Cibernetico elettronico
23
Contatore sincrono



Sfruttiamo a nostro vantaggio il ritardo di
propagazione.
I flip-flop sono tutti pilotati in parallelo dallo stesso
clock.
Uso di logica combinatoriale per stabilire se il flip-flop
debba caricare 1 o 0.
Q0 (LSB)‫‏‬
Q1
Q2
? T
PRN
TFF
clock >CLK
CLN
02/25/09
Q
? T
PRN
TFF
clock >CLK
? T
Q
PRN
TFF
Q
clock >CLK
CLN
Cibernetico elettronico
CLN
24
Contatore sincrono




clock
Importante l’ingresso T
T=1  Qn = /Qn-1
T=0  Qn = Qn-1
Q0
Per Q0 connettere T=1, ma per Q1 ?
Q0 (LSB)‫‏‬
1 T
PRN
TFF
clock >CLK
Q
Q1
Q1
Q2
clock
CLN
02/25/09
Cibernetico elettronico
25
Quindi come connettiamo T1 ?


Connettiamo l’ingresso T a Q0 !!!
Sfruttiamo il ritardo di propagazione nei flip-flop




Sul primo fronte di salita del clock Q0 diventa 1, MA solo dopo un tempo tpr (tipicamente
qualche ns)‫‏‬
Quindi il secondo flip-flop, sul primo fronte di salita del clock, in ingresso ha ancora zero
e quindi la sua uscita Q1 rimarrà nello stato precedente.
Sul secodo fronte di salita del clock Q0 diventa 0, MA solo dopo un tempo tpr (tipicamente
qualche ns)‫‏‬
Quindi il secondo flip-flop, sul secondo fronte di salita del clock, in ingresso ha ancora
uno e quindi la sua uscita Q1 si ribalta rispetto allo stato precedente.
?
Q1
T
PRN
TFF
clock >CLK
Q0
Q
T
PRN
TFF
Q
clock >CLK
CLN
02/25/09
Q1
CLN
Cibernetico elettronico
26
Come connettiamo T2 ?


Q2 deve commutare nel momento in cui Q0=Q1 transiscono
da 1 a 0
Teniamo presente tpr !
Q0
Q1
T
PRN
TFF
clock >CLK
Q
Q2
Q1
Q0
T
TFF
Q
clock >CLK
CLN
02/25/09
PRN
CLN
Cibernetico elettronico
27
Come connettiamo Tn ?

Vale il solito principio:


Riporto seriale:

AND2 connessi in cascata
Q2
Q1
Q0

Qn deve commutare nel momento in cui Q0=Q1 ..... =Qn-1
transiscono da 1 a 0
T3
Riporto parallelo:

AND3.....n
02/25/09
Qn-1
Q1
Q0
Cibernetico elettronico
Tn
28
Riporto seriale vs Riporto parallelo

Riporto seriale:




semplicità costruttiva
Ritardo totale scala con i bit del contatore
tpr di un FF + tpr (di una porta AND !!!!) * n
Riporto parallelo:



Diventa complicato quando i bit sono tanti
Ritardo totale fisso!!
tpr di un FF + tpr (di una porta AND !!!!) e BASTA !
02/25/09
Cibernetico elettronico
29
Contatore Programmabile

Necessità di contare per un numero arbitrario
di colpi di clock:



Combinazione sulle uscite → Counter Enable/Reset
Combinazione sugli ingressi → Data Load
Si usa sempre quest'ultima.
Tutti i contatori hanno un bus in ingresso per
caricare un numero di “partenza” cioè da cui
partire a contare:
– Linea di Load (sincrona o asincrona)
– Tecnica flessibile che permette di cambiare numero
di conteggi senza modificare l'hardware
02/25/09
Cibernetico elettronico
30
Shift registers


Serializzatori e parallelizzatori (Ugh!)‫‏‬
Vediamo per primo un Parallelizer:



Data in
(seriale)‫‏‬
Ingresso data (seriale), ingresso clock
Tipicamente usati i D-type flip-flop
La parola di uscita è formata dalle singole uscite Q
dei flip-flop.
Q3
D
>CLK
Q
Q2
D
>CLK
Q
Q1
D
>CLK
Q
Q0
D
Q
>CLK
Clock
02/25/09
Cibernetico elettronico
31
RS232 (protocollo seriale)‫‏‬
------------------Carrier Detect
Recieve Data
Transmit Data
Data Terminal Ready
System Ground
Data Set Ready
Request to Send
Clear to Send
Ring Indicator
02/25/09
9-Pin 25-Pin
1
8
2
3
3
2
4
20
5
7
6
6
7
4
8
5
9
22


Connessioni
minime, 3 !!!
Tx,Rx,GND.
Cibernetico elettronico
32
RS232 (protocollo seriale)‫‏‬

Tra i due apparecchi collegati bisogna stabilire prima:




Parametri fissi e non negoziabili:




frequenza dei dati (baud rate) (9600, 56K)‫‏‬
parità (normalmente off)‫‏‬
stop bit (normalmente uno o due)‫‏‬
bit vengono trasmessi a gruppi di 8
in inizio trasmissione viene inviato uno start bit
a fine trasmissione vengono trasmessi il bit di parità e gli
stop bit
Il clock viene generato dal ricevente appena riceve lo
start bit !
02/25/09
Cibernetico elettronico
33
RS232 (protocollo seriale)‫‏‬

Quando la linea di data va a zero (start bit)‫‏‬
Inizia la trasmissione dati
Il ricevitore genera un clock interno che campiona la linea dati con
uno shift-register
Se il protocollo prevede 1 start, 2 stop e no parity, il clock interno
dovrà fornire 11 colpi.



start Q0 Q1 Q2
Q3 Q4 Q5 Q6 Q7 stop stop
clock
data
02/25/09
0
0
1
0
1
1
Cibernetico elettronico
0
0
34
Shift registers


Abbiamo visto un SIPO (Serial In – Parallel Out)‫‏‬
Ora vediamo un PISO (Parallel In – Serial Out)‫‏‬
La parola di n bit viene caricata (load) su n flip-flop dello shiftregister.
Sotto l’azione del clock, l’uscita dell’ultimo flip-flop restituisce la
parola caricata in modo seriale.


0
D3
D prn Q
>CLK
Q3
D2
Q2
D prn Q
>CLK
D1
D prn
>CLK
Q1
Q
D0
Q0
D prn Q
>CLK
Data out
(seriale)‫‏‬
Clock
02/25/09
Cibernetico elettronico
35
Ring counter

Shift register con l’uscita connessa all’ingresso


Ad ogni colpo di clock:



Il “token” viene caricato sul primo flip-flop
Il token passa da un flip-flop a quello successivo
Quando arriva all’ultimo flip-flop, viene ricaricato sul flip-flop iniziale
Es. La sequenza di un ring counter a 4 bit:

1000 – 0100 – 0010 – 0001 – 1000 ecc. ecc.
Token load
D prn Q
>CLK
Q3
Q2
D
>CLK
Q
Q1
D
>CLK
Q
Q0
D
>CLK
Q
Token out
Clock
02/25/09
Cibernetico elettronico
36
Circuito di debouncer !

Al momento della chiusura dell’interruttore si hanno
vari rimbalzi tra lel lamelle degli interruttori
+5V
SPDT switch
74LS04
/SW
DSW
TTL hanno una resistenza di pull-up interna a +V
+5V
/SW
PUSH
first
contact
bounce
GND
DSW
02/25/09
Cibernetico elettronico
37
Campionare gli ingressi

Usare un clock “lento”

Periodo più lento della durata dei “RIMBALZI”
+5V
PUSH
/SW
GND
Primo
contatto
bounce
t_clock >
+5V
t_bounce
SPDT switch
D
Clock
02/25/09
Q
>CLK
(periodo tipico di 10ms)‫‏‬
Cibernetico elettronico
38
Differenziatore

Riconosce i fronti di salita e di discesa
clock
02/25/09
clock
Cibernetico elettronico
39
De-glitcher

A volte, nonostante i nostri sforzi, può capitare di avere dei
“glitch” all’uscita del nostro circuito digitale.


I “glitch” sono delle transizioni di brevissima durata, non volute e
non previste.
Se la nostra logica è comunque tutta pilotata da un Master
clock, il seguente circuito può servire per rimuovere i glitch:

Il D type FF usa come ingresso di clock il master clock
Segnale con un glitch
Segnale “ripulito”
D
Clock
02/25/09
Q
>CLK
Cibernetico elettronico
40
Sincronizzatore

Input asincroni:

Sono sempre presenti in un sistema digitale:




Ingresso da tastiera, pulsanti, comparatori, ecc.
Normalmente sono molto più lenti del clock di
sistema
Non è vitale sapere quando esattamente (al ns) è
avvenuto l’evento
PER ESSERE USATI DEVONO ESSERE
SINCRONIZZATI !
02/25/09
Cibernetico elettronico
41

Si usa sempre un D type flip-flop

Clock di sistema (Master clock)‫‏‬
Sincronizzatore singolo
Ingresso asincrono
Clock di sistema
D
Q
Uscita sincrona
Circuito digitale
sincrono
>CLK
Clock
Ing. asinc.
Uscita sinc.
Qui ha funzionato !
02/25/09
XX
X
Qui NO ! Metastabile ..
Per sfortuna il fronte di salita
dell’ingresso asincrono coincide
con il fronte di salita del clock
Cibernetico elettronico
42
Sincronizzatore doppio

Pagando un piccolo prezzo:


Raddoppiamo la catena:


Aumento della latenza
L’eventuale metastabilità sarà terminata quando ricampioneremo il
segnale
Prezzo pagato:

Sono necessari due colpi di clock prima di avere un segnale in
uscita ! (Aumento della latenza)!
Ingresso asincrono
Clock di sistema
02/25/09
D
>CLK
Q
Uscita sincrona
(metastabile)‫‏‬
Clock di sistema
D
Q
>CLK
Cibernetico elettronico
Circuito digitale
sincrono
Uscita sincrona
(pulita)‫‏‬
43