Reti Sincrone 1 I problemi con le reti asincrone • Il comportamento dipende dai ritardi sugli anelli di retroazione con possibilità di malfunzionamenti (disallineamento dei ritardi sugli anelli di retroazione) • Il comportamento dipende dalle alee degli ingressi (che comunque NON possono essere temporalmente allineati in assoluto) e impedisce il riconoscimento di sequenze ripetute degli ingressi (ad esempio riconoscere la sequenza 00-00-11-01 che risulta essere indistinguibile da 00-11-01) SOLUZIONE • Ottenere artificialmente l’allineamento degli ingressi e degli anelli di retroazione 2 Segnale di sincronismo X0..n Y0..k Z0..m Rete combinatoria s/r0..k FF SR0..k t Segnale di sincronismo • Se la durata dell’impulso t è inferiore al tempo di reazione della rete combinatoria (ovvero il minimo ritardo della rete combinatoria) le nuove funzioni di eccitazione s/r0..k calcolate della rete combinatoria non raggiungono l’AND di blocco prima che le uscite degli AND stessi siano portate a zero rendendo stabili le uscite dei FF SR (il FF SR con gli ingressi entrambi a zero NON cambia stato. Solo al successivo impulso t le nuove funzioni di eccitazione (e quindi le nuove variabili di stato) sono avviate alla rete combinatoria senza che la retroazione faccia in tempo ad agire. Allineamento delle retroazioni • Si noti che così facendo anche l’effetto degli ingressi viene “allineato” • Le uscite sono esattamente “allineate” se la rete è di tipo Moore (dipendenti solo dalle variabili di stato) 3 Segnale di sincronismo • Il segnale di sincronismo viene sempre indicato con il nome di clock • Normalmente il segnale di clock è un segnale ripetitivo e cadenzato (quest’ultima caratteristica pressoché sempre ma non necessariamente rispettata) T Clock • Un FF SR dotato di segnale di clock viene chiamato SR sincrono (che però NON è mai usato nella realtà) • Quali problemi vi sono con un segnale di clock come quello riportato in figura ? L’impulso dovrebbe essere strettissimo dal momento che una rete combinatoria può consistere anche di un solo filo nel qual caso il ritardo da combattere sarebbe solo quello legato alla propagazione del segnale elettrico sui fili !!! Di fatto irrealizzabile 4 I FF sincroni • Esistono molti FF di tipo sincrono ma oggi si usa UNICAMENTE il FF D il cui comportamento è stato studiato come rete asincrona ma che qui viene utilizzato come FF sincrono (nella pratica nella sua versione 74xx74) D Q D CK !Q • Il FF D si chiama così perché D sta per Delay (ritardo). Infatti l’uscita Q segue l’ingresso D con un periodo T di ritardo (se il segnale di ingresso D è sincrono – ovvero generato contemporaneo al clock - nel rispetto di setup e hold - ad esempio da una rete controllata da altri FF D) oppure al primo fronte positivo del clock. • Il triangolo sul clock (CK) indica che è edge triggered ovvero che scatta sul fronte positivo del clock D PR D CK CL Q !Q I segnali !CL e !PR agiscono in modo asincrono ovvero immediatamente senza attendere il clock 5 Reti sequenziali sincrone X0..n Y0..k Z0..m Rete combinatoria Q0..k y0..k Si veda lo schema delle reti asincrone con la retroazione tramite FF RS in cui S=!R D0..k CK CK FFD0..k Clock • La sintesi si effettua come nel caso della rete asincrona con retroazione diretta ma ingressi che rimangono costanti sono ingressi considerati dalla rete come diversi (in quanto presi in considerazione in istanti diversi e quindi in possibile presenza di stati diversi) • Ciò che conta in questo caso è il fronte positivo del clock: la distanza fra successivi (nel rispetto di setup e hold – v. reti asincrone) NON ha importanza • Ovviamente il periodo (la frequenza) del clock deve essere superiore (inferiore) al massimo ritardo insito nella rete combinatoria. La rete combinatoria deve essersi stabilizzata a seguito di un fronte del clock prima che il successivo fronte si presenti fronti positivi 6 Reti Sequenziali Sincrone (RSS) S k S* ? S k (k) FFD CK S* k FFD sull’anello di retroazione Tutti con lo stesso clock di periodo T CK I S S* U t-T t Nel caso specifico: Moore o Mealy ? t+T t+2·T Lo stato cambia anche se non cambia l’ingresso ? L’uscita cambia anche se non cambia l’ingresso ?7 Il FFD come elemento fondamentale delle RSS Se all’ingresso CK viene inviato un segnale periodico (clock) il FFD ritarda (D = Delay) il segnale di uscita Q, rispetto al segnale di ingresso D, di un tempo pari al periodo di clock T se il cambiamento del segnale D è contemporaneo a quelli clock (nel rispetto di setup e hold) Qn+1 = Dn NB: essendo qui il tempo discretizzato si usa n e n+1 al posto di T e T+t D D Q Q Q* Q* FFD CK CK CK D Q T T T T NB: il concetto di contemporaneità potrebbe apparire in contrasto con la necessità di rispettare i tempi di setup e hold. Di fatto gli ingressi di una rete sincrona sono nella larga maggioranza provenienti da altre reti che hanno lo stesso clock e quindi sono generati con i ritardi delle reti soggette al clock, rispettando quindi di fatto i tempi previsti. Di fatto le variazioni degli ingressi sono sempre un po’ posteriori alla variazione del clock. Si veda in seguito il comportamento dei registri a traslazione 8 Alcune considerazioni sulle RSS • Lo stato della rete cambia solo in corrispondenza dei fronti di salita del clock che si susseguono con periodo T • La rete risponde ogni T ⇒ se si desidera massimizzare la velocità di risposta della uscita è necessario adottare il modello di Mealy • La sequenza degli stati della rete è svincolata dai ritardi della rete combinatoria (purché la distanza fra i fronti positivi del segnale clock sia superiore al massimo ritardo della rete combinatoria)! Quindi nessun problema di corse critiche • All’interno di uno stesso progetto (ad esempio un processore) sono tipicamente presenti più RSS e non necessariamente per tutte le RSS il clock è lo stesso e/o coincide con il clock del processore • Le RSS sono più facili da progettare delle RSA 9 Clock gating e glitch sul clock Nelle reti sincrone è necessario evitare variazioni spurie (glitches) del segnale di clock che possono provocare commutazioni indesiderate dei FFD (che sono sensibili ai fronti). Ad esempio, per via dei ritardi tra gli n segnali I[n-1..0] e/o le alee introdotte dalla rete combinatoria di decodifica, a causa del “clock gating“, può verificarsi quanto segue. X I[n-1..0] t Rete di Decodifica CK P CK D CK_G Q Q Q* Q* FFD CK P NO !! CK_G Glitch sul clock → possibile commutazione spuria del FFD Naturalmente tutto dipende dalla larghezza dell’impulso spurio: se molto stretto il FF potrebbe non sentirlo. Quindi il clock gating non è proibito ma è un rischio da evitare in caso di incertezza. 10 Clock gating e glitch sul clock Per transizioni che debbono o meno verificarsi in funzione del valore della rete di decodifica bisogna condizionare il segnale D come in figura. Se la rete di decodifica genera il valore 1 l’uscita Q assume al clock il valore di X altrimenti l’uscita Q copia sé stessa e rimane invariata X 0 0 1 1 D SEL SEL t I[n-1..0] Rete di Decodifica P Q Q Q* Q* FFD CK CK 11 Clock gating e clock-skew Il clock gating, oltre a generare potenziali glitch introduce “clock-skew” (disallineamento). Ad esempio, consideriamo due RSS soggette al FF1 e al FF2 I2 FFD-1 CK CK I1 A Q D A* Q* CK P CK_G B Q D FFD-2 CK B* Q* tAND I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dall’AND (in generale dalla eventuale RC) interposto. Tale fenomeno (“clock-skew”) è potenzialmente dannoso in quanto il FF2 potrebbe fare campionare alla propria RC in presenza dello stesso fronte di clock i nuovi valori prodotti dalla RC alimentata dal FF1 CK CK_G tAND tAND NB: Il “clock-skew” non è causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa. 12 Sincronizzazione degli ingressi • Finora si è dato implicitamente per scontato che gli ingressi di una rete sincrona commutino in modo sincrono con il clock • Ciò è verificato se gli ingressi provengono da una rete sincrona di tipo Moore nella quale le uscite sono funzione solo dello stato che commuta solo al fronte positivo del clock X0..n Rete combinatoria y0..k Y0..k FFD0..k Q0..k D0..k CK CK Clock Rete combinatoria Z0..m • Nella realtà le cose stanno diversamente. Si pensi al caso di pulsanti esterni che costituiscano l’ ingresso della rete. Il cambiamento può avvenire in un istante qualsiasi. • Nella rete di figura (Moore) le uscite sono comunque certamente sincronizzate con il clock e se gli ingressi X0..n cambiano in un momento qualsiasi non sincronizzato il cambiamento viene percepito dai FF di retroazione solo al fronte positivo del clock e quindi il comportamento delle uscite della rete è il medesimo che si avrebbe se gli ingressi fossero sincronizzati 13 Sincronizzazione degli ingressi • La cosa cambia però se la rete è di tipo Mealy Z0..m X0..n Y0..k Rete combinatoria Q0..k y0..k D0..k CK CK FFD0..k Clock • In questo caso un cambiamento asincrono degli ingressi provoca, in generale, un cambiamento asincrono delle uscite 14 … Cassaforte … sincrona …. Esempio: la cassaforte (dotata di una doppia tastiera - due ingressi) si apre solo se gli ingressi hanno assunto NEL TEMPO le configurazioni 00-01-01-10. Ogni violazione della sequenza riporta il sistema nello stato iniziale. NB Essendo gli ingressi campionati la sequenza di ingresso 01-01 è possibile e significativa 11 11 Per ogni stato tutte le combinazioni di ingresso !!!!!! A,0 00 00 00 11 00 B,0 01 11 D,0 00 11 01 10 E,1 10 10 10 Gli stati NON sono stabili per gli ingressi che li hanno provocati 01 C,0 10 01 01 00 11 00 G,0 11 10 01 F,0 10 01 01 NB: si può supporre che gli ingressi cambino allo stesso istante delle variabili di stato ma la cosa non è necessaria . Se la rete è di tipo Moore anche se gli ingressi cambiano a metà di un periodo di clock il comportamento dal punto di vista degli stati e quindi delle uscite è assolutamente lo stesso (ogni variazione è rilevata solo alla fine del 15 periodo) Cassaforte sincrona 11 X1 X2 00 11 A,0 00 11 00 01 B,0 11 01 C,0 D,0 00 11 01 10 E,1 10 10 10 00 01 11 10 A B F A G 0 B B C A G 0 C B D A G 0 D B F A E 0 E B F A G 1 F B F AA- G 0 G B F A 0 00 10 01 00 11 01 00 G,0 11 10 01 F,0 10 01 G 01 NB: in questo esempio non vi sono condizioni di indifferenza. Anziché di stati compatibili si parla qui di stati equivalenti. Ove poi due stati per gli stessi ingressi abbiano uscite identiche e portino agli stessi stati si parla di stati indistinguibili. Naturalmente la descrizione a parole può evidenziare che alcune combinazioni di ingresso per alcuni stati non si presentano. In questo caso si ritorna al concetto di compatibilità 16 Cassaforte sincrona X1 X2 00 01 11 10 A B F A G 0 B CF B B C A G 0 C FD CD C B D A G 0 D CF GE CF GE DF GE D B F A E 0 E B F A F F B F AA- G 0 --- CF DF GE G B F A G 0 G --- CF DF GE 00 01 11 10 A B C D a b a a a 0 b b g a a 0 g b d a a 0 d b a a e e b a a a X1 X2 G E 1 0 1 -- E F Classi di equivalenza [AFG] => a [B] => b [C] => g [D] => d [E] => e Ovviamente 5 stati: 4 facenti parte della sequenza e uno esterno NB: nel caso di tabelle completamente specificate le classi (massime) di equivalenza non hanno mai stati in comune. 17 Vanno usate tutte quindi. Non esiste problema di chiusura. Cassaforte sincrona X1 X2 Nessun problema di corse: codifica libera (possibilmente ottima) 00 01 11 10 a b a a a 0 b b g a a 0 g b d a a 0 d b a a e e b a a a 0 a b g d e => => => => => 000 001 011 010 100 1 Sintetizzando con FFD la sintesi degli ingressi Di si ottiene sintetizzando le funzioni Yi (Yn+1=Dn) Y1 Y2 X1 X2 00 01 11 10 Y3 000 001 000 000 000 0 001 001 011 000 000 0 011 001 010 000 000 0 010 001 000 000 100 100 001 000 000 000 1 101 -- -- -- -- -- 111 -- -- -- -- -- 110 -- -- -- -- -- D1= X1!X2Y2!Y3 D2=!X1X2Y3 D3=!X1!X2+!X1!Y2Y3 Z =Y1 18 0 Sintesi Direttorio cassaforte sincrona 19 Sintesi – simulazione funzionale 00 01 01 10 N.B. Gli ingressi cambiano in modo NON sincrono con il clock ma l’ uscita è sincrona essendo la rete di tipo Moore 20 Sintesi – simulazione timing d Si notino i ritardi delle uscite dei FF e dei gates da esse dipendenti rispetto al fronte positivo del clock (ad esempio d): se la frequenza del clock fosse eccessiva il sistema NON funzionerebbe più correttamente 21 E con Mealy ? X1 X2 X1 X2 00 01 11 10 A B F A G 0 B B C A G 0 C B D A G 0 D B F A E 0 E B F A G 1 F B F AA- G 0 G B F A 0 G 00 01 11 10 A B,0 F,0 A,0 G,0 B B,0 C,0 A,0 G,0 C B,0 D,0 A,0 G,0 D B,0 F,0 A,0 E,1 E B,1 F,1 A,1 G,1 Potrei mettere una indifferenza F B,0 F,0 G B,0 F,0 sull’uscita ?? Si: si possono mettere indifferenze sulle A,0A-G,0 uscite che cambiano. Anticipazione o ritardo del A,0 G,0 cambiamento Sintetizzare e simulare con Altera 22 • • • • All’esame orale è necessario portare un esercizio di reti sincrone e uno di reti asincrone NON “mutuato” da altri … I due esercizi debbono essere portati su una chiavetta (o dispositivo equivalente) debbono contenere una spiegazione e anche la progettazione/simulazione con Altera Il candidato deve dimostrare di sapere usare il sistema Altera e spiegare i progetti portati Gli esercizi di reti sincrone hanno spesso il diagramma degli stati ma solo per verifica… 23 Monoimpulsore A Generare un impulso di uscita di un periodo di clock per ingresso 1. Un ulteriore impulso viene generato solo se l’ingresso torna a 1 dopo essere stato a 0. L’uscita deve essere sincronizzata con il clock D D1 Q1 FFD Clock CK !Q1 D2 Q2 FFD CK !Q2 Z1 Z !Q2 Q1 D Clock Qui l’ingresso asincrono D è sincronizzato dai FF. Uscita Z sincrona 24 Monoimpulsore A 0 1 A,0 B,1 0 Moore necessariamente ! 1 0 C,0 Q1 Q1 D Q1 0 1 Z A A B 0 A B A C 1 C A C - 0 1 D 1 Z 00 00 00 10 0 B 10 01 -- - 0 C 11 11 00 11 0 - - - 01 10 00 11 1 1 Z 00 00 10 0 Q2 D Q2 01 00 10 0 11 01 11 0 10 01 11 1 Q2 0 -- Q1=D Q2= DQ1 Z=Q1!Q2 MA… D Q1=D Q2= Q1 Z=Q1!Q2 Clock D1 Q1 FFD CK !Q1 D2 Q2 FFD CK !Q2 Z 25 Monoimpulsore B D D1 Q1 FFD Clock CK !Q1 D2 Q2 FFD CK !Q2 Z2 Qui la rete è di tipo Mealy e quindi con ingresso asincrono è possibile che vi sia uscita asincrona Z2 !Q2 Q1 D Clock L’ingresso asincrono D agisce direttamente sull’uscita Z che quindi risulta asincrona 26 Monoimpulsore C D D !Q FFD Clock CK Q Z Qui la rete è di tipo Mealy e quindi con ingresso asincrono è possibile che vi sia uscita asincrona Z Q D Clock Anche qui l’ingresso asincrono D agisce direttamente sull’uscita Z che quindi risulta asincrona Si noti che se l’ingresso oscilla, una volta che il FF ha campionato un 1 e fino a quando non campiona uno 0 , l’uscita oscilla 27 Considerazioni sui monoimpulsori A, B e C Il diagramma degli stati corrispondente al funzionamento reale dei due monoimpulsori B e C NON può essere tracciato perché di fatto le due reti (di tipo Mealy) NON sono sincrone. Infatti il diagramma di circuiti sincroni prevede implicitamente un comportamento sincrono anche degli ingressi, fatto non verificato nei casi B e C La cosa non vale per il monoimpulsore A in quanto pur essendo l’ingresso asincrono l’uscita (rete di tipo Moore) dipende solo dagli stati. In altre parole il comportamento della rete rende intrinsecamente sincroni ingressi fisicamente asincroni Il diagramma degli stati che riflette il comportamento delle due reti B e C può essere tracciato solo partendo da una analisi asincrona, “aprendo” quindi i FF D inseriti. Ovviamente è possibile progettare le due reti senza l’uso dei FF D partendo da un diagramma degli stati asincrono “tradizionale” A scopo di esercizio si suggerisce la sintesi e la simulazione con Altera dei tre monoimpulsori come reti asincrone. Si tratta di circuiti on due ingressi: Ck e D. 28 Monoimpulsori A-B-C 29 30 Contatori Circuiti senza ingresso (a parte il clock) nella versione più semplice A B C D Z Esempio: contatore binario x 4 con decodifica del 3 00,0 !Q0 D0 FFD CK U0 Q0 01,0 1 M U 0 X 10,0 !Q1 D1 FFD CK 11,1 Q1 OUT U1 Q1 cambia stato quando Q0 è a 1 e passa a 0 (Il clock è spesso sottinteso nei circuiti sincroni) 31 Contatore x 4 con decodifica del 3 CK u1 u0 OUT (0) (1) (2) (3) (0) (1) (2) (3) Contatori binari in base non potenza di 2 !Q0 D0 FFD CK Q0 A B C D E 000 001 010 011 100 1 M U 0 X !Q1 D1 CK FFD 1 Q1 1 M U 0 X Contatore binario per 5 !Q2 D FFD CK Q2 Questo conta x8: ma per contare x5, arrivati a 4 bisogna ritornare a 0 !!! 33 Contatore x 5 !Q0 D0 FFD CK Q0 1 M U 0 X D1 !Q1 FFD CK “4” A B C Q1 1 M U 0 X D2 !Q2 FFD CK Q2 “3” Decoder La decodifica del 4 porta a zero l’uscita del decodificatore e quindi a 0 tutte le uscite degli AND rosa e al successivo fronte positivo del clock i tre FF campionano uno “0”. Per esercizio sintetizzare un contatore x 100 partendo dalla sintesi di un contatore decimale ovvero di un contatore x10 (da sintetizzare). Quanti FF per un contatore decimale ? I contatori decimali si trovano integrati in Altera 34 Contatori con ingressi di controllo EN CK D0 D1 D2 D3 LD Q0 Q1 Q2 Ex. Contatore integrato x 16 con Load e Enable Q3 • Il contatore conta per 16 (0-15) se il segnale EN è a 1. Allorchè il segnale LD va a 1 il dato presente sugli ingressi D è inserito nei 4 FF (l’ingresso può essere sincrono o asincrono). Nel caso precedente il decodificatore del “3” (uscita vera va portato) all’ingresso LD con tutti i Di a zero. • In generale il contatore fornisce anche un’uscita “carry” che va a 1 quando il contatore raggiunge il valore FF. Questa uscita può essere connessa all’enable di un contatore a valle per ottenere un contatore per 256 così via. (Progettarlo come esercizio) EN CK D0 D1 D2 D3 Q0 Q1 Q2 Q3 CY LD • Esistono contatori UP/DOWN nei quali un ingresso (U/!D) seleziona se il conteggio deve avvenire avanti o indietro. Nel caso sia selezionata la modalità “indietro” il carry si attiva quando si raggiunge il valore “tutti zeri”. • Esiste una molteplicità di contatori ciascuno con le proprie specifiche peculiarità; con o senza RESET (che normalmente agisce in modo asincrono) , U/!D, con o senza LD etc. etc. NB: qualunque circuito sincrono (con sequenza non binaria) riconducibile al diagramma degli stati di un contatore è sempre un contatore 101 010 000 111 110 Contatore x 5 non binario 35 Contatore binario x 8 e glitches 74163: contatore reale x 16 con Load, Reset e Enable (T e P) I segnali di controllo sono sincroni ovvero agiscono sul fronte positivo del clock (rising edge) 74138: decoder 3:8 con uscite negate se G2A e G2B entrambi a zero e G1 a 1. Altrimenti tutte uscite alte Direttorio Counter Glitch 36 Glitch !!! Simulazione timing NB: la presenza e la durata del glitch dipende dalle caratteristiche elettriche dei dispositivi, dalla loro tecnologia etc. Nel caso dei dispositivi Altera dipende dal tipo di dispositivo sul quale è realizzato il circuito. Analogamente la sensibilità di eventuali ingressi di clock collegati all’uscita con il glitch dipende dalle caratteristiche del dispositivo. Se ad esempio nel dispositivo Altera utilizzato si collega all’uscita Y6 il clock di un FFD non si ha commutazione del FF ma questo non è vero in assoluto !!!! 37 Cosa succede al contatore X5 progettato precedentemente se all’accensione, non disponendo di un segnale di RESET i FF si portano in uno stato non facente parte del ciclo. NB La condizione all’accensione è del tutto casuale e dipende unicamente dalle condizioni elettriche di realizzazione. E’ impredicibile Supponiamo che i FF si portino al valore 110 (il numero 6, fuori dal ciclo). Analizziamo il comportamento 000 !Q0 D0 FFD CK 001 Q0 010 1 M U 0 X 011 D1 !Q1 FFD CK “4” Q1 100 110 1 M U 0 X 111 D2 !Q2 FFD CK Q2 A B C In questo caso ci si riporta nella situazione di conteggio regolare (verificare con la tabella degli stati !) ma il comportamento in generale dipende dalla realizzazione e in altre realizzazione i due stati potrebbero essere separati dal ciclo principale che quindi non verrebbe mai raggiunto. Ecco la 38 funzione del RESET Solo come esempio (da non utilizzare !!!!!!) a scopo didattico vediamo la tabella delle transizioni di un contatore per 6 Up/!Down con comando di Reset. I segnali di ingresso cambiano in modo asincrono ma hanno effetto in modo sincrono Up/!Down Res Up/!Down Res 00 01 00 01 000 101 000 000 001 000 101 000 000 001 001 000 000 000 010 001 000 000 000 010 010 001 000 000 011 010 001 000 000 011 011 010 000 000 100 011 010 000 000 100 100 011 000 000 101 100 011 000 000 101 101 100 000 000 000 101 100 000 000 000 110 ? ? ? ? 110 000 000 000 000 111 ? ? ? ? 111 000 000 000 000 y3 y2 y1 11 10 y3 y2 y1 Per compensare all’accensione 11 10 Sintetizzare e simulare. Come dovrebbe essere modificato lo schema in Altera per permettere di “presettare” in modo asincrono il contatore a un particolare valore di ingresso ? 39 Sintesi di y2 in modo “diretto” Up/!Down Res y3 y2 y1 000 00 01 11 10 101 000 000 001 UP/!Down 001 000 000 000 010 010 001 000 000 011 011 010 000 000 100 100 011 000 000 101 101 100 000 000 000 110 000 000 000 000 111 000 000 000 000 “1” y3 y2 y1 D E C “2” 11 D0 “3” “4” y2 FFD Q0 00 Clock CK 40 Cassaforte … Disponendo di un contatore per 8 (ma anche per 16 etc.) con reset sincrono e sempre abilitato al conteggio come potrei realizzare il circuito di apertura della cassaforte (sequenza X1X2 00-01-01-10) con modello Moore ? RES CK Cx8 Q0 Q1 Q2 RES= !(“0”!X1!X2 + “1” !X1X2 + “2” !X1X2 + “3” X1 X2) Z = “4” (“0”,”1”,”2”,”3”,”4” sono le decodifiche binarie delle tre uscite del contatore) Il contatore si resetta ogni volta che non si presenta l’ingresso giusto relativo al particolare stato Ilcontatore quindi si resetta e rimane resettato se non nelle condizioni espresse dalla funzione RES Il contatore arrivato a 4 (Z=1) si resetta comunque al successivo fronte del clock Le reti sincrone si progettano sempre come combinazione di blocchi disponibili e logica “random” RES CK Cx8 X2 X1 Q0 Q1 Q2 A “0” B “1” C “2” “3” “4” RL AND-OR RES Z 41 Contatori • Attenzione !!! Consideriamo il contatore di figura (questa volta con RESET asincrono) e supponiamo di utilizzarlo per contare per 5. (N.B. per il Reset si usa il “5” in questo caso…. glitch..) “1” RESET EN CY CK “5” Perché questo schema è sbagliato ? Q0 Q1 Q2 Q3 A B C D • Perché presenta una corsa critica !! Nel momento in cui anche uno solo dei FF si resetta (e non tutti nello stesso istante) viene a mancare la configurazione “4” sul decoder e quindi alcuni FF potrebbero non fare in tempo a resettarsi. E allora ? “1” EN CY CK Y S “5” R “0” RESET Q0 Q1 Q2 Q3 A B C D • Così facendo il “4” attiva il SET e il FF NON si resetta fino a quando non è stato raggiunto la “0”. NB lo schema “sbagliato” si può usare solo se si è certi della rapidità di reset dei FF del contatore • Verificare con Altera 42 Sintesi cassaforte con moduli Altera Cassaforte sincrona con moduli Rete di controllo Contatore con Reset asincrono e Load sincrono NB In questo progetto la sintesi è stata condotta in modo “diretto” ovvero senza passare per la sintesi formale e utilizzando componenti disponibili e ……. materia grigia. La sintesi dei circuiti sincroni si fa sempre e unicamente così 43 Simulazione funzionale (no timing) 00 01 01 10 N.B. I segnali di ingresso sono campionati SOLO sul fronte positivo del clock anche se si presentano asincroni !! Il segnale di uscita si attiva al clock successivo al riconoscimento della sequenza. La posizione di “riposo” del contatore è il valore 4. I segnali Yi sono le decodifiche dei segnali di di ingresso X1 e X2 44 Simulazione timing 45 N.B. Si è scelto di utilizzare SOLO gli ingressi SINCRONI del contatore per semplicità. Il contatore rimane al valore 100 fino a quando non si presenta all’ingresso il valore 00. Se la sequenza è esatta il contatore continua a contare in avanti fino alla generazione dell’uscita (valore 11 del contatore) altrimenti si riporta al valore 100 ovvero Qc=1). Il segnale GN (Gate Not) è quello che abilita il conteggio. Il sistema riamane stabile a 000 per una sequenza lunga a piacere di X1=0 e X2=0 e si sposta quando dopo 00 si ha 01. Come si evince dalla simulazione se la sequenza non è corretta o è interrotta il contatore si riporta sempre a 100 X2 X1 00 01 11 10 000 000 001 000 000 0 001 000 010 100 100 0 010 000 100 100 011 0 011 100 100 100 100 1 100 000 100 100 100 0 101 000 100 100 100 0 110 000 100 100 100 0 111 000 100 100 100 0 NB: la tabella delle transizioni derivata della rete realizzata NON ha ovviamente condizioni di indifferenza 46 Progettare un contatore packed BCD up/down a 8 bit (due digit) 47 Generazione di forme d’onda • E’ possibile generare forme d’onda periodiche mediante circuiti sincroni di periodo sottomultiplo intero del clock Esempio 1:Divisore di frequenza per 2 Q D0..k Q0..k !Q D CK Clock CK Esempio 2: generare una forma d’onda periodica con periodo 5T (ove T sia il periodo del clock) in cui in un semiperiodo 3T l’uscita sia alta e nell’altro semiperiodo 2T l’uscita sia bassa Cx5 CK Q0 Q1 Q2 3T 3T 2T C B A 0 1 2 3 4 Z Z T Clock Decoder/Demux NB: una rete logica è in grado di effettuare delle divisioni di frequenza e mai delle moltiplicazioni di frequenza (che si possono ottenere solo con circuiti analogici non lineari) 48 Di che circuito si tratta ? D0..k D0 CK CK Q0..k !Q0 D0..k D1 CK CK Q0..k !Q1 D0..k D2 CK CK Q0..k !Q2 NB: il segnale di clock non è in comune Clock !Q2 !Q1 !Q0 Clock E’ un contatore binario ma non sincrono. Infatti i vari FF NON utilizzano lo stesso clock e questo porta a un piccolo disallineamento sulle uscite. Non è sintetizzabile come una rete sincrona e una sintesi formale sarebbe possibile solo trattando il circuito come asincrono ovvero “aprendo” i FF. Sarebbe possibile trasformarlo in un contatore x6 mantenendo la stessa impostazione ? Sintetizzare e simulare con Altera 49 7493 50 Contatore asincrono Altera Contatore asincrono 51 Simulazione timing 52 Come può essere utilizzato un FFD per catturare un impulso più breve di un periodo ? Monoimpulsore di tipo A “rivisto” “1” D0 CK CL FFD Q00 !Q0 D1 Q1 FFD CK !Q1 D2 Q2 FFD CK !Q2 Z Clock L’impulso breve viene catturato dal FF 0 (purché di larghezza sufficiente per la tecnologia del FF) - che quindi agisce come integratore – la cui uscita alimenta il monoimpulsore di tipo A. L’attivazione del FF 1 resetta il FF 0 (supponendo che il segnale di CL sia “positive”true”) Ci può essere un problema se il CL agisce in modo asincrono ? NB: questo circuito e quello del lucido precedente evidenziano il fatto che nella realtà nessuna rete è solo sincrona ma bensì è pressoché sempre necessario utilizzare reti di natura diversa anche perché vi è sempre una interazione fra reti con clock diversi e/o con segnali provenienti dal mondo esterno NON sincronizzati con il clock 53 Shift register (registri a traslazione o scorrimento) • Uno shift register a sinistra (a destra) è un registro composto da FFD che ad ogni clock trasferisce il valore del FF a destra (a sinistra) di ciascun FF nel FF stesso. Nel FF più a destra (sinistra) viene immesso uno “0”. Questi tipi di registri shift si chiamano “logici” Q0..kQ n D0..k CK Dn CK Q0..kQ D0..k n-1 CK Dn-1 CK Q0..kQ D0..k n-2 CK Dn-2 CK Q0..kQ 0 D0..k CK “0” D0 CK Shift register a sinistra • Anche per i registri a traslazione esistono diverse versioni: con ingresso parallelo e uscita seriale, con ingresso seriale e uscita parallela, con reset, con load etc. etc. • Si noti che uno shift register è anche un contatore. Si immagini per esempio che dopo un reset siano inseriti degli uni a partire da destra. Lo shift register si riempie progressivamente di uni e quindi la posizione in cui è arrivato l’uno indica il valore del conteggio in base a un codice “uno su n” (un codice decodificato) • Spesso uno stesso registro può traslare a destra o a sinistra in funzione di una segnale di controllo. Ovviamente questo si ottiene premettendo a ogni ingresso Di un MUX a due vie che preleva in funzione del segnale di controllo Qì+1 o Qì-1. Con questa configurazione lo shift register diventa anche un contatore avanti/indietro 54 Registro a scorrimento (shift-register) a 3 bit. OUT0 IN D Q FFD R* A_RESET* CK D Q FFD Q* OUT2 OUT1 R* D Q FFD Q* A_RESET* R* Q* A_RESET* Registro a scorrimento (shift-register) a 3 bit. CK IN A_RESET OUT2 OUT1 OUT0 Esempio: 74164 (serial In parallel OUT) • In questo registro a traslazione, ad ogni fronte positivo del clock i dati sono traslati a destra (Q0 -> Q1, Q1->Q2 etc). Il registro è dotato in un Master Reset (vero negato) e il dato inserito nel FF Q0 è dato dall’AND dei due ingressi Dsa e Dsb • Si noti che l’operazione di shift corrisponde aritmeticamente alle operazioni di divisione e moltiplicazione per 2. Si supponga che in Q0 vi sia il bit meno significativo e in Q7 il meno significativo 101011002 = 21610 010101102 = 10810 NB: nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo 001010112 = 5910 0 1 1 0 1 0 1 0 57 Shift aritmetico • Esistono anche i registri a traslazione “aritmetici”. In questi shift register a destra anziché fare entrare nel FF più a sinistra lo “0” viene immesso sempre ripetutamente il suo valore logico. D7 D6 D5 D4 D3 D2 D1 D0 LD CK I Esempio Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0 SRA 11001010 C2 001101102=5410 11100101 interpretato in complemento a 2 C2 000110112=2710 • Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno !! 58 Rotazione Nei computer è sovente necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF. La cosa si ottiene retroazionando uno shift register Q0..kQ n D0..k CK Dn CK Q0..kQ D0..k n-1 CK Dn-1 CK Q0..kQ D0..k n-2 CK Dn-2 CK Q0..kQ 0 D0..k CK D0 CK Molto spesso nei computer è necessario utilizzare una rotazione a destra o a sinistra del contenuto dei FF. La cosa si ottiene retroazionando uno shift register con direzione programmabile. In questo caso su D0, ad esempio, può essere avviato o Q1 o Qn 59 Contatori con shift register – Contatore retroazionato EX-OR D Shift right 3 bit Q0 100 110 111 011 Q1 Q2 101 010 001 000 Diagramma degli stati disgiunto !! Uno shift register con n FF retroazionato con un EX-OR (scelta degli ingressi variabile) è un contatore NON binario che conta per 2n-1 (purché presettato a un valore diverso da tutti zeri) 60 Contatore di Johnson (riempimento e svuotamento) OUT0 D Q FFD R* D Q FFD Q* A_RESET* OUT2 OUT1 R* D Q FFD Q* A_RESET* R* Q* A_RESET* CK 000->100->110->111->011->001->000->... Stati isolati: 101->010->101..>1 Poiché configurazioni adiacenti del codice Johnson differiscono di un solo bit, il contatore può essere utilizzato per generare forme d’onda prive di alee. 61 Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n) OUT0 D Q FFD R* D Q FFD Q* RESET* OUT2 OUT1 R* D Q FFD Q* RESET* R* Q* RESET* OUT3 D Q FFD PR* Q* RESET* CK 0001->1000->0100->0010->0010 n FF per contare per n (mentre con i contatori binari il numero dei FF è il log2m ove m è il primo intero maggiore o uguale a n) 62 Barrel shifter (rotore) Un barrel shifter è uno shift register in grado di traslare di “n” posizioni in un solo clock il contenuto dei suoi FF. In figura è riportato il barrel shifter della Altera. Gli ingressi A-H in presenza dell’attivazione del segnale LDST, al primo fronte positivo del clock sono depositati nei FF. Quando LDST è 0 ad ogni fronte positivo del clock i bit di uscita sono ruotati di n posizioni in senso antiorario (ovvero l’uscita H diventa la G, la G diventa la F…e l’uscita A diventa la H) ove n è il valore binario indicato dai segnali S0, S1 e S2. Si noti che il circuito in questione è di fatto un registro con 8 FF all’ingresso di ciascuno dei quali è previsto un MUX a 8 vie che pilotato dai segnali S0, S1 e S2 che seleziona uno degli 8 uscite del dispositivo. La struttura interna può essere osservata “clikkando” due volte sul dispositivo nello schema di Altera. 63 Barrel shifter 64 65 65 Simulazione timing 66 • Utilizzando il sistema Altera progettare un orologio con secondi, minuti, ora, partendo da un oscillatore a quarzo con frequenza 500 KHz. • E se si volesse proseguire e realizzare anche un datario (giorno, mese e anno ) ? • Come potrebbe essere integrato con una sveglia. Si ricordi che l’orologio deve essere anche essere “presettato”. • Quali circuiti utilizzare per la visualizzazione ? 67 Reti sincrone con EPROM Z0..m X0..n Y0..k EPROM Q0..k y0..k D0..k CK CK FFD0..k Clock Al posto delle EPROM si utilizzano ora dei PLA ovvero dispositivi nei quali si nei quali le funzioni combinatorie sono ottimizzate ma il principio è assolutamente il medesimo 68 Progettare con Altera una rete logica sincrona che utilizzando registri 374, ALU 74181, un contatore e altri dispositivi ritenuti necessari, permetta di eseguire in sequenza la somma di due dati di 4 bit senza segno ingresso, esegua il complemento a 2, inverta la parte bassa con la parte alta del risultato e infine moltiplichi il tutto logicamente per 2. La soluzione è sempre decomponibile in tre sottosistemi: il controllo con la sua decodifica (unità di controllo), il percorso dei dati con le unità che li trasformano (datapath) e i registri di deposito e di ingresso dei dati. Questa è la struttura base di qualunque unità centrale di qualunque computer. La differenza consiste solo nel fatto che anziché avere una sequenza fissa di operazioni ne viene generata una volta a volta che dipende appunto dalla istruzione che deve essere eseguita. Come si vedrà approfonditamente nel corso di Calcolatori T del II anno (prof. Neri e Mattoccia). Arrivederci al corso di Calcolatori T del II anno (sapendo perfettamente le reti logiche ……) !!! 69