Reti Sincrone.

Slides:



Advertisements
Presentazioni simili
Training On Line - CONP. 2 Richiesta Da Menu: Conferimenti ad inizio anno termico > Agosto > Pluriennali > Nuova Richiesta Si accede alla pagina di Richiesta.
Advertisements

Aritmetica Binaria
MULTIVIBRATORI BISTABILI
Dipartimento di Ingegneria Idraulica e Ambientale - Universita di Pavia 1 Caduta non guidata di un corpo rettangolare in un serbatoio Velocità e rotazione.
Dalla macchina alla rete
Capitolo 4 Logica sequenziale
I numeri naturali ….. Definizione e caratteristiche
Espressioni generali e MULTIPLEXER.
Cassaforte asincrona SR
Cassaforte asincrona con retroazioni dei FF SR La Cassaforte asincrona è una rete che una volta ricevuti in ingresso le combinazioni , invia un.
____________________
CONTATORI CONTATORE = circuito sequenziale che conta il numero di impulsi di CK applicati al suo ingresso e fornisce un’ indicazione numerica binaria MODULO.
Circuiti Aritmetico-Logici
Circuiti Sequenziali Asincroni
Circuiti sequenziali Capitolo 5.
I sistemi di riferimento
Lez. 3 - Gli Indici di VARIABILITA’
Esercitazioni su circuiti combinatori
Introduzione ai circuiti sequenziali
Circuiti di memorizzazione elementari: i Flip Flop
Analisi e Sintesi di circuiti sequenziali
CONVERSIONE ANALOGICO-DIGITALE, A/D
INTRODUZIONE AI CONVERTITORI ANALOGICO-DIGITALI (ADC)
27+ 12= Risultato troppo grande = = 39 = -25 errore di overflow in binario =
Informatica 3 Codifica binaria.
A.S.E.6.1 ARCHITETTURA DEI SISTEMI ELETTRONICI LEZIONE N° 6 Complemento a MComplemento a M Rappresentazione di numeri con segnoRappresentazione di numeri.
A.S.E.5.1 ARCHITETTURA DEI SISTEMI ELETTRONICI LEZIONE N° 5 Rappresentazione di numeri con segnoRappresentazione di numeri con segno –Modulo e segno (MS)
Argomenti complementari Capitolo 9. Clock Skew Se vi sono dei ritardi sulla linea del clock il funzionamento del circuito potrebbe risentirne pesantemente.
Canale A. Prof.Ciapetti AA2003/04
PSPICE – Circuiti sequenziali principali
Test di ipotesi X variabile casuale con funzione di densità (probabilità) f(x; q) q Q parametro incognito. Test Statistico: regola che sulla base di un.
Flip-flop e Registri.
Dalla macchina alla rete: reti LLC
Criticità sui dati (1° esempio)
Conversione Analogico/Digitale
Convertitore A/D e circuito S/H
Analisi e Sintesi di circuiti sequenziali. Definizione Una macchina sequenziale é un sistema nel quale, detto I(t) l'insieme degli ingressi in t, O(t)
1 Sistemi Digitali. 2 Definizione Analog Waveform Time Voltage (V) 0 5 Digital Waveform Time Voltage (V)
Cos’è un problema?.
Cos’è una sequenza? Una sequenza è una successione finita di valori, dove ogni valore ha una durata prefissata e costante (T). I valori della sequenza.
Di Ilaria Bertoletti Progetto Asincrono Esame Reti Logiche 30/01/13.
Rete Sincrona Una rete sequenziale sincrona, è dotata di un ingresso E, di un segnale di Clock e uno di reset. Ad ogni fronte del Clock, deve essere campionato.
Esercizio 2 Progettare un registro a 8 bit con uscita tri-state utilizzando FFD positive edge triggered. La rete, ad ogni fronte di salita del clock,
PROGETTO 1 Un lettore di musica digitale è dotato di un sistema per la regolazione del volume composto da tre pulsanti + e – e [] e progettato in modo.
Cassaforte Asincrona di Mealy
Contatore: esempio di circuito sequenziale
ARITMETICA BINARIA.
1 Negozi Nuove idee realizzate per. 2 Negozi 3 4.
TC 8253 TIMER COUNTER Prof. Marco Solarino.
Progetto Asincrono Schematico.
Un trucchetto di Moltiplicazione per il calcolo mentale
Sistema di regolazione del volume Il progetto consiste nella sintesi e nella realizzazione attraverso Xilinx di un sistema per la regolazione del volume,
RETE ASINCRONA Una rete sequenziale asincrona prende in ingresso due segnali X2 e X1 emessi da un telecomando e, in base alle combinazioni successive di.
Esame Orale Di Reti Logiche
Unità centrale di processo
Una rete sequenziale asincrona è dotata di due ingressi X1, X2 e di un’uscita Z. I segnali X2 e X1 non cambiano mai di valore contemporaneamente. Il segnale.
Una rete sequenziale asincrona è dotata di due ingressi X1, X2 e di un’uscita Z. I segnali X2 e X1 non cambiano mai di valore contemporaneamente. Il segnale.
Cassaforte asincrona II assegnamento. Descrizione Il progetto Cassaforte II assegnamento consiste in una codifica diversa delle variabili di stato. Codifica.
Introduzione Il progetto Cassaforte II assegnamento consiste in una diversa codifica delle variabili di stato. Ci si chiede se questo possa influenzare.
L’azienda di packaging ‘’Choco-Pack’’ dispone di un macchinario per l'impacchettamento di cioccolatini in scatole da 8 pezzi. Per variare l'offerta sul.
TRASFORMATA DI FOURIER
Una rete sequenziale asincrona ha due ingressi C,X e un’uscita Z. I segnali C,X non cambiano mai di valore contemporaneamente. Il segnale C è periodico;
La rappresentazione delle informazioni in un computer Seconda parte.
Traformazioni fra Bistabili e Registri
Teoria dei sistemi Autore: LUCA ORRU'.
V.1. Considerazioni generali V.2. Flip-Flop V.3 Esempi applicativi
Circuiti di memorizzazione elementari: i Flip Flop
DAC A RESISTORI PESATI.
Rappresentazione dell'informazione
Calcolatori Elettronici
Transcript della presentazione:

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) 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 Clock T

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 !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 è edge triggered ovvero che scatta sul fronte positivo del clock D Q !Q CK PR CL I segnali !CL e !PR agiscono in modo asincrono ovvero immediatamente senza attendere il clock

