690 likes | 987 Views
Reti Sincrone. 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)
E N D
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
Segnale di sincronismo Z0..m X0..n Rete combinatoria Y0..k 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)
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) • 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 T Clock
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) Q D D !Q CK • 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 è edgetriggeredovvero che scatta sul fronte positivo del clock D PR Q I segnali !CLe !PR agiscono in modo asincrono ovvero immediatamente senza attendere il clock D !Q CK CL
Reti sequenziali sincrone Z0..m X0..n Rete combinatoria Si veda lo schema delle reti asincrone con la retroazione tramite FF RS in cui S=!R Y0..k y0..k D0..k D0..k Q0..k Q0..k CK CK Clock FFD0..k • 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 fronti positivi 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
RetiSequenzialiSincrone (RSS) ? (k)FFD k k S S* S S* CK k FFD sull’anello di retroazione Tutti con lo stesso clock di periodo T CK I S S* U t-T t t+T t+2·T Lo stato cambia anche se non cambia l’ingresso ? Nel caso specifico: Moore o Mealy ? L’uscita cambia anche se non cambia l’ingresso ?
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 FFD D Q D Q Q* Q* CK CK CK 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 D Q T T T T
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
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 nsegnali I[n-1..0] e/o le alee introdotte dalla rete combinatoria di decodifica, a causa del “clock gating“, può verificarsi quanto segue. FFD X Q D Q CK_G CK Rete di Decodifica t Q* Q* CK I[n-1..0] P CK NO !! P Glitch sul clock → possibile commutazione spuria del FFD CK_G 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.
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 0 1 FFD SEL Q D 0 Q Q* CK X 1 SEL Rete di Decodifica t Q* CK I[n-1..0] P
Clock gating e clock-skew Il clock gating, oltre a generare potenziali glitchintroduce“clock-skew” (disallineamento). Ad esempio, consideriamo due RSS soggette al FF1 e al FF2 I2 I1 A B CK_G CK FFD-2 FFD-1 A* B* CK Q Q D D P 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 tAND Q* Q* CK CK 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.
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 y0..k Rete combinatoria Y0..k FFD0..k D0..k D0..k Q0..k Q0..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
Sincronizzazione degli ingressi • La cosa cambia però se la rete è di tipo Mealy Z0..m X0..n Rete combinatoria Y0..k y0..k D0..k D0..k Q0..k Q0..k CK CK Clock FFD0..k • In questo caso un cambiamento asincrono degli ingressi provoca, in generale, un cambiamento asincrono delle uscite
… 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 00 00 00 11 01 00 A,0 B,0 C,0 D,0 10 E,1 Per ogni stato tutte le combinazioni di ingresso !!!!!! 01 11 00 11 11 10 01 10 10 01 10 01 00 11 00 Gli stati NON sono stabili per gli ingressi che li hanno provocati G,0 10 F,0 01 11 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 periodo)
Cassaforte sincrona 11 00 00 11 01 01 00 A,0 B,0 C,0 D,0 10 E,1 11 00 11 11 01 10 10 X1 X2 10 00 01 11 10 10 01 00 00 0 01 11 00 G B F A G,0 10 F,0 0 01 B C A G 11 10 E A F G D C B 0 01 B D A G 0 B F A E 1 B F A G 0 B F AA- G 0 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à B F A G 01
Cassaforte sincrona X1 X2 00 01 11 10 CF 0 G B F A FD CD 0 B C A G 0 CF GE CF GE DF GE B D A G B F A E 0 1 B F A G --- CF DF GE B F AA- G 0 --- C F DF GE -- C G A F E D B E B G F A e D C C B E D d g b a F B F A G 0 X1 X2 00 01 11 10 a b a a Classi di equivalenza [AFG] => a [B] => b [C] => g [D] => d [E] => e 0 b g a a Ovviamente 5 stati: 4 facenti parte della sequenza e uno esterno 0 b d a a 0 b a a e 0 NB: nel caso di tabelle completamente specificate le classi (massime) di equivalenza non hanno mai stati in comune. Vanno usate tutte quindi. Non esiste problema di chiusura. b a a a 1
Cassaforte sincrona Nessun problema di corse: codifica libera (possibilmente ottima) X1 X1 X2 Y1 X2 00 01 11 10 00 01 11 10 Y2 Y3 a b a a 0 000 000 000 001 a => 000 b => 001 g => 011 d => 010 e => 100 b g a a 001 011 000 000 0 b d a a 001 010 000 000 0 b a a e 001 000 000 100 0 b a a a 011 g e 001 010 b 110 111 a d 101 000 100 001 000 000 000 1 Sintetizzando con FFD la sintesi degli ingressi Di si ottiene sintetizzando le funzioni Yi(Yn+1=Dn) -- -- -- -- -- -- -- -- -- D1= X1!X2Y2!Y3 D2=!X1X2Y3 D3=!X1!X2+!X1!Y2Y3 Z =Y1 -- 0 -- -- -- -- -- 0 0 0 1
Sintesi Direttorio cassaforte sincrona
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
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
E con Mealy ? X1 X2 00 01 11 10 G,0 B,0 F,0 A,0 B,0 C,0 A,0 G,0 B,0 D,0 A,0 G,0 X1 X2 00 01 11 10 B,0 F,0 A,0 E,1 0 G B F A Potrei mettere una indifferenza sull’uscita ?? Si: si possono mettere indifferenze sulle uscite che cambiano. Anticipazione o ritardo del cambiamento B,1 F,1 A,1 G,1 0 B C A G F D F E D G A B C E A B C G B,0 F,0 A,0A- G,0 0 B D A G B,0 F,0 A,0 G,0 0 B F A E 1 B F A G 0 Sintetizzare e simulare con Altera B F AA- G 0 B F A G
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…
Monoimpulsore A Generare un impulso di uscita di un periodo di clock per ingresso 1. Un ulteriore impulso viene generatosolo se l’ingresso torna a 1 dopo essere stato a 0. L’uscita deve essere sincronizzata con il clock D Z1 Clock Q2 Q1 D1 D2 FFD FFD !Q2 !Q1 CK CK Z !Q2 Q1 D Clock Qui l’ingresso asincrono D è sincronizzato dai FF. Uscita Z sincrona
Monoimpulsore A A,0 B,1 C,0 0 1 Moore necessariamente ! 0 1 0 D 10 11 01 00 11 11 10 00 00 C A A B 00 D D Q1 0 1 Z Q1 Q1 0 0 1 1 Z Z Q2 Q2 Q2 0 - C - A -- 00 -- 10 01 11 00 01 10 11 A 0 0 00 00 1 A 1 B Q1=D Q2= DQ1 Z=Q1!Q2 - 0 01 01 B 0 C 0 0 11 11 C - - 10 10 1 1 - MA… Q1=D Q2= Q1 Z=Q1!Q2 D D1 D2 Q1 Q2 FFD FFD Z !Q1 !Q2 CK CK Clock
Monoimpulsore B D Z2 Clock Qui la rete è di tipo Mealy e quindi con ingresso asincrono è possibile che vi sia uscita asincrona Q2 Q1 D2 D1 FFD FFD !Q2 !Q1 Z2 CK CK !Q2 Q1 D Clock L’ingresso asincrono D agisce direttamente sull’uscita Z che quindi risulta asincrona
Monoimpulsore C D Z Clock Qui la rete è di tipo Mealy e quindi con ingresso asincrono è possibile che vi sia uscita asincrona !Q D FFD Q CK 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
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 monoimpulsoricome reti asincrone. Si tratta di circuiti on due ingressi: Ck e D.
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 !Q0 !Q1 D0 D1 FFD FFD 00,0 01,0 10,0 11,1 Q1 Q0 CK CK 1 M U X OUT U0 U1 0 Q1 cambia stato quando Q0 è a 1 e passa a 0 (Il clock è spesso sottinteso nei circuiti sincroni)
Contatore x 4 con decodifica del 3 CK u1 u0 OUT (0) (1) (2) (3) (0) (3) (1) (2)
Contatori binari in base non potenza di 2 A B C D E 000 001 010 011 100 Contatore binario per 5 !Q0 !Q2 !Q1 1 D1 D0 D FFD FFD FFD Q1 Q2 Q0 CK CK CK 1 1 M U X M U X 0 0 Questo conta x8: ma per contare x5, arrivati a 4 bisogna ritornare a 0 !!!
Contatore x 5 !Q0 D0 FFD Q0 CK D2 D1 !Q2 !Q1 FFD FFD “3” Q2 Q1 CK CK A B C “4” 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”. 1 1 M U X M U X 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 0 0
Contatori con ingressi di controllo Ex. Contatore integrato x 16 con Load e Enable • 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) D0 D1 D2 D3 EN CY LD CK Q0 Q1 Q2 Q3 • 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 D0 D1 D2 D3 EN LD CK Q0 Q1 Q2 Q3 101 010 000 111 110 Contatore x 5 non binario
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 (risingedge) 74138: decoder 3:8 con uscite negate se G2A e G2B entrambi a zero e G1 a 1. Altrimenti tutte uscite alte Direttorio CounterGlitch
Glitch !!! Simulazione timing NB: la presenza e la durata del glitchdipende 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 !!!!
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. NBLa 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 001 010 011 100 110 111 D1 D2 !Q2 !Q1 FFD FFD Q2 Q1 CK CK !Q0 D0 FFD Q0 CK 1 1 M U X M U X 0 0 A B C “4” 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 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 11 10 00 01 11 10 y3 y2 y1 y3 y2 y1 000 000 000 001 000 000 000 001 101 101 001 000 000 010 001 000 000 010 000 000 010 000 000 011 010 000 000 011 001 001 011 000 000 100 011 000 000 100 010 010 Per compensare all’accensione 100 000 000 101 100 000 000 101 011 011 101 000 000 000 101 000 000 000 100 100 110 ? ? ? ? 110 000 000 000 000 111 ? ? ? ? 111 000 000 000 000 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 ?
Sintesi di y2 in modo “diretto” 1 0 Up/!Down Res 00 01 11 10 y3 y2 y1 UP/!Down 000 000 000 001 101 D E C “1” 1 y3 y2 y1 001 000 000 010 000 “2” D0 y2 FFD Q0 “3” 010 000 000 011 001 CK 0 Clock “4” 011 000 000 100 010 100 000 000 101 011 101 000 000 000 100 110 000 000 000 000 111 000 000 000 000
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 X1X200-01-01-10) con modello Moore ? RES RES Cx8 Cx8 CK CK Q0 Q1 Q2 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” X2 X1 A B C RL AND-OR “0” “1” “2” “3” “4” RES Z
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..) RESET RESET S “1” Perché questo schema è sbagliato ? Y R A B C D “5” • 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 ? EN EN CY CY CK CK Q0 Q1 Q2 Q3 Q0 Q1 Q2 Q3 “1” A B C D “5” “0” • 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
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ì
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
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 (GateNot) è 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 0 X1 00 01 11 10 0 000 001 000 000 100 101 110 011 010 001 111 000 0 000 010 100 100 NB: la tabella delle transizioni derivata della rete realizzata NON ha ovviamente condizioni di indifferenza 1 000 100 100 011 0 100 100 100 100 0 000 100 100 100 0 000 100 100 100 0 000 100 100 100 000 100 100 100
Progettare un contatore packed BCD up/down a 8 bit (due digit)
Generazione di forme d’onda • E’ possibile generare forme d’onda periodiche mediante circuiti sincroni di periodo sottomultiplo intero del clock Q Esempio 1:Divisore di frequenza per 2 Clock D0..k Q0..k !Q D 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 CK CK Cx5 CK 3T 3T Q0 Q1 Q2 2T Z C B A Z 0 1 2 3 4 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)
Di che circuito si tratta ? D0..k Q0..k D0 !Q0 !Q0 NB: il segnale di clock non è in comune CK CK Clock D0..k D0..k Q0..k Q0..k !Q1 !Q2 D1 D2 CK CK !Q2 CK CK !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