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