Reti sequenziali sincrone Rete combinatoria X0..n Z0..m y0..k Y0..k Clock D0..k Q0..k FFD0..k CK Si veda lo schema delle reti asincrone con la retroazione tramite FF RS in cui S=!R 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

Reti Sequenziali Sincrone (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 CK Q Q* D CK Q 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

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 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 CK Q Q* FFD D CK_G Rete di Decodifica I[n-1..0] P t NO !! CK P 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.

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 1 SEL FFD D CK Q Q* Q X 1 SEL t Rete di Decodifica Q* CK I[n-1..0] P

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 I1 CK B B* CK_G P I2 A A* tAND FFD-1 D Q Q* FFD-2 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 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 Rete combinatoria X0..n Z0..m y0..k Y0..k Clock D0..k Q0..k FFD0..k CK 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 11 00 00 01 A,0 00 B,0 C,0 D,0 10 E,1 Per ogni stato tutte le combinazioni di ingresso !!!!!! 01 11 11 00 11 01 10 00 11 10 00 10 01 10 01 01 11 Gli stati NON sono stabili per gli ingressi che li hanno provocati G,0 10 F,0 01 10 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 A,0 B,0 C,0 E,1 00 11 01 10 D,0 F,0 G,0 B 00 01 11 10 F A G C D E AA- 1 X1 X2 00 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à

Cassaforte sincrona 00 01 11 10 1 B C D E F G A 00 01 11 10 1 AA- 1 X1 X2 B C D E F G A CF FD CD GE DF --- C F -- b 00 01 11 10 a g d e X1 X2 1 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. Vanno usate tutte quindi. Non esiste problema di chiusura.

Cassaforte sincrona 00 01 11 10 1 a => 000 b => 001 g => 011 d e X1 X2 1 Nessun problema di corse: codifica libera (possibilmente ottima) 001 00 01 11 10 000 011 010 100 X1 X2 -- 101 111 110 1 Y1 Y2 Y3 a => 000 b => 001 g => 011 d => 010 e => 100 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

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 ? B 00 01 11 10 F A G C D E AA- 1 X1 X2 B,0 00 01 11 10 F,0 A,0 G,0 A C,0 B D,0 C E,1 D B,1 F,1 A,1 G,1 E A,0A- F G X1 X2 Potrei mettere una indifferenza sull’uscita ?? Si: si possono mettere indifferenze sulle uscite che cambiano. Anticipazione o ritardo del cambiamento Sintetizzare e simulare con Altera

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 D Z1 Clock Z !Q2 Q1 D Clock 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 !Q1 CK FFD D2 Q2 !Q2 CK FFD Z1 Clock Z !Q2 Q1 D Clock Qui l’ingresso asincrono D è sincronizzato dai FF. Uscita Z sincrona

Monoimpulsore A A - B C 1 Z 00 -- 10 11 01 1 Z - 00 10 11 01 B C - A A,0 B,1 C,0 Moore necessariamente ! A - B C D Q2 Q1 1 Z 00 -- 10 11 D Q2 Q1 01 1 Z - 00 10 11 01 B C - A Q1=D Q2= DQ1 Z=Q1!Q2 00 01 10 11 D Q2 Q1 1 Z MA… D1 Q1 !Q1 CK FFD D2 Q2 !Q2 Z D Clock Q1=D Q2= Q1 Z=Q1!Q2

Monoimpulsore B D Z2 Clock Z2 !Q2 Q1 D Clock D1 Q1 !Q1 CK FFD D2 Q2 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

Monoimpulsore C D Z Clock Z Q D Clock D !Q Q CK FFD 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

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.

Monoimpulsori A-B-C

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 01,0 10,0 11,1 M U X 1 D0 !Q0 Q0 CK FFD D1 !Q1 Q1 CK FFD OUT U0 U1 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) (1) (2) (3)

