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):