Appello del 30 giugno 1999

Versione 1

Esercizio 1 (15 punti)

Progettare una rete di connessione fra un banco di 8 registri Parallel Input Parallel Output a 8 bit ed un sommatore-sottrattore parallelo. Si supponga che il bit più significativo rappresenti il segno.

La rete deve consentire di effettuare la seguente macro-operazione:

(nota: il registro destinazione può coincidere con uno dei registri sorgente, e i due registri sorgente possono coincidere)

Progettare il circuito in dettaglio, con attenzione all'opportuna temporizzazione degli eventi, evidenziando i segnali di controllo necessari, ed il relativo automa di controllo.

 

Esercizio 2 (15 punti)

Analizzare il funzionamento del seguente circuito sequenziale, seguendo la metodologia di analisi vista a lezione. Il circuito riceve in ingresso un unico input sequenziale X, mentre l'output corrisponde ai tre bit Q2Q1Q0 (Q0 LSB).

 

 

Appello del 30 giugno 1999

Versione 2

Esercizio 1 (15 punti)

Progettare una rete di connessione fra un banco di 16 registri Parallel Input Parallel Output a 8 bit ed un sommatore parallelo.

La rete deve consentire di effettuare la seguente macro-operazione:

(nota: il registro destinazione può coincidere con uno dei registri sorgente, ma i due registri sorgente NON possono coincidere. Un segnale di errore deve essere generato in questo caso)

Progettare il circuito in dettaglio, con attenzione all'opportuna temporizzazione degli eventi, evidenziando i segnali di controllo necessari, ed il relativo automa di controllo.

 

Esercizio 2 (15 punti)

Analizzare il funzionamento del seguente circuito sequenziale, seguendo la metodologia di analisi vista a lezione. Il circuito riceve in ingresso un unico input sequenziale X, mentre l'output corrisponde ai tre bit Q3Q2Q1.

 

NOTA: si consideri Q1 il bit meno significativo

 

Soluzioni (versione 1)

Esercizio 1

La figura mostra lo schema del sistema di cui si richiede la progettazione, con relativo automa di controllo.

Si noti che ogni multiplexer o demultiplexer, e tutte le linee dati, si intendono replicati 8 volte (per ciascun output o input di ciascun registro).

Le linee di controllo prodotte in uscita dall'Unità di Controllo sono:

Select_Ri : tre bit necessari per selezionare uno fra 8 registri

Select_Rj : tre bit necessari per selezionare uno fra 8 registri

Select_Dest: tre bit necessari per selezionare uno fra 8 registri

Queste tre terne di segnali selezionano, rispettivamente, due registri sorgente ed un registro destinazione.

In_Ri : 8 segnali che abilitano la lettura di ogni registro.

Add, Subtract abilitano un'operazione di somma o sottrazione

L'Unità di Controllo riceve in ingresso un segnale di Start, che attiva l'operazione di somma o sottrazione, ed un segnale Delay, che genera un ritardo necessario al completamento dell'operazione di somma (dovuto al tempo di propagazione del carry).

L'automa di controllo ha tre stati.

Nello stato S0 attende il comando di Start, e non produce segnali attivi.

Nello stato S1 abilita il caricamento dei due registri operandi sull'Adder e attiva il comando di somma o sottrazione.

L'output prodotto dall'Unità di Controllo è sintetizzato dal comando m1.

m1=Select_Ri,Select_Rj,Add/Subtract

Si noti che la specifica terna di valori per Select_Ri e Select_Rj, e la scelta del segnale Add o Subtract dipendono dal codice dell'istruzione specifica ricevuta dall'Unità di Controllo. Ad esempio ADD R1,R2,R7 è un'istruzione che richiede di sommare R1 ed R2, e trasferire il risultato in R7.

Si noti, al solito, che, essendo l'Adder un circuito combinatorio, i dati vanno mantenuti in ingresso durante tutto il tempo necessario ad eseguire l'operazione aritmetica, e dunque i segnali in m1 devono restare attivi durante la permanenza in S1.

Nello stato S2 si abilita il trasferimento del risultato sul registro destinazione come specificato dall'istruzione.

m2= in_Rk,Select_Dest

dove, al solito, la terna di valori Select_Dest deve identificare il registro destinazione Rk, specificato nel codice istruzione.

Le transizioni fra stati dell'Unità di Controllo avvengono in corrispondenza di cicli di clock e dei segnali di input Start e Delay.

 

 

 

 

Esercizio 2

Secondo lo schema illustrato a lezione e descritto negli appunti, il primo passo richiede di analizzare la parte combinatoria del circuito per ricavare le espressioni booleane dei segnali Set e Reset dei 3 Flip Flop.

La parte combinatoria legge 4 ingressi, XQ2Q1Q0, e produce come output i 6 segnali di controllo dei FF, le cui espressioni booleane sono facilmente ricavabili osservando il circuito:

Si compila quindi la tabella di verità del circuito combinatorio:

XQ2Q1Q0(t)

Q2Q1Q0 (t+1)

S2R2 (t)

S1R1(t)

S0R0 (t)

0000

 

00

00

00

0001

 

00

00

00

0010

 

00

00

00

0011

 

00

00

00

0100

 

00

00

00

0101

 

00

00

00

0110

 

00

00

00

0111

 

00

00

00

1000

 

00

00

10

1001

 

00

10

01

1010

 

00

00

10

1011

 

10

01

01

1100

 

00

00

10

1101

 

00

10

01

1110

 

00

00

10

1111

 

01

01

01

Poiché il circuito ha 3 FF, il numero di stati massimo (salvo eventuale minimizzazione) è 9. Per ricavare l'automa, è necessario ricavare le transizioni fra stati. L'associazione dei simboli agli stati si può banalmente fare nel seguente modo:

S0ç 000

S1ç 001….ecc

La seconda colonna della tabella, che rappresenta gli stati futuri, può essere quindi compilata osservando, in ogni riga j (j=1..16) e per ciascun Qi (t+1) il valore precedentemente memorizzato sul FF, Qi (t) ed il valore dei segnali Si(t) ed Ri(t).

Ad esempio, si consideri la riga 12:

1011

 

10

01

01

Questa riga ci dice che, quando X=1, il FF 2 si trova nello stato "0" e riceve la coppia di valori SR "10". Dunque, in t+1 transiterà nello stato "1". Vice versa, i FF1 ed FF0 passeranno dal valore "1" al valore "0", poiché ricevono un segnale di reset, "01".

Dunque la seconda colonna della tabella va riempita nella riga j=12 con la terna 100

 

XQ2Q1Q0(t)

Q2Q1Q0 (t+1)

S2R2 (t)

S1R1(t)

S0R0 (t)

0000

000

00

00

00

0001

001

00

00

00

0010

010

00

00

00

0011

011

00

00

00

0100

100

00

00

00

0101

101

00

00

00

0110

110

00

00

00

0111

111

00

00

00

1000

001

00

00

10

1001

010

00

10

01

1010

011

00

00

10

1011

100

10

01

01

1100

101

00

00

10

1101

110

00

10

01

1110

111

00

00

10

1111

000

01

01

01

Si osservi, in generale, che, finché il valore di X è zero, lo stato dei FF non cambia. Quando X è uguale ad 1, il circuito si comporta come un contatore.

L'automa di Moore, ricavabile in base all'osservazione delle prime due colonne della tabella, è il seguente (si omette il ciclo di ogni stato su sé stesso in per X=0):