Contatori binari in base non potenza di 2 000 001 010 011 100 Contatore binario per 5 M U X 1 M U X 1 D0 !Q0 Q0 CK FFD 1 D1 !Q1 Q1 CK FFD D !Q2 Q2 CK FFD Questo conta x8: ma per contare x5, arrivati a 4 bisogna ritornare a 0 !!!

Contatore x 5 M U X 1 D0 !Q0 M U X 1 D1 !Q1 Q1 CK FFD FFD D2 !Q2 Q2 CK FFD Q0 CK “3” 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”. 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

Contatori con ingressi di controllo EN Q0 Q1 Q2 Q3 CK LD D0 D1 D2 D3 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) EN Q0 Q1 Q2 Q3 CK CY LD D0 D1 D2 D3 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

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

Simulazione timing Glitch !!! 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 !!!!

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 001 010 011 100 110 111 M U X 1 D0 !Q0 M U X 1 FFD D1 !Q1 Q1 CK FFD D2 !Q2 Q2 CK FFD Q0 CK 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

Sintetizzare e simulare. 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 00 01 11 10 Up/!Down Res 000 001 010 011 100 101 ? 111 110 y3 y2 y1 00 01 11 10 Up/!Down Res 000 001 010 011 100 101 111 110 y3 y2 y1 Per compensare all’accensione 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 ?

D E C Clock Sintesi di y2 in modo “diretto” 00 01 11 10 Up/!Down Res 000 001 010 011 100 101 111 110 y3 y2 y1 UP/!Down D E C “1” 1 1 y3 y2 y1 “2” D0 “3” FFD Q0 y2 CK “4” Clock

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 ? Cx8 RES Q0 Q1 Q2 CK 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” Cx8 RES Q0 Q1 Q2 CK 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..) EN Q0 Q1 Q2 Q3 CK CY RESET “1” Perché questo schema è sbagliato ? 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 Q0 Q1 Q2 Q3 CK CY RESET “1” A B C D R S Y “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

Contatore con Reset asincrono e Load sincrono 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 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

Simulazione timing

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 1 000 000 001 000 000 001 000 010 100 100 010 000 100 100 011 NB: la tabella delle transizioni derivata della rete realizzata NON ha ovviamente condizioni di indifferenza 011 100 100 100 100 100 000 100 100 100 101 000 100 100 100 110 000 100 100 100 111 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 D0..k Q0..k CK D !Q Esempio 1:Divisore di frequenza per 2 Clock 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 Z C B A 1 2 3 4 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)

Sintetizzare e simulare con Altera Di che circuito si tratta ? D0..k Q0..k CK D2 !Q2 D0..k D0..k Q0..k CK D1 !Q1 D0 !Q0 !Q0 Q0..k NB: il segnale di clock non è in comune CK CK 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

7493

Contatore asincrono Altera Contatore asincrono

Simulazione timing

Come può essere utilizzato un FFD per catturare un impulso più breve di un periodo ? Monoimpulsore di tipo A “rivisto” D1 Q1 !Q1 CK FFD “1” D2 Q2 !Q2 CK FFD D0 CL Q00 Z FFD !Q0 CK 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

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” “0” D0..k Q0..k CK Dn Qn D0..k Q0..k CK Dn-1 Qn-1 D0..k Q0..k CK Dn-2 Qn-2 D0..k Q0..k CK D0 Q0 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

Registro a scorrimento (shift-register) a 3 bit. OUT0 OUT1 OUT2 FFD FFD FFD IN D Q D Q D Q Q* Q* Q* R* R* R* A_RESET* A_RESET* A_RESET* CK

CK IN A_RESET OUT2 OUT1 OUT0 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 1 101011002 = 21610 Shift left => x2 NB: nel dispositivo i bit sono posti in ordine invertito e quindi un shift left del numero corrisponde a uno shift right sul dispositivo 010101102 = 10810 Shift right => /2 001010112 = 5910

11100101 interpretato in complemento a 2 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. Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0 D7 D6 D5 D4 D3 D2 D1 D0 I LD CK Esempio SRA 11001010 11100101 interpretato in complemento a 2 C2 C2 001101102=5410 000110112=2710 Lo shift aritmetico a destra effettua una divisione per 2 mantenendo il segno !!

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 D0..k Q0..k CK Dn Qn D0..k Q0..k CK Dn-1 Qn-1 D0..k Q0..k CK Dn-2 Qn-2 D0..k Q0..k CK D0 Q0 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

Contatori con shift register – Contatore retroazionato EX-OR Shift right 3 bit D Q0 Q1 Q2 100 110 111 011 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)

Stati isolati: 101->010->101..>1 Contatore di Johnson (riempimento e svuotamento) OUT0 OUT1 OUT2 FFD FFD FFD D Q D Q D Q Q* Q* Q* R* R* R* A_RESET* A_RESET* 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.

0001->1000->0100->0010->0010 Contatore ad anello con un solo 1 (ovvero che genera direttamente il codice 1su n) OUT0 OUT1 OUT2 OUT3 FFD FFD FFD FFD D Q D Q D Q D Q Q* Q* Q* Q* R* R* R* PR* RESET* RESET* RESET* 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)

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.

Barrel shifter

65

Simulazione timing

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 ?

Reti sincrone con EPROM Z0..m X0..n EPROM Y0..k y0..k D0..k D0..k Q0..k Q0..k CK CK Clock FFD0..k 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

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 ……) !!!