02.06.2013 Views

Circuiti Sincroni e Asincroni - Il Ciampini

Circuiti Sincroni e Asincroni - Il Ciampini

Circuiti Sincroni e Asincroni - Il Ciampini

SHOW MORE
SHOW LESS

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.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!