LA LOGICA SEQUENZIALE Quali sono i componenti fondamentali della logica sequenziale? 1 Sono i LATCH (senza e con abilitazione) e i FLIP-PLOP dei vari tipi (JK, D, T) Cos'è un latch e perché si chiama così? 2 Un latch è un dispositivo in grado di memorizzare un bit di informazione. Si chiama latch (catturare) perché è capace di catturare il livello del segnale d'ingresso e di mantenerlo in memoria Che differenza c'è fra latch senza abilitazione e con abilitazione? 3 segnale di sincronismo Nei primi cambiando le configurazioni attive degli ingressi varierà l'uscita. Nei secondi si può inibire l'effetto degli ingressi sulle uscite in dipendenza di un segnale di abilitazione. Se il segnale di abilitazione viene portato a livello attivo solo in determinati intervalli di tempo, di durata tanto breve da poterli considerare impulsi istantanei (treno d'impulsi: vedi figura), si otterrà un dispositivo che potrà cambiare di stato solo in corrispondenza di tali istanti. Partendo allora dai latch con abilitazione si potranno ottenere dei circuiti con funzionamento sincronizzato, in cui cioè il cambiamento di stato delle diverse uscite avviene su comando di un segnale di sincronismo (clock) Qual è il simbolo di un latch senza abilitazione? 4 Sono possibili due configurazioni: latch a porte NOR e a porte NAND. Il primo ha ingressi attivi alti, il secondo ha ingressi attivi bassi. Il simbolo di entrambi è indicato in figura Il simbolo pone in evidenza che in un caso gli ingressi S = Set (mandare ad 1) ed R = Reset (mandare a 0) sono attivi alti, cioè agiscono sull'uscita, settandola o resettandola, quando sono a livello alto. Nell'altro caso (S, R) sono attivi bassi. Il simbolo indica inoltre la presenza di due uscite: una principale, indicata con Q, e l'altra, complementare alla precedente, indicata con Q Come viene realizzato un latch a porte NOR? Qual è il suo funzionamento? 5 Lo schema utilizzato è quello di figura: Il comportamento del circuito è quello indicato in tabella: R Q S 0 0 memoria 0 1 0 reset 1 0 1 set 1 1 proibita 1) La configurazione SR=00 (S=0, R=0) è una configurazione di memoria. Ovvero l'uscita Q mantiene il suo valore. Supponiamo infatti che sia Q=0 (Q è l'uscita della seconda porta, quella in basso). Tale valore viene riportato all'ingresso della prima porta che avendo 00 agli ingressi fornisce Q =1 alla sua uscita. Tale 1 viene riportato all'ingresso della seconda porta, che avendo 01 ai suoi ingressi conferma il valore 0 alla sua uscita. Analogo discorso vale se si suppone Q=1. 2) La configurazione SR=01 (S=0,R=1) è la configurazione di reset: essa cioè porta l'uscita a livello basso. Si noti infatti che porre un 1 all'ingresso di una NOR forza la sua uscita a zero (quale che sia l'altro ingresso). Quindi Q=0. Tale 0 viene riportato all'ingresso della prima porta (quella in alto) che darà un 1 alla sua uscita. Analogamente si capisce che la configurazione simmetrica della precedente (SR=10) produrrà uscite simmetriche rispetto al caso precedente (Q=1, Q=0). 3) La configurazione 10 setta allora il dispositivo, cioè ne porta l'uscita principale a livello alto. 4) Infine la configurazione SR=11 è una configurazione PROIBITA, poiché entrambe le uscite Q e Q verrebbero forzate al livello 0, e quindi non sarebbero l'una complementare dell'altra come richiesto. Qual è la struttura di un latch a porte NAND? Qual è il suo funzionamento? 6 latch a porte NAND La struttura è analoga a quella del latch a porte NOR, con la differenza che adesso si utilizzano porte NAND e l'uscita principale Q si prende sulla prima porta (quella in alto). Osserviamo la figura. 00=configurazion e proibita 11=memoria Come si vede, gli ingressi sono indicati adesso con S, R per segnalare che sono attivi bassi. Infatti è noto che una NAND se ha uno dei due ingressi a 0 porta la sua uscita ad 1. Allora se entrambi gli ingressi sono a 0, entrambe le uscite andranno ad 1 (e questo è da evitare: configurazione proibita). Se invece uno solo degli ingressi è a zero l'uscita corrispondente andrà ad 1 (SR=01 sarà allora la configurazione di set, mentre SR=10 sarà la configurazione di reset) Infine se entrambi gli ingressi sono disattivi (SR=11) l'uscita manterrà il suo valore (configurazione di memoria). Esistono latch SR statici (senza abilitazione) integrati? 7 latch statico 279 Si, esistono, anche se sono poco diffusi perché la loro utilità è limitata. Il tipo più noto è il 279 che contiene quattro latch statici a porte NOR. Quale può essere una possibile applicazione del latch statico? 8 antirimbalzo Può essere il circuito antirimbalzo di un interruttore. Si consideri un interruttore meccanico S che venga azionato per fornire corrente ad un carico (figura). In teoria se l'interruttore viene chiuso all'istante t0, si dovrebbe misurare sul carico una tensione a gradino. In realtà come mostra la figura, l'uscita, prima di portarsi al valore di regime, subito dopo t0 presenta delle oscillazioni che in molti casi possono essere indesiderate. Per eliminare tale effetto, dovuto ai rimbalzi di S, si può utilizzare un latch statico con funzione antirimbalzo, come indica la figura: A riposo l'interruttore si trova in posizione A. Il latch è resettato e l'uscita è bassa. Portando l'interruttore in posizione B il latch viene settato e l'uscita si porta a livello alto. Anche se il latch dopo aver toccato B rimbalza portandosi in una posizione INTERMEDIA fra A e B, il latch si troverà nella configurazione di memoria (SR=11), per cui l'uscita si manterrà alta) Come si può ottenere un latch con abilitazione (gated), partendo da un latch statico? 9 latch con abilitazione E' sufficiente far precedere un latch nand da due porte nand A,B alle quali si applicano i segnali di set e reset ed un segnale comune di abilitazione del latch (E=Enable) [vedi figura]. Si noti che se E=0 le due porte d'ingresso bloccano il passaggio dei due segnali di comando del dispositivo (S,R), perciò il latch si troverà nello stato di memoria. Se viceversa E=1 i due segnali S,R si trasferiranno a valle delle porte d'ingresso, divenendo S'R'. Tuttavia avranno un valore INVERTITO rispetto al loro valore di partenza. Questo significa che la configurazione SR=00 diventerà S'R'=11 dopo le porte d'ingresso, e poiché la configurazione 11 è la configurazione di memoria per il latch nand, ne segue che SR=00 è la configurazione di memoria per il latch con abilitazione. E=0 stato di memoria E=1, SR=00: memoria Analogamente la configurazione SR=01 diventerà S'R'=10 a valle delle porte d'ingresso. Quest'ultima è la configurazione di reset per il latch nand. Allora SR=01= reset del latch con abilitazione. La configurazione SR=10 diventerà S'R'=01 (set del latch nand) . Allora SR=10= configurazione di set. Infine SR=11 si trasforma in S'R'=00 che è la configurazione proibita per il latch nand. Allora SR=11= configurazione proibita. Riassumendo allora il latch gated con E=1 si comporta esattamente come un latch NOR (ingressi attivi alti, configurazione proibita SR=11) E=1, SR=01: reset E=1, SR=10: set E=1, SR=11: proibita Quali sono i vantaggi del letch gated rispetto al latch statico? Può fare qualche esempio? 10 alee Uno dei vantaggi è quello di consentire l'eliminazione di errori che nascono nei circuiti in conseguenza dei tempi di commutazione non nulli dei dispositivi. Tali errori vengono dette ALEE e sono assolutamente da evitare nella logica sequenziale, perché possono portare a memorizzare livelli errati di segnale. Può fare un esempio di circuito in cui si verifica una ALEA? 11 Si consideri il circuito: In teoria, se il tempo di propagazione di una porta fosse nullo, l'uscita U del circuito si dovrebbe mantenere sempre a zero, anche dopo che A passa da livello alto a basso (istante t0). In pratica a causa del ritardo di propagazione della porta NOT, l'uscita B si porterà dallo stato basso a quello alto solo dopo il tempo tp. La porta EXNOR (porta d'eguaglianza) segnala il fatto che durante tp i due ingressi sono uguali fornendo in tale intervallo un impulso spurio. Tali impulsi nella logica combinatoria sono generalmente innocui, viceversa nella logica sequenziale sono generalmente da evitare perché possono venire memorizzati come stati logici del circuito. Come è possibile eliminare l'impulso dovuto all'alea servendosi di un latch con abilitazione? 12 Se il segnale d'uscita del circuito precedente (che presenta una alea in coincidenza della transizione di A verso il basso) deve servire ad esempio da segnale di set di un latch NOR (con ingressi attivi attivi alti), per evitare che il latch venga abilitato dall'impulso di alea, basterà utilizzare un latch con abilitazione, abilitato un tempo tp dopo che A ha cambiato di stato. Può indicare come ottenere un latch D gated? 13 latch D gated Un latch di tipo D (Data latch) è un latch che riproduce il dato D al suo ingresso quando è abilitato, mentre mantiene il dato in memoria quando non è abilitato. Si ottiene dal latch SR gated collegando S con R mediante una porta NOT, cosicchè adesso se S=1 si avrà R=0 (configurazione di set : se il latch è abilitato l'uscita si porta ad 1), mentre se S=0 si avrà R=1 (configurazione di reset : se il latch è abilitato l'uscita si porta a 0). Come si vede se il latch è abilitato (E=1), l'uscita riproduce l'ingresso. Viceversa se il latch non è abilitato (E=0) l'uscita permane nel suo stato (memoria) Può indicare per quale motivo in un registro a scorrimento l'uso dei latch D gated non è indicato? 14 Si consideri il circuito di figura: Si desidera che nel caso in cui E sia un segnale ad onda quadra (clock) ad ogni impulso di clock il dato D=1 si trasferisca da un latch al successivo, cioè scorra verso destra. Tuttavia poiché il tempo in cui E=1 è molto maggiore del tempo di propagazione dei latch, nel circuito precedente (che utilizza latch D gated) il primo impulso di clock produrrà il trasferimento del dato D=1 non solo all'uscita del primo latch (come si desidera) ma anche all'uscita dei latch successivi al primo. Come si passa da un latch SR gated al un flip flop SR? 15 da latch SR gated E' sufficiente aggiungere un circuito in grado di trasformare un'onda quadra, quale è generalmente il segnale di clock, in un treno a flip flop d'impulsi molto stretti e di durata uguale al tempo di propagazione di una porta. In questo modo nel caso del registro a scorrimento la durata del segnale di abilitazione sarà sufficiente a far trasferire il dato solo all'uscita del primo dispositivo, e non all'uscita di tutti gli altri dispositivi che lo seguono. Come è possibile trasformare un'onda quadra (segnale di clock) in un treno d'impulsi? 16 generare impulsi E' sufficiente utilizzare un circuito simile a quello già visto parlando delle ALEE. brevissimi Cioè: Quando il segnale A passa da basso ad alto, il segnale B passerà da alto a basso. Tuttavia la transizione di B avverrà un tempo tp dopo la transizione di A. Durante tale intervallo entrambi i segnali sono alti, per cui all'uscita della AND si otterrà un impulso di durata tp ( 10 nsec) In definitiva, qual è lo schema di un flip flop SR, e qual è il suo simbolo logico? 18 Schema FF SR Lo schema è rappresentato in figura: Il simbolo logico è simile a quello del latch SR gated, con la differenza che il terminale di abilitazione viene chiamato CK (clock) ed indicato con un triangolino per significare che nel caso del flip flop sono i FRONTI del segnale di clock che consentono la commutazione, e non i livelli come avveniva nel latch gated. La presenza di un circoletto sul terminale di clock indica che il fronte attivo del clock è quello di DISCESA. Quali sono i diversi tipi di flip flop? 19 diversi tipi di FF: Sono i flip flop SR, già visto. Il tipo D (Data) che si ottiene collegando S con R attraverso una NOT: l'arrivo del fronte attivo del clock tipo D tipo JK causerà un trasferimento del dato dall'ingresso all'uscita. Il tipo JK, che è il più utilizzato. Per ottenere un JK a partire da un FF di tipo SR è sufficiente la semplice modifica indicata in figura: Il flip flop JK si comporta come il flip flop SR (J corrisponde al set e K corrisponde al reset) in tutti i casi tranne nel caso JK=11. In quest'ultimo caso l'uscita del dispositivo, all'arrivo del fronte attivo del clock, COMMUTA rispetto al valore che aveva in precedenza (funzionamento TOGGLE) . Indichiamo con P1,P2 le due porte d'ingresso, e con P3,P4 quelle di uscita. Sia Q=0. Tale valore viene riportato all'ingresso di P2 la quale fornirà un 1 alla sua uscita. La porta P4 si trova 01 agli ingressi e fornirà 1 alla sua uscita. Tale 1 viene riportato all'ingresso di P1, la quale, quando arriva il fronte del clock si trova con tre 1 all'ingresso e fornisce 0 alla sua uscita. La porta P3 dovrà allora presentare un 1 alla sua uscita (transizione da 0 ad 1). Nel tempo necessario a P3 per passare da 0 ad 1 l'impulso prodotto dal clock sull'ingresso di abilitazione è ridivenuto basso, per cui P2 porterà la sua uscita a livello alto. Quindi P4 si troverà due 1 all'ingresso e produrrà uno 0 alla sua uscita (transizione da 1 a 0). Un discorso analogo vale se si suppone che inizialmente sia Q=1. Allora la configurazione JK=11 provoca, all'arrivo del fronte del clock un cambiamento di stato dell'uscita. Qual è il flip flop JK integrato più noto? Quali sono le sue caratteristiche? 20 FF tipo JK integrato: 112 E' il 112 che contiene due flip flop JK attivi sul fronte di discesa del clock (negative edge triggered). Esso possiede inoltre due terminali di set diretto (preset) e reset diretto delle uscite (clear). Sia il preset che il clear sono attivi bassi. Il simbolo di un FF con le caratteristiche precedenti è quello indicato: Cosa sono i registri a scorrimento? 21 registri a scorrimento Un registro è un insieme di celle di memoria che permettono la memorizzazione di una parola di bit (4 bit=nibble, 8 bit= byte, 16 bit= word) . Nei registri a scorrimento i bit possono scorrere verso destra, verso sinistra o in entrambe le direzioni. Ciò può essere utili nei circuiti di calcolo. Uno shift a destra equivale infatti ad una divisione per 2. Si consideri ad esempio il numero 8=(1000)2. Effettuando uno scorrimento a destra di ogni bit si ottiene : (0100)2=4. Analogamente uno shift a sinistra equivale a una moltiplicazione per 2. Un altro uso dei registri a scorrimento è quello di consentire la trasformazione di un dato da parallelo in seriale. Ad esempio i dati in uscita da un microprocessore 8088 sono posti in parallelo su 8 piedini. Volendo trasferirli ad un altro microprocessore può essere conveniente utilizzare un unico cavo di connessione fra i due micro. In questo caso per la trasmissione andrà effettuata dapprima una conversione parallelo seriale (trasmissione) e poi una conversione seriale parallelo (ricezione). Com'è possibile realizzare un registro a scorrimento? 22 realizzazione registro a scorrimento con FF tipo D E' sufficiente porre in cascata n flip flop di tipo D con l'ingresso di clock posto in comune e collegato al segnale di clock ck (figura) Supponendo che inizialmente le quattro uscite siano state azzerate, al primo impulso di clock il dato D si trasferirà su Q0 (la durata dell'impulso di clock è troppo breve perché succeda che il dato si trasferisca da Q0 a Q1). Al secondo impulso di ck il dato su Q0 si trasferirà su Q1, mentre il secondo dato presente su D si trasferirà su Q0. Al quarto impulso di ck i quattro dati che sono stati posti su D si saranno trasferiti sulle quattro uscite. A questo punto il nibble che è stato memorizzato nel registro potrà essere prelevato in modalità seriale (prelevando un bit alla volta dall'uscita Q3) oppure in modalità parallela (prelevando i quattro bit contemporaneamente dalle quattro uscite Q0,Q1,Q2,Q3. 23 inserimento dati in parallelo Si è visto che in un registro a scorrimento i dati possono essere prelevati in parallelo. E' possibile anche inserire i dati in parallelo? Si. E' sufficiente utilizzare il circuito di figura: Come si vede quattro multiplexer a due ingressi consentono di inviare all'ingresso di ciascun flip flop il nibble in parallelo (P0P1P2P3) oppure le uscite del flip flop che lo precede. Ciò a seconda del valore di PE: l'ingresso Parallel Enable consente cioè l'inserimento in parallelo se PE=1, lo scorrimento dei dati se PE =0. Oltre ai registri a scorrimento quali sono le applicazioni più comuni dei flip flop? 24 Sono i contatori asincroni e sincroni. I primi sono ottenuti semplicemente ponendo in cascata n flip flop in configurazione TOGGLE (SR=11), i secondi sono invece ottenuti utilizzando i flip flop D o JK. Quali sono vantaggi e svantaggi dei contatori asincroni rispetto a quelli sincroni? 25 contatore asincrono con FF tipo toggle Il contatore asincrono è molto più semplice da progettare. Ad esempio per un contatore asincrono modulo 8 (che conti cioè da uno a 7) basterà mettere in cascata tre FF di tipo toggle: Si noti che si sono utilizzati FF con ingresso di clock attivo sul fronte di DISCESA. Ciò consente di ottenere un conteggio crescente. Infatti se si analizzano le tre uscite Q 2Q1Q0 dopo il primo clock valgono 001, dopo il secondo clock valgono 010, dopo il terzo clock: 011 eccetera. Si ha cioè un conteggio binario crescente da 0 a 7. Dopo il settimo impulso di clock il conteggio reinizia da zero (si hanno otto stati diversi delle uscite: modulo 8). Se si utilizzano dei FF attivi sul fronte di salita si otterrà un conteggio decrescente, da 7 a 0. Un altro modo di ottenere un conteggio decrescente è quello di utilizzare le uscite NEGATE. Come è possibile ottenere un contatore asincrono con modulo qualsiasi ? 26 contatore asincrono modulo qualsiasi Se il modulo è la potenza ennesima di due basteranno n FF toggle in cascata. Se invece il modulo è qualsiasi (ad esempio m=10) occorrerà utilizzare un numero n di FF toggle tale che 2n sia la più piccola potenza di due maggiore di m. Ad esempio con m=10 occorreranno n=4 flip flop. Il conteggio andrà arrestato quando il numero binario presente sulle uscite è uguale al modulo. Cioè tale numero dovrà far ricominciare il conteggio da zero. Quindi tale configurazione delle uscite dovrà essere portata ad una porta NAND ad n ingressi e l'uscita di quest'ultima dovrà essere portata sull'ingresso di reset diretto (che si suppone attivo basso) dei FF che in quel momento sono alti. Qual è lo svantaggio dei contatori asincroni? 27 Lo svantaggio è legato al fatto che il ritardo di propagazione tp dei FF svantaggio contatori asincroni non consente di ottenere velocità di conteggio molto elevate. Infatti essendo gli n flip flop in cascata i ritardi di propagazione si sommano. Quando n tp > Tck sull'ultimo FF si produce un errore (Tck= periodo del clock). Per ovviare a tale inconveniente si utilizzano i contatori SINCRONI. Qual è lo schema di un contatore sincrono (modulo 2n)? 28 Consideriamo la tabella che ci fornisce le uscite di un contatore modulo 8: Q2 Q1 Q0 S0 0 0 0 S1 0 0 1 S2 0 1 0 S3 0 1 1 S4 1 0 0 S5 1 0 1 S6 1 1 0 S7 1 1 1 stato Come si vede 1) Q0 deve variare ad ogni ciclo di clock. Per ottenere ciò è sufficiente contatore sincrono connettere un JK in configurazione toggle. 2) Q1 deve variare quando Q0 vale 1. Si può ottenere allora che quando Q0=1 il FF che fornisce Q1 funzioni da toggle (basta inviare Q0 ai due ingressi JK) 3)Q2 deve variare il proprio stato quando sia Q0 che Q1 valgono 1. Si può ottenere ciò mandando Q0 e Q1 ad una AND l'uscita della quale viene mandata agli ingressi JK del FF che fornisce Q2 in modo da farlo funzionare da toggle. Si ottiene allora lo schema: Esiste un metodo per progettare un contatore sincrono con modulo qualsiasi? 29 contatore sincrono Si. Illustriamo il metodo con un esempio: sia da progettare un modulo 6: progetto contatore sincrono modulo m=6. 1) Decidiamo anzitutto il numero n di FF da utilizzare. La più piccola potenza di due maggiore di 6 è 8=23. Quindi n=3: decidiamo allora di utilizzare 3 FF di tipo JK attivi sul fronte di tabella stato discesa. presente stato Costruiamo adesso una tabella che riporta lo stato presente, lo futuro stato futuro ed i valori che dovranno assumere j,k per passare dallo stato presente allo stato futuro. Questi ultimi valori li dedurremo dalla tabella di eccitazione, che fornisce i valori di J,K per ogni transizione possibile dell'uscita, cioè per ogni coppia di valori Qn, Qn+1 (Qn=uscita all'istante tn; Qn+1=uscita all'arrivo del successivo impulso di clock). tabella di eccitazione stato futuro n ° stato presente Q2Q1Q0 Q2Q1Q0 J2K2 J1K1 J0K0 Qn Qn+1 J K 0 0 0 0 0 0 1 0x 0x 1x 0 0 0 x 1 0 0 1 0 1 0 0x 1x x1 0 1 1 x 2 0 1 0 0 1 1 0x x0 1x 1 0 x 1 3 0 1 1 1 0 0 1x x1 x1 1 1 x 0 4 1 0 0 1 0 1 x0 0x 1x 5 1 0 1 0 0 0 x1 0x x1 Per costruire la tabella di eccitazione si ragiona come segue: per passare da Qn=0 a Qn+1=0 occorre mantenere il JK in stato di tabella di eccitazione memoria (J=0,K=0) oppure resettarlo (J=0,K=1). Allora occorre mantenere J=0, mentre il livello di K è indifferente (J=x). Analogamente per le altre righe. Per costruire la tabella stato presente, stato futuro , si ragiona come segue: 1) un contatore modulo 6 che conti in avanti dovrà presentare alle sue uscite Q2Q1Q0 i seguenti numeri (codificati in binario) 0,1,2,3,4,5,0,1,2,3,4,5…. Quindi l'uscita 0 dovrà essere seguita dall'uscita 1, questa dall'uscita 2 …, l'uscita 5 dovrà essere seguita dall'uscita 0. Affinché ciò accada si vede che l'uscita Q2 dovrà subire le transizioni indicate dalle due colonne in rosso. Tali transizioni sono possibili se gli ingressi J2K2 assumono i valori indicati (ricavati dalla tabella di eccitazione). Si possono adesso costruire le mappe di Karnough per le diverse variabili: Q2Q1 Q0 00 01 11 10 Q2 Q1 Q0 00 01 11 10 0 0 0 x x 0 x x x 0 1 0 1 x x 1 x x x 1 J2= Q1Q0 (raggruppando l'1 con lo stato indefinito ad esso prossimo) K2=Q0 00 01 11 10 Q2 Q1 Q0 00 01 11 10 0 0 x x 0 0 x 0 x x 1 1 x x 0 1 x 1 x x Q2Q1 Q0 J1= Q2 Q0 (raggruppando l'1 con lo stato indefinito ad esso prossimo) 00 Q2Q1 Q0 01 11 10 K1=Q0 raggruppando lo stato indefinito Q2Q1Q0=111 con gli altri tre stati sulla seconda riga Q2 Q1 Q0 00 01 11 10 0 1 1 1 0 x x x 1 x x x 1 1 1 1 J0= 1 K0=1 In definitiva lo schema del contatore sincrono modulo 6 è quello indicato in figura Dopo aver fatto il progetto di un contatore sincrono utilizzando le mappe di Karnaugh, c'è qualche controllo da fare? 30 controlli sul progetto Si. Occorre controllare in che modo evolva il conteggio nel caso in cui venga a trovarsi per qualche motivo in uno degli stati indesiderati, che nel caso del contatore appena visto sono n=6 (Q 2Q1Q0=110) ed n=7 (Q2Q1Q0=111). Guardando il circuito si vede che lo stato successivo ad n=6 è n=7 (controllare), mentre lo stato successivo ad n=7 è n=0. Quindi se per qualche motivo il contatore va a finire in uno stato indesiderato, dopo due od un impulso di clock rientra nello stato di reset iniziale. Quindi il progetto appena eseguito va bene. Se fosse accaduto viceversa che il contatore ciclava indefinitamente fra due o più stati indesiderati il progetto sarebbe stato da rivedere, imponendo esplicitamente il rientro nel ciclo corretto.