Circuiti Sincroni e Asincroni - Il Ciampini
Circuiti Sincroni e Asincroni - Il Ciampini
Circuiti Sincroni e Asincroni - Il Ciampini
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>Circuiti</strong> <strong>Sincroni</strong> e <strong>Asincroni</strong><br />
Cerchiamo di ragionare in termini più generali rispetto agli esempi di flip-flop visti<br />
fin'ora. L'idea di base per arrivare a produrre un dispositivo sequenziale é di collegare<br />
alcune uscite di un circuito combinatorio con ingressi dello stesso circuito in modo da<br />
produrre dei cicli chiusi (vedi schema generale in figura):<br />
Naturalmente, l'esistenza di cicli chiusi nella rappresentazione grafica del dispositivo<br />
in termini di funzioni elementari é una condizione necessaria ma non sufficiente per<br />
produrre dei circuiti sequenziali (tantomeno dei circuiti sequenziali "utili").<br />
A tale schema di principio può essere ricondoto qualsiasi circuito sequenziale, sia<br />
asincrono che sincrono.<br />
Ricordiamo la definizione di circuito sequenziale sincrono: un circuito sequenziale tale<br />
per cui solo variazioni di una variabile di controllo (chiamata di solito clock) possono<br />
comportare variazioni dei valori di uscita; il cambiamento di valore di qualsiasi altra<br />
variabile di ingresso non determina immediatamente alcun cambiamento dei valori di<br />
uscita. Ogni circuito sequenziale che non soddisfa la definizione di circuito sincrono<br />
viene chiamato asincrono.<br />
Nel caso particolare di circuiti sincroni, possiamo individuare una struttura di base<br />
ancora più regolare, schematizzata in figura:<br />
nella quale il ciclo viene chiuso mediante dei dispositivi del tipo flip-flop Master/Slave<br />
edge-triggered. Vediamo quali vantaggi porta l'utilizzazione di circuiti sincroni<br />
rispetto a quella dei circuiti asincroni, a fronte della maggior complessità di<br />
realizzazione.
Alee e temporizzazione<br />
Consideriamo l'esempio di circuito sequenziale asincrono illustrato in figura:<br />
Supponiamo di voler determinare il valore dell'uscita u dopo aver applicato sugli<br />
ingressi la seguente sequenza di combinazioni di valori:<br />
config 1 2 3<br />
d= 1 0 0<br />
c= 1 1 0<br />
b= 1 1 1<br />
a= 1 1 1<br />
Dalla tavola di verità delle funzioni combinatorie e dalla descrizione del flip-flop<br />
Set/Reset determiniamo che la prima configurazione memorizza il valore u=1. La<br />
seconda configurazione consente al flip-flop di mantenere il valore precedentemente<br />
memorizzato, così come la terza. Quindi possiamo dedurre che il valore prodotto in<br />
uscita dall'applicazione della sequenza di ingressi considerata sia u=1.<br />
Non soddisfatti di questa risposta, proviamo ora a considerare alcuni dettagli<br />
realizzativi del dispositivo Multiplexer. Supponendo di considerare la realizzazione<br />
minimale del multiplexer vista in precedenza mediante un NOT, due AND ed un OR,<br />
possiamo ipotizzare che ciascuna funzione logica elementare sia caratterizzata da un<br />
ritardo di una unità di tempo per produrre il corretto valore di uscita a fronte di una<br />
variazione dei valori di ingresso. <strong>Il</strong> passaggio dalla seconda alla terza configurazione<br />
della sequenza può quindi essere decomposto in passi elementari di durata pari ad una<br />
unità di tempo:<br />
1. appena cambiata la configurazione di ingresso nessuna funzione cambia uscita:<br />
l'AND in alto e l'OR mantengono il valore 1, l'AND in basso ed il NOT<br />
mantengono il valore 0;
2. dopo una unità di tempo l'AND in alto passa al valore 0 (come dettato dalla sua<br />
tavola di verità) e il NOT passa al valore 1, mentre l'OR mantiene 1 e l'AND in<br />
basso mantiene 0;<br />
3. dopo due unità di tempo l'OR passa al valore 0, mentre l'AND in basso passa al<br />
valore 1 e NOT ed AND in alto mantengono il valore raggiunto in precedenza;<br />
4. dopo tre unità di tempo, l'OR torna nuovamente a 1, mentre le altre funzioni del<br />
multiplexer mantengono il valore del passo precedente.<br />
Da questa analisi più dettagliata legata alle temporizzazioni dei dispositivi costituenti<br />
il Multiplexer, vediamo quindi che questo nel transitorio di passaggio dalla seconda<br />
configurazione di ingresso alla terza (entrambe con valore di uscita 1 per il<br />
Multiplexer) può generare per un breve tempo una situazione intermedia, detta alea<br />
di commutazione, con uscita 0. Tale alea di commutazione del multiplexer può<br />
determinare la commutazione del flip-flop al valore u=0.<br />
Questo esempio ci mostra come possa essere difficile prevedere il risultato in uscita<br />
di un circuito sequenziale asincrono a seguito di variazioni delle configurazioni in<br />
ingresso. In particolare vediamo come anche alee molto brevi possono determinare la<br />
commutazione permanente di un flip-flop rispetto al valore di uscita previsto<br />
basandosi sulla specifica del circuito combinatorio data sotto forma di tavola di verità<br />
(prescindendo quindi dalle temporizzazioni delle funzioni).<br />
<strong>Il</strong> problema di "imprevisti" dovuti ad alee di commutazione può essere completamente<br />
eliminato in circuiti di tipo sequenziale sincrono mediante un'opportuna utilizzazione<br />
della variabile di controllo clock.<br />
Variabile Clock in circuiti sincroni<br />
L'uso di dispositivi Master/Slave consente di far variare i valori di ingresso al flipflop<br />
senza per questo alterare il valore delle uscite, fin quando non venga dato un<br />
apposito impulso alla variabile di controllo clock. Scegliendo un periodo di variazione<br />
per la variabile clock grande rispetto al tempo di assestamento dei valori in uscita del<br />
circuito combinatorio a seguito di variazioni dei valori di ingresso, si può quindi ovviare<br />
in modo semplice al problema delle eventuali alee di commutazione: queste saranno<br />
esaurite nel momento in cui, tramite variazioni della variabile clock, comandiamo il<br />
passaggio dallo stato corrente allo stato successivo.<br />
La progettazione di un circuito sincrono può quindi essere basata sulla specifica del<br />
comportamento di un circuito combinatorio basato sulla tavola di verità, senza<br />
necessità di una analisi raffinata del comportamento in funzione del tempo. Le uscite<br />
dei dispositivi Master/Slave tengono fisso il valore dello stato corrente, mentre gli<br />
ingressi di tali dispositivi predispongono il calcolo dello stato successivo. <strong>Il</strong> passaggio<br />
dallo stato corrente allo stato successivo avviene in modo "istantaneo" e simultaneo
per tutti i flip-flop Master/Slave inclusi nel circuito sincrono a seguito di un impulso<br />
della variabile di controllo clock.<br />
Principali <strong>Circuiti</strong> <strong>Sincroni</strong><br />
I circuiti sequenziali sincroni sono, insieme ai circuiti combinatori, i "mattoni"<br />
elementari piu' usati per definire la microarchitettura di un sistema di calcolo<br />
moderno. Data la loro potenziale insensibilità alle alee di commutazione dei circuiti<br />
combinatori, la loro utilizzazione consente di arrivare a progettare sistemi complessi<br />
in modo estremamente semplice e modulare, tenendo conto solo della funzione tra<br />
ingresso ed uscita dei dispositivi (e verificando semplici disuguaglianze per quanto<br />
riguarda i tempi di assestamento dei valori in ingresso ed in uscita). Normalmente i<br />
circuiti sequenziali sincroni vengono classificati in "registri" (contenenti<br />
rappresentazioni binarie di dati su uno o più bit) caratterizzati da diverse modalità di<br />
manipolazione dei dati.