MONOSTABILI E CIRCUITI TRIGGER La larghezza dell'impulso d'uscita è determinata da una rete realizzata con resistenza e capacità durata W legata soltanto alle caratteristiche della costante di tempo =RC qualunque sia la durata del segnale di ingresso, l'uscita ha sempre e solo la durata W circuiti detti resettabili: hanno, cioè, la possibilità di interrompere la durata dell'impulso di uscita inviando un impulso di reset. Retriggerabili tw( uscita) CR ln 2 0,7RC CIRCUITI TRIGGER L'intervallo di tensione fra VH e VL è appunto l'isteresi del circuito. CIRCUITI SEQUENZIALI Gli elementi fondamentali di un circuito sequenziale sono i flip-flop tutti i flip-flop commutano con lo stesso comando di clock La struttura di una tale macchina è riportata in figura 1 sia le uscite che gli stati futuri sono una funzione degli ingressi e degli stati presenti lo stato successivo della macchina è determinato dal blocco logico "stato successivo F" come una funzione dello stato presente e dell'ingresso. Il blocco logico di uscita "G" determina l'uscita come una funzione dello stato presente e dell'ingresso i circuiti "G" ed "F" sono dei circuiti strettamente combinatori Stato successivo = F ( stato presente, ingresso) Uscita = G (stato presente, ingresso) Un circuito sequenziale in cui l'uscita dipende da stato ed ingresso, come in figura 1, viene identificata come "macchina di Mealy"; fig 1 Uscita = G(stato presente) Quest'ultimo tipo di macchina viene identificata come "macchina di Moore" e la sua struttura generale è riportata in figura 2. Fig. 2 L'analisi di un circuito sequenziale consiste nell'ottenere una tavola o diagramma della sequenza temporale degli ingressi, uscite,e stati interni esempio di circuito sequenziale circuito con una variabile di ingresso, una variabile di uscita due flip-flop di tipo RS, Fig. 3 flip-flops triggerati sui fronti negativi del segnale di clock stato presente durante l'intervallo fra una transizione e la successiva del segnale di clock che lo porta allo stato futuro. Costruiamo per questo circuito sequenziale di figura 3 una "tabella di stato" che evidenzi la sequenza temporale del segnale (o segnali) di ingresso, di uscita e dello stato dei flip-flops. Questa tabella sarà divisa in tre sezioni etichettate come "stato presente" , "stato successivo" ed "uscita" Stato presente Stato successivo x=0 USCITA x=1 x=0 x=1 A B A B A B y y 0 0 0 0 0 1 0 0 0 1 1 1 0 1 0 0 1 0 1 0 0 0 0 1 1 1 1 0 1 1 0 0 Lo stato presente evidenzia gli stati dei flip-flops prima dell'arrivo del segnale di clock. lo stato successivo evidenzia gli stati dei flipflops dopo l'applicazione del segnale di clock, la colonna relativa all'uscita mostra i valori della variabile uscita durante lo stato presente. Sia lo stato successivo che l'uscita hanno due colonne, una per x=0 ed una per x=1. Per costruire la tabella di stato occorre partire da uno stato iniziale. (Nella maggior parte dei circuiti sequenziali è preso quello con tutti i flip-flops nello stato "0"). Comunque l'analisi può partire da uno stato arbitrario Quindi la prima situazione sarà A = 0 e B = 0. La situazione dell'uscita invece è molto più facile da derivare In generale, un circuito sequenziale con "m" flip-flops ed "n" variabili di ingresso avrà 2 elevato ad m righe, una per ciascuno stato. Lo stato successivo e la sezione uscita avranno 2 elevato ad n colonne, una per ciascuna combinazione di ingresso. Le informazioni contenute nella tabella di stato si possono rappresentare graficamente in un "diagramma di stato". in questo diagramma, uno stato viene rappresentato da un cerchio, e la transizione fra gli stati da una linea che collega direttamente i vari cerchi. Il diagramma di stato dell'esempio che stiamo analizzando è riportato in figura 4 Fig. 4 Il numero binario contenuto all'interno di ogni cerchio identifica lo stato che quel cerchio rappresenta. Le linee che collegano direttamente i vari cerchi sono etichettate con due numeri binari separati da uno /. L'elemento che viene scritto per primo rappresenta il valore di ingresso che determina il cambiamento di stato; il numero scritto dopo il segno / fornisce il valore dell'uscita che si ha durante lo stato presente. ING/USC(stato presente) La linea che un cerchio ha con se stesso non determina un cambiamento di stato. Il diagramma di stato fornisce le stesse informazioni della tabella di stato Il diagramma di stato viene spesso usato come specifica di progetto di un circuito sequenziale. Riferendoci alla figura 1 e 2, vediamo che le procedure di analisi svolte fino a questo punto si possono riassumere in tre step base: 1) Determinare lo stato successivo e l'uscita, funzioni F e G 2) Usare F e G per costruire la tabella stato/uscita che specifica completamente lo stato successivo e l'uscita del circuito per ogni possibile combinazione dello stato corrente e ingresso 3) (optional) Disegnare un diagramma di stato che presenta le informazioni del precedente step in forma grafica. Consideriamo ora un ulteriore passo per completare l'analisi di un circuito sequenziale. L'equazione di stato è una espressione algebrica che specifica le condizioni per il passaggio di stato di un flip-flop. Il membro alla sinistra dell'equazione indica lo stato successivo del flip-flop ed il membro alla destra è una espressione Booleana che specifica le condizioni sullo stato presente che porteranno lo stato successivo ad essere uguale ad "1". Una equazione di stato è nella forma simile alla equazione caratteristica di un flip-flop eccetto per il fatto che questa specifica la condizione dello stato successivo in termini di variabili di ingresso esterne ed altri valori relativi ai vari flip-flop. L'equazione di stato si ottiene direttamente dalla tabella di stato. Considerando sempre il nostro esempio, l'equazione di stato relativa al flip-flop (A) si ottiene osservando la tabella di stato. Dalla colonna degli stati successivi si vede che il flip-flop (A) va nello stato "1" quattro volte: x=0 e AB=01--AB=10--AB=11 x=1 e AB=11 Questo si può esprimere algebricamente in una equazione di stato del tipo A(t+1) = (A'B+AB'+AB)x'+ABx Il secondo membro dell'equazione di stato è una funzione Booleana dello stato presente. Quando questa funzione è uguale ad "1" l'arrivo di un segnale di clock porta il flip-flop (A) ad assumere lo stato successivo "1". Quando la funzione è uguale a "0" l'impulso di clock porta il flip-flop (A) ad assumere lo stato successivo uguale a "0". Il lato sinistro dell'equazione identifica il flip-flop considerato, seguito dalla indicazione (t+1) per evidenziare che la situazione si avrà dopo l'arrivo del segnale di clock. L'equazione di stato è una funzione Booleana che contiene anche la variabile tempo. Questa equazione del flip-flop si può riportare in una mappa di Karnaugh per poter effettuare delle manipolazioni. A 0 1 Bx 00 1 01 11 1 10 1 1 dalla mappa possiamo ottenere l'espressione A(t+1) = Ax'+AB+Bx' = Bx'+(B+x')A Analoga procedura possiamo applicare al flipflop (1) ottenendo B(t+1) = A'Bx'+(A'B'+A'B+AB)x riportando anche questa in una mappa otteniamo Bx A 00 01 11 10 0 1 1 1 1 1 da questa otteniamo B(t+1) = A'x+A'B+Bx = A'x+(A'+x)B Come abbiamo visto il diagramma logico di un circuito sequenziale è formato da elementi di memoria e porte. Il tipo di flip-flop e le tabelle caratteristiche specificano le proprietà logiche dell'elemento di memoria. Le interconnessioni fra le porte formano un circuito combinatorio che può essere specificato algebricamente con delle funzioni Booleane. Perciò la conoscenza del tipo di flip-flop e una lista delle funzioni Booleane del circuito combinatorio fornisce tutte le informazioni necessarie a poter disegnare il diagramma logico di un circuito sequenziale. La parte del circuito combinatorio che genera le uscite esterne viene descritto algebricamente da alcune funzioni di uscita. La parte del circuito che genera gli ingressi ai flip-flops viene descritta algebricamente da un set di funzioni Booleane chiamate "funzioni di ingresso ai flip-flop" o spesso equazioni di ingresso. Noi adotteremo la convenzione di usare due lettere per individuare la variabile di ingresso di un flip-flop: la prima definisce il nome dell'ingresso mentre la seconda individua il nome del flip-flop. Nel caso dell'esempio avremo SA e RA per il flip-flop (A) SB e RB per il flip-flop (B) In particolare esprimendo l'intera equazione relativa ai due ingressi dei due flip-flop avremo SA = Bx' R0 = B'x SB = A'x R1 = Ax' y = AB'x Prima di passare alla stesura definitiva delle procedure di progetto del circuito sequenziale, analizziamo ancora dei problemi legati alla eccitazione dei vari tipi di flip-flop che potrebbero venire impiegati nel progetto. Le tabelle caratteristiche dei vari tipi di flip-flop sono stati analizzati precedentemente. Una tavola caratteristica definisce le proprietà logiche del flip-flop e ne caratterizza completamente il modo di operare. tabella caratteristica Questo tipo di tabella per ogni tipo di flip-flop è riportata nelle figure: S R 0 Q(t+1) 0 Q(t) 0 1 1 J 1 0 1 0 1 ? K Q(t+1) 0 0 1 1 0 1 0 1 Q(t) 0 1 Q(t)' D Q(t+1) 0 1 0 1 T Q(t+1) 0 1 Q(t) Q(t)' Queste tabelle definiscono lo stato del flipflop come una funzione del suo ingresso e dello stato precedente. Q(t) si riferisce allo stato presente e Q(t+1) invece allo stato successivo che si avrà dopo l'arrivo del segnale di clock La tabella caratteristica è molto utile per affrontare il problema dell'analisi di un circuito sequenziale e per definire il funzionamento del flip-flop. Essa specifica lo stato successivo allorchè sono note sia l'ingresso che lo stato presente. Durante il processo relativo al progetto noi normalmente conosciamo la transizione dallo stato presente a quello successivo e vogliamo determinare le condizioni di ingresso che determineranno la richiesta transizione. per questo noi abbiamo bisogno di una tavola che evidenzi gli ingressi richiesti per un dato cambiamento di stato. Questa sarà la "tabella di eccitazione". Elenchiamo in figura le relative tabelle per flip-flop SR, JK, D e T rispettivamente Q(t) 0 0 1 1 Q(t) 0 0 1 1 Q(t) 0 0 1 1 Q(t) 0 0 1 1 Q(t+1) S R 0 1 0 1 0 1 0 X X 0 1 0 Q(t+1) J K 0 1 0 1 0 1 X X X X 1 0 Q(t+1) D 0 1 0 1 0 1 0 1 Q(t+1) T 0 1 0 1 0 1 1 0 Ciascuna tavola consta di due colonne, la Q(t) e Q(t+1) e una colonna per ciascun ingresso in modo da evidenziare cosa è richiesto per ottenere la transizione desiderata. Ci sono quattro possibili transizioni dallo stato presente a quello successivo. Il simbolo X nelle tabelle rappresenta la condizione di don't-care, che può ovviamente essere sia "1" che "0". PROCEDURA DI PROGETTO Il progetto di un circuito sequenziale con clock parte da un set di specifiche e termina con circuito logico o una lista di funzioni Booleane dalle quali si può ottenere un circuito. Il primo tabella di stato o un diagramma di stato Un circuito sequenziale sincrono è composto da flip-flop e da un certo numero di porte. Il progetto consiste nella scelta dei flip-flop e nel determinare una struttura combinatoria che, insieme ai flip-flop, produce le evoluzioni degli stati che ci si era proposti con il set di specifiche. Il numero dei flip-flop, come già in parte anticipato, è condizionato dal numero di stati distinti necessari. La procedura di progetto si può sintetizzare in un certo numero di step raccomandati: 1) Avere una descrizione a parole del circuito che si vorrebbe realizzare. Questo può essere accompagnato da un diagramma di stato, un diagramma temporale o altre informazioni pertinenti il circuito che si vuole realizzare. 2) Da queste informazioni ottenute al punto 1) ricavare una tabella di stato 3) Assegnare il valore binario a ciascuno stato se la tabella di stato ricavata negli step precedente era di di tipo letterale. 4) Determinare il numero di flip-flop necessari ed assegnare un simbolo identificativo a ciascuno. 5) Scegliere il tipo di flip-flop da utilizzare. 6) Dalla tabella di stato, derivare il circuito di eccitazione e la tavola di uscita. 7) Utilizzare le mappe o qualsiasi altro metodo di semplificazione; derivare quindi i circuiti funzione di uscita e funzione di ingresso al flip-flop. 8) Disegnare il circuito logico. Per la scelta dei flip-flop da adoperare un principio da seguire potrebbe essere quello di utilizzare dei flip-flop di tipo JK nella quasi totalità dei casi per la sua estrema versatilità, utilizzare tipi di flip-flop SR o D nel caso di applicazioni rivolte al trasferimento di dati mentre riservare l'uso del tipo T ai casi di applicazioni di complementazione (ad esempio nel caso di contatori binari). Consideriamo una realizzazione come esempio: sia dato il diagramma di stato indicato in figura Si decida l'uso di flip-flop di tipo JK per la sua realizzazione. Osservando il diagramma di stato vediamo che sono necessari quattro stati con valore binario già assegnato. Le linee di collegamento fra stati contengono un solo numero binario che si riferirà all'ingresso, in particolare ad una singola variabile di ingresso. Non è presente una variabile di uscita ( e da presumere che gli stati dei flip-flop costituiscono l'uscita del circuito). Con quattro stati occorreranno 2 flip-flop che identificheremo con (A) e (B), la variabile di ingresso la identificheremo con "x". Costruiamo la tabella di stato partendo dal diagramma di cui disponiamo Stato presente A 0 0 1 1 Stato successivo x= 0 x = 1 A B A B B 0 1 0 1 0 1 1 1 0 0 0 1 0 0 1 0 1 1 1 0 Il passo successivo è la tabella di eccitazione. Per rendere più facile la costruzione di questa tabella modifichiamo la realizzazione della tabella di stato. In pratica cerchiamo di realizzare la tabella di stato come se fosse una tabella di verità, considerando tutti i casi sulla stessa colonna. Riportiamo nella stessa tabella le condizioni di ingresso dei flip-flop Ingresso circuiti combinat. Stato IN Stato Pres Succ A B x A B 0 0 0 0 0 1 0 0 0 1 Uscita circuiti combinatori Ingresso flop JA KA 0 0 x x FlipJB KB 0 1 x x 0 0 1 1 1 1 1 1 0 0 1 1 0 1 0 1 0 1 1 0 1 1 1 0 0 1 0 1 1 0 1 0 x x x x x x 0 0 0 1 x x 0 1 x x 1 0 x x 0 1 Nelle quattro colonne relative alle entrate dei due flip-flop troviamo la lista delle condizioni relative a tutti gli ingressi. Per esempio nella prima riga noi abbiamo una transizione del flip-flop (A) dallo stato presente (0) a quello successivo (0), noi abbiamo visto che una tale transizione si ha con J = 0 e K = X come troviamo nella colonna JA e KA e così anche per tutti gli altri casi. Analizziamo meglio la situazione per valutare le informazioni ricavabili dalla tabella completa sopra riportata. Noi sappiamo che un circuito sequenziale è formato da un certo numero di flipflop e da una rete combinatoria. Dobbiamo quindi realizzare un blocco, relativo alla rete combinatoria, con un ingresso relativo alla variabile di ingresso "x" ed altri quattro ingressi provenienti dalle uscite relative agli stati presenti. Ci saranno quattro uscite che rappresentano gli ingressi dei due flip-flop ( quattro in questo caso perchè si tratta di flipflop di tipo JK). Il circuito quindi sarà del tipo indicato in figura Ciascuna delle colonne relative alle uscite del circuito combinatorio, che in realtà corrisponde all'entrata del relativo flip-flop, può essere vista come una tabella di verità e risolta con le stesse regole relative a questo tipo di tabella. Ad essa quindi possiamo applicare le regole delle mappe per un eventuale semplificazione. Avremo allora la costruzione di quattro mappe con tre ingressi ( due stati presenti e un ingresso "x"). La rete combinatoria sarà allora JA KA JB KB = = = = Bx' Bx x Ax+A'x'= A nor exclusive x Il circuito completo e definitivo, sarà quello riportato in figura lo stato iniziale del circuito sequenziale. Con l'accensione del circuito un sistema digitale si porta ad uno stato non conosciuto. Normalmente si introduce un ingresso manuale o automatico di master-reset che provvede ad inizializzare gli stati di tutti i flip-flop. Tipicamente, il master-reset è un segnale applicato a tutti i flip-flop in modo asincrono prima che il clock divenga attivo. In molti casi i flip-flop vengono resettati da questo segnale di master-reset, ma alcuni possono anche posti nello stato di set ( "1"). Nel nostro caso lo stato iniziale corrisponde a 001, in questo caso quindi i tre flip-flop non vanno resettati. Affrontiamo adesso un altro problema. Un altro esempio di macchina sequenziale è un circuito che segue una prescritta sequenza di stati finchè viene applicato un segnale di clock, questo è il caso del contatore. Il segnale di ingresso in questo caso è l'impulso da contare. In un contatore la sequenza degli stati può seguire un conteggio binario o una qualsiasi diversa sequenza di stati. I contatori sono dei circuiti che si trovano in molti sistemi digitali. Il contatore che segue la sequenza binaria è detto "contatore binario"; un contatore ad n-bit è realizzato impiegando n flip-flop e può contare da 0 ad 2 elevato ad n meno uno. Come esempio consideriamo un contatore a tre bit; la sequenza degli stati e quindi il diagramma degli stati è riportato in figura La sequenza di conteggio di un contatore a 3bit binario è riportata nella tabella che segue Sequenza di conteggio A2 A1 A0 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 Ingresso F/F TA2 0 0 0 1 0 0 0 1 TA1 TA0 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 Questa tabella praticamente è la tabella di eccitazione perchè in essa sono riportate le colonne relative ai flip-flop adoperati; come si vede sono indicati dei flip-flop di tipo "T", molto convenienti, come detto prima, per la realizzazione di contatori. A questo punto determiniamo la rete combinatoria prendendo le singole colonne relative agli ingressi TA come delle tabelle di verità; quindi utilizziamo le mappe per cercare di ottenere delle semplificazioni cercando di abbassare i costi di realizzazione. Realizzeremo tre mappe una relativa a TA0, una relativa a TA1 ed infine una relativa a TA2 Ricaviamo quindi l'equazione ciascun ingresso di flip-flop TA2 = A1A0 relativa a TA1 TA0 = A0 = 1 Il circuito logico o diagramma è riportato in figura Passiamo ad un altro esempio; un contatore non deve avere una sola sequenza; realizziamo un contatore che ripeta una sequenza di sei stati nel modo indicato nella tabella Sequenza conteggio A B 0 0 0 1 1 1 C 0 0 1 0 0 1 0 1 0 0 1 0 Si voglia realizzarlo utilizzando dei flipflop di tipo JK, la tabella di eccitazione va realizzata tenendo conto della tabella di eccitazione del flip-flop JK. la tabella di eccitazione Sequenza conteggio A B C 0 0 0 1 0 0 1 0 0 1 0 0 Ingresso Flip-flop JA KA JB KB JC KC 0 0 1 x x x x 0 0 1 x 0 x x 1 x 1 x 0 1 x 1 x x 1 1 0 1 1 0 x x 0 1 1 x x 1 x 0 1 x Tracciando le sei mappe ed effettuando possibili semplificazioni otteniamo : JA = B JB = C JC = B’ le KA = B KB = 1 KC = 1 Il diagramma del circuito sarà quello indicato in figura 25 Fig. 25 Gli stati utilizzati per la realizzazione della macchina non sono tutti quelli possibili, vi sono due stati "011" e "111" che non sono stati considerati e nelle mappe sono stati utilizzati come "x". Considerando di trovarsi in questi due stati è importante conoscere in quali stati si passa con l'arrivo del segnale di clock. Consideriamo il caso "011" in questo caso avremo, considerando le equazioni di ingresso ai flip-flop: JC = B'=0 KC=1 = 1 JB=QC=1 KB=1=1 si ha il reset si ha il complemento del flip-flop JA=B=1 KA=B=1 si ha il complemento del flip-flop Dallo stato "011" si passa quindi allo stato "100" Consideriamo il caso "111" in questo caso avremo, considerando equazioni di ingresso ai flip-flop: JC = B'=0 KC=1 = 1 JB=C=1 KB=1=1 JA=B=0 KA=B=1 le si ha il reset del flip-flop si ha il complemento del flip-flop si ha il reset del flip-flop Dallo stato "111" si passa quindi allo stato "000" In entrambi i casi con il segnale di clock si passa ad uno stato che rientra nel funzionamento della macchina. Il diagramma di stato relativo a questa realizzazione è indicato in figura REGISTRI, CONTATORI registri contatori Un registro è un gruppo di celle di memoria binaria necessaria per conservare informazioni binarie. Un gruppo di flip-flop costituisce un registro mentre un flip-flop costituisce una cella di memoria capace di conservare un bit di informazione. Un registro ad "n" bit contiene "n" flip-flop Un contatore è essenzialmente un registro che segue una sequenza di stati predeterminata cadenzata dall'applicazione di un impulso di ingresso. REGISTRI Vi sono vari tipi di registri che si trovano sotto forma di integrati. Il più semplice possibile è quello che è realizzato utilizzando solo flip-flop senza alcuna porta esterna. Questo tipo di componente a 4 bit è riportato in figura Il trasferimento di un nuova informazione in un registro è normalmente un operazione di carico "load". Se tutti i bit del registro vengono caricati simultaneamente con un singolo impulso di clock allora diciamo che il caricamento dei dati è del tipo "parallelo". Un impulso applicato all'ingresso di clock caricherà tutti e quattro i bit. Uno schema che risponde a questo tipo di funzionamento è riportato in figura REGISTRI A SCORRIMENTO Un registro capace di far scorrere la sua informazione binaria verso destra o verso sinistra viene detto "shift register". La configurazione logica di un registro a scorrimento consiste di una catena di flip-flop connessi in cascata, con l'uscita di un flip-flop collegata all'ingresso del successivo flip-flop. Tutti i flip-flop ricevono un comune impulso di clock che determina lo scorrimento da uno stadio al successivo. Il registro a scorrimento più semplice che impiega solo flip-flop è riportato in figura 1 Questo tipo di registro trova largo impiego nella conversione di dati dallo stato seriale a quello parallelo. Si intuisce facilmente come sia possibile realizzare dei registri del tipo "parallel-in, serial-output"; la struttura generale di un tale tipo di dispositivo è riportata in figura E' immediata la realizzazione di registri del tipo "parallel-input, parallel-output" CONTATORI Il nome di contatore viene in genere utilizzato per indicare un qualsiasi circuito sequenziale che contiene un diagramma con un singolo ciclo. Il modulo del contatore è il numero degli stati relativi al ciclo. Un contatore con un numero di “m” stati viene detto “contatore modulo m”.