V.1. Considerazioni generali V.2. Flip-Flop V.3 Esempi applicativi G.- F. Dalla Betta, G. Soncini. Appunti di Elettronica 2. Capitolo V Reti sequenziali V.1. Considerazioni generali V.2. Flip-Flop V.3 Esempi applicativi V.4 Implementazioni circuitali 1
Sistema Combinatorio: L’uscita del sistema in un particolare istante è determinata unicamente dal valore presente agli ingressi in quel determinato momento. In un circuito combinatorio il segnale si propaga attraverso le varie porte logiche solo in una direzione, senza mai propagarsi da una porta logica ad una precedente. Sistema Sequenziale: L’uscita del sistema non dipende solo dal valore presente agli ingressi, ma anche dalla “storia” precedente del sistema stesso. Nei circuiti sequenziali si utilizza la retroazione (feedback) per creare elementi dotati di memoria (Flip-Flop). Ramo di retroazione (feedback)
RETROAZIONE (FEEDBACK) La retroazione consiste nel prelevare una copia del segnale d’uscita di un sistema e riportarla in ingresso al sistema stesso. Il segnale “retroazionato” può essere sommato (reatroazione positiva) o sottratto (retroazione negativa) agli ingressi del sistema. I circuiti che si prenderanno in considerazione di seguito sfruttano la retroazione positiva che tende a portare il sistema in uno dei suoi stati estremi (può anche provocare oscillazioni) i0 i1 out SISTEMA Feedback
D D s Esempio di retroazione: oscillatore ad anello IN IN* OUT CS VOUT Il punto Vin=Vout è un punto di equilibrio instabile. La retroazione porta il sistema ad oscillare (con periodo D) , rendendolo instabile. OUT=IN Period 2(D+s) VIN IN s D OUT time
Accensione del circuito V.2. FLIP-FLOP FLIP: circuito in cui si sfrutta la retroazione per realizzare un sistema dotato di memoria. F N Q In questa configurazione e’ di scarsa utilità perché, una volta memorizzato il dato (1), non lo si può più cancellare. Commutazione dell’ingresso F N Q Accensione del circuito
FLIP-FLOP SET RESET (FF-RS, oppure SR Latch) Idea base: sostituisco l’invertitore del FLIP con un secondo NOR. Ho una doppia retroazione delle uscite sugli ingressi ed inoltre altri due ingressi esterni (SET e RESET). Risolvo quindi il problema del FLIP, perche’ con RESET=1 (e SET=0) posso cancellare lo stato precedentemente memorizzato. Al contrario, con SET=1 e RESET=0 impongo Q=0 Infine, con SET=0 e RESET=0 il circuito conserva la situazione precedente, che dipende dalla “storia passata” degli ingressi. RESET Q SET
Tabella della Verità per FF-RS R S Q 0 0 non cambia 0 1 1 0 0 1 1 0 problema ! N.B. Lo stato S=R=1 è critico ! Infatti, le uscite si portano entrambe a 0 ed il sistema si porterà in uno stato oppure in altro a seconda di quale ingresso torna per primo a 0. Caso 1 Caso 2 R S Q R S Q t0 1 1 0 1 1 0 t1 0 1 1 1 0 0 t2 0 0 1 0 0 0 Non potendo garantire la commutazione simultanea degli ingressi, impongo che possa cambiare un solo ingresso alla volta e proibisco la condizione SET = RESET = 1.
Realizzazione del flip-flop SR Ci si riconduce ad una tabella della verità, definendo gli stati QN (stato attuale del FF) e QN+1 (stato futuro del FF). R S QN QN+1 0 0 0 0 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 0 1 0 1 0 1 1 0 NA 1 1 1 NA Non cambia S SET QN+1 R QN RESET Non permesso
Realizzazione a NAND del flip-flop SR R S 0 0 0 1 1 1 1 0 QN 1 - Q R R 1 1 1 - QN Q S QN+1 S Realizzazione a NOR del flip-flop SR R S 0 0 0 1 1 1 1 0 QN 1 - S Q R 1 1 1 - QN+1 S Q QN R
D D Problemi del flip-flop SR Il latch SR è sensibile agli istanti di commutazione degli ingressi: in presenza di GLITCH il FF-SR si trova per un attimo nello stato S=1, R=0 e Q viene settato a 1. Una volta che S torna a 0 Q rimane alto. Quindi, se mettessi un invertitore per evitare la condizione non permessa S=R=1, a causa del ritardo dell’invertitore, avrei comunque un periodo di tempo in cui S=R=1. A Generatore di glitch Condizione proibita A A D D A
FLIP-FLOP SR Level Sensitive (con il Clock) Per risolvere i problemi visti in precedenza utilizzo un segnale di clock: Quando CK=1 il FF è “trasparente“ CK=0 il FF si trova con S=R=0 e conserva l’ultimo stato. Facendo in modo che il CK commuti allo stato alto soltanto dopo che gli ingressi Se R si sono assestati elimino il problema dei glitches. A A A CK S Q
Esempio di applicazione: convertitore A/D FLIP-FLOP D (D-Latch) Quando CK=1 il D-Latch lascia passare il segnale da D a Q CK=0 il D-Latch mantiene memorizzato l’ultimo valore Esempio di applicazione: convertitore A/D Tempo necessario per effettuare una conversione Impulso che dice al conv. A/D di effettuare una conversione
Esempio di applicazione: convertitore A/D START Ingresso analogico D0 D1 A/D D2 REF Dn Uscita digitale BUSY I bit di uscita devono essere immagazzinati e fatti scorrere lungo uno shift register.
Utilizzo un array di D-Latch per mantenere i bit di uscita in attesa che sia disponibile il nuovo valore.Abilito il D-Latch utilizzando il segnale di uscita BUSY dell’A/D. Appena BUSY=0, i D-Latch diventano trasparenti e l’uscita viene aggiornata. Quando il convertitore è occupato ad effettuare una conversione si ha BUSY=1, BUSY=0 e i D-Latch sono in stato di mantenimento.
Se provassi a realizzare lo shift register utilizzando dei D-Latch: Registro a scorrimento (SHIFT REGISTER) Se provassi a realizzare lo shift register utilizzando dei D-Latch: Non funziona! L’uscita che ci si aspetta dallo shift register e’ quella che corrisponde allo scorrimento del dato lungo il registro In realtà, appena il CK=1, tutti i D-Latch diventano trasparenti e il dato si propaga rapidamente lungo tutta la catena.
Funzionamento corretto
Funzionamento sbagliato
FLIP FLOP Master-Slave L’invertitore fornisce allo Slave un clock negato e ritardato di D rispetto al clock che abilita il Master. In questo caso il dato attraversa il FF-M/S solo sui fronti di discesa di CLK.
Diagramma di temporizzazione del FLIP FLOP Master-Slave In questo FF-M/S il dato viene aggiornato (cioè cambia l’uscita dello Slave) sul fronte di discesa di CLK (system clock); questa versione del FF-M/S è detta Negative Edge Triggered.
Registro a scorrimento con FF M/S Il dato attraversa il FF M/S solo sui fronti di discesa di CK
FLIP FLOP J-K L’idea è quella di utilizzare la condizione proibita di un FF-SR (R=S=1). Schema circuitale del FF J-K Ora la condizione J=K=1 è permessa e provoca l’inversione dello stato precedente del FF. Se J=K=0 allora attraverso AND2 passa QN che arriva al D-latch Se J=K=1 allora attraverso AND1 passa QN Tabella della Verità J K Q 0 0 non cambia 0 1 0 0 1 1 1 inverte
FLIP FLOP D Edge Triggered In alternativa al FF M/S posso realizzare un FF Edge Triggered in questo modo. N.B. Non necessita’ di utilizzare clock e clock complementare. a) Consideriamo dapprima lo stato CK=1 e Data=1. 1
b) Poi vediamo cosa succede quando CK commuta da 1 a 0. Questo schema circuitale realizza quindi un D-Latch Edge Triggered (sul fronte di discesa del clock).
Realizzazione FLIP FLOP D Edge Triggered Implementazione a NAND
Segnali asincroni (PRESET/RESET) Gli schemi circuitali dei FF possono essere complicati con l’aggiunta di 2 ulteriori ingressi (PRESET e RESET) che consentono di fissare il valore dell’uscita Q a 0 o a 1 in modo indipendente dai valori di dato e clock. Simbolo grafico
V.3. Esempi applicativi Analisi di reti sequenziali Contatori Convertitori serie/parallelo e parallelo/serie Sommatore seriale
Analisi di reti sequenziali. Tabella delle transizioni QC QB QA 0 0 0 0 1 1 1 1 0 Stato di partenza Stato del circuito: Insieme delle uscite di tutti i FF in un dato istante di tempo Equazioni di eccitazione Power ON
Descrizione alternativa Caso più generale Rete combinatoria Stato Uscita Uscita Stato Uscita N.B. Le uscite di alcuni FF possono non comparire in uscita (FF nascosti), ma tutte contribuiscono a formare lo stato del circuito.
Passi da effettuare per l’analisi di circuiti sequenziali Scomporre il circuito da analizzare evidenziando la parte contenente i F.F. e quella che costituisce la logica di eccitazione Studiare la logica di eccitazione e scrivere l’espressione Booleana per ciascun ingresso dei Flip-Flop Definire lo stato iniziale del circuito; solitamente si considera come stato iniziale lo stato in cui si trova il circuito immediatamente dopo l’accensione (spesso e’ lo stato ZERO) Determinare il nuovo stato delle uscite e inserirlo nelle equazioni di eccitazione in modo da determinare lo stato successivo Proseguire con il passo 4 utilizzando l’ultimo valore trovato fino a trovare uno stato giá incontrato in precedenza.
Esempio 1 Determinare la sequenza generata dal seguente circuito sincrono partendo dallo stato QA=QB=QC=0.
Si scrivono le equazioni di eccitazione per gli ingressi Di: Se QAQBQC=000 allora DADBDC=110; perció i primi due stati del sistema sono 000 e 110… Mappe di K. delle equazioni di eccitazione DA, DB , DC QA QB QA QB 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 QC QC 1 1 1 1 1 1 1 1 1 1 1 DA DB
QA QB Si inserisce l’ultimo stato d’uscita trovato nelle mappe di K. trovando l’uscita successiva e si itera il procedimento fino a ritrovare uno stato giá trovato in precedenza. La sequenza d’uscita é perció data da: 0 0 0 1 1 1 1 0 QC 1 1 1 DC QA QB QC Valore decimale 0 0 0 0 1 1 0 6 0 1 0 2 1 1 1 7 0 1 1 3 1 0 0 4 tempo
Esempio 2 Determinare la sequenza generata dal seguente circuito facente uso di 4 FF-JK, a partire dallo stato 0000 (raggiungibile mediante RESET). I 3 FF B, C e D ricevono come ingressi Ji=Qi-1, Ki=Qi-1 quindi si comportano come FF-D. Il FF A, invece, ha: quindi mantiene il dato (J=K=0) oppure lo inverte (J=K=1).
Equazione di eccitazione per JA Tabella delle transizioni QA QB QC QD 0 0 0 0 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 Mappa di Karnaugh per JA QA QB 0 0 0 1 1 1 1 0 QC 1 1 1 1 1
Passi di progetto per la realizzazione di un contatore sincrono Esprimere in codifica binaria ogni numero della sequenza da realizzare. Scegliere ed implementare un metodo di assegnazione delle uscite dei flip-flop (N) agli stati (M); è possibile utilizzare l’uscita di un flip-flop per ciascun bit della sequenza oppure minimizzare il numero di flip-flop (M=2N) con una codifica opportuna. Disegnare la tabella degli stati “presenti-futuri” della sequenza disponendo da un lato i vari stati della sequenza (Stato attuale) e a fianco la tabella con gli stati successivi (Stato successivo). Scegliere il tipo di F.F. da utilizzare; è preferibile il D-F.F. (minore occupazione di area e maggior facilitá di progetto in quanto lo stato di transizione del F.F. è determinato dallo stato di eccitazione (cioè dal suo ingresso). Disegnare le mappe di K. Per ogni ingresso Di dei F.F. in funzione delle uscite Qi; gli ingressi di ogni mappa sono le uscite degli N flip-flop allo stato precedente. Completare le mappe mettendo in uno stato opportuno (solitamente a Zero) gli stati non utilizzati (che rappresentano stati di indifferenza) e ricavarne le espressioni booleane minime. Disegnare il sistema disponendo i flip-flop ed implementando la logica di eccitazione ricavata al punto 6.
Esempio Progettare un contatore sincrono che realizzi la sequenza 0 3 6 9 12 0 etc… Numero Q3 Q2 Q1 Q0 0 0 0 0 0 3 0 0 1 1 6 0 1 1 0 9 1 0 0 1 12 1 1 0 0 Stato Attuale Stato Successivo Q3 Q2 Q1 Q0 0 0 0 0 0 0 1 1 0 1 1 0 1 0 0 1 1 1 0 0 Q3 Q2 Q1 Q0 0 0 1 1 0 1 1 0 1 0 0 1 1 1 0 0 0 0 0 0
Mappe di Karnaugh Q3 Q2 Q3 Q2 Q1 Q0 Q1 Q0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 12 0 0 1 12 0 1 9 0 1 9 3 3 1 1 1 1 1 6 6 1 0 1 1 0 D0 D1 Q3 Q2 Q3 Q2 Q1 Q0 Q1 Q0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 12 0 0 12 0 1 1 9 0 1 1 9 3 3 1 1 1 1 1 6 6 1 0 1 0 1 D2 D3
Equazioni di eccitazione Schema circuitale …
Contatori a riempimento/svuotamento Sono contatori particolari in cui la retroazione dalle uscite agisce direttamente sono sull’ingresso del primo FLIP-FLOP, mentre gli altri FF fanno “scorrere” i dati. Questa situazione determina sequenze caratterizzate da un iniziale “riempimento” con 1, seguito da uno “svuotamento” (ritorno di 0).
Esempio Tabella delle transizioni Q1 Q2 Q3 Q4 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 1 1 0 1 1 1 1 0 1 1 1 0 0 1 1 0 0 0 1 Equazioni di eccitazione
Esercizio Per il contatore in figura, determinare la sequenza degli stati a partire dallo stato ZERO (Q1Q2Q3Q4=0000).
Equazioni di eccitazione Mappe di Karnaugh per D1 Tabella delle transizioni Q3 Q4 Q1 Q2 Q3 Q4 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 1 0 0 Q1 Q2 0 0 0 1 1 1 1 0 0 0 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1
Convertitore serie/parallelo E’ simile ad un registro a scorrimento, però c’è il problema che il dato convertito è disponibile per un solo ciclo di clock: - posso depositare il dato in un registro, abilitato a ricevere i dati in ingresso solo alla fine della conversione; - posso modificare la struttura del registro a scorrimento ...
Interponiamo tra due FF successivi un MUX, in modo da abilitare lo scorrimento (SH=1) oppure la ricircolazione del dato (SH=0).
Convertitore parallelo/serie Deve consentire di introdurre dall’esterno in parallelo il dato (LOAD) e di far partire i dati di k-bit in serie alla fine del caricamento (SHIFT). Uso uno schema simile al precedente.
Sommatore seriale 1° addendo Risultato 2° addendo
FLIP-FLOP SR: schema a NOR V.4. Implementazioni circuitali FLIP-FLOP SR: schema a NOR Implementazione CMOS Implementazione CMOS semplificata … Problema per S=R=1
FLIP-FLOP SR level sensitive Implementazione CMOS La versione CMOS consente un risparmio sul numero di transistori utilizzati rispetto allo schema di partenza (2 NOR + 2 AND)
FLIP FLOP D level-sensitive Osserviamo che il segnale di CK ha essenzialmente funzione di ENABLE … … risulta conveniente lo schema circuitale che fa uso di Transmission Gates ! Notevole risparmio sul numero di transistori
Negative Edge Triggered. FLIP FLOP D Master-Slave La soluzione a TG e’ ancora piu’ conveniente per il M/S. Negative Edge Triggered. Master Slave