Trasferimento parallelo DFF sono usati per memorizzazione di dati. Una delle operazioni fondamentali che coinvolge registri e’ il trasferimento sincrono Ritardo clock Blocco combinatorio I rI Z rZ Reg. Out Reg. In flusso dei dati tclk Clk I BB BB rI Z tc DD DD rZ Se tempo di ritardo (tskew) = 0 => il sistema funziona se: tP + tc + ts < tclk frequenza massima Nota: Se tskew > 0 tclk cresce!!!!! Trasferimento seriale Shift register (registro a scorrimento) realizza un trasferimento seriale sincrono S sr_in D S Q D C S Q D C S Q D C Q sr_out C clock Lo shift register puo’ essere scritto serialmente (modo sincrono) o inizializzato con una opportuna combinazione di Set e Clear (modo asincrono) Clock sr_in p3 p2 p1 p0 p1 p2 p3 p0 p3 p2 p1 p0 0 1 0 0 0 0 x x 1 x 0 1 1° fronte 2° fronte Shift register realizza una conversione da seriale a parallelo (e viceversa). La trasmissione seriale di informazione e’ “semplice” ma poco efficente: per trasferire N bits N cicli di clock. Contatori Un contatore e’ un circuito sequenziale in grado di “contare” impulsi. Elemento essenziale di un contatore e’ un FF che commuta il suo stato d’uscita ad ogni colpo di clock S J Q K /Q C J 0 0 1 1 K Q 0 Qold 1 0 0 1 1 /Qold Equivalgono ad un set e clear sincroni!!! I contatori si dividono in due classi: asincroni (ripple counter) sincroni (parallel counter) L’insieme di FF che compongono un contatore ripple non cambiano stato in maniera sincrona con il clock (sono piu’ lenti) Contatori asincroni 1 clk 1 1 1 J Q J Q J Q J Q K /Q K /Q K /Q K /Q L’inversione fa commutare FF su fronte negativo Q0 Q1 Q2 Q3 Divisione di frequenza: clk Q0 Q1 Q2 Q3 f/2 f/4 f/8 f/16 Conteggio: n°C Q3 Q2 Q1 Q0 0 0 0 0 0 1 0 0 0 1 2 0 0 1 0 ................................. 14 1 1 1 0 15 1 1 1 1 0 0 0 0 0 Contatori asincroni(2) n°C Q2 Q1 0 0 0 1 0 0 2 0 1 3 0 1 4 1 0 5 1 0 0 0 0 Progetto di un contatore asincrono modulo 6 a partire da un contatore modulo 8. Sequenza aspettata degli output: Il contatore viene “resettato” in maniera asincrona (clear) quando l’output e’ uguale a 6 (110) 1 clk 1 1 J Q J Q J Q K /Q K /Q K /Q C Q0 Q1 Q0 0 1 0 1 0 1 0 C Q1 C Q2 Q2 Tempo di propagazione di un contatore asincrono modulo 2N: il clock dello stadio successivo e’ il data output dello stadio precedente quindi il tempo di commutazione dal clock in ingresso e’ Tc = N x TP clk Q0 Q1 Q2 Q3 Tp 2Tp 3Tp 4Tp Attenzione: se Tc < NTp il contatore non funziona!!!! Contatori sincroni I problemi connessi con l’accumularsi dei tempi di propagazione dei FF viene risolto con contatori sincroni. Un contatore e’ detto sincrono quando tutti gli output commutano in maniera sincrona con il clock in ingresso il clock e’ distribuito in parallelo a tutti i FF del contatore. Q2 Q1 Q0 Q2 Q1 Q0 Es: contatore modulo 5 decodifica delle uscite 0 0 1 1 0 D Q 0 1 0 1 0 0 0 0 1 0 0 1 1 0 0 1 0 1 0 0 /Q2 /Q0 Q1 Q0 /Q2 Q1 Q0 0 0 0 0 1 D Q /Q D /Q Q /Q clk Q2 Tempo di propagazione: Tc = Tp(FF) + Tp(gate) Q1 Q0