Appello del 16 giugno 1999
Esercizio 1 (versione 1). (18 punti) Progettare  un circuito il cui output è 1 quando viene riconosciuta una delle seguenti stringhe:
00011
10010
10011
00010
l'output è zero altrimenti.
Utilizzare FF di tipo "Toggle".Costituiranno elemento di valutazione non solo la correttezza ma anche l'ottimalità della soluzione e la completezza e chiarezza dell'esposizione.

Esercizio 1 (versione 2). (18 punti) Progettare  un circuito il cui output è 1 quando viene riconosciuta una delle seguenti stringhe:
01001
11001
01000
l'output è zero altrimenti.
Utilizzare FF di tipo "Toggle".Costituiranno elemento di valutazione non solo la correttezza ma anche l'ottimalità della soluzione e la completezza e chiarezza dell'esposizione.

Esercizio 2 (12 punti) Assegnata la seguente tabella di verità:
I3I2I1I0	O3O2O1O0	
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111	0000
0010
0111
0000
0001
0100
1000
1000
0000
0000
0000
1000
1000
0001
0000
0000	

Progettare i relativi schemi circuitali utilizzando porte logiche, Programmable Logic Arrays (PLA) e multiplexers  a 4 ingressi.
Si descriva inoltre il funzionamento generale di un circuito multiplexer e se ne disegni  lo schema circuitale interno, per il caso di un MPX a 4 ingressi.

Soluzioni

Esercizio 1. Versione 1 (16 punti) Progettare  un circuito il cui output è 1 quando viene riconosciuta una delle seguenti stringhe:
00011
10010
10011
00010
l'output è zero altrimenti.

Si osservi che, in realtà, il sistema deve riconoscere la stringa X001X, dove il simbolo X indica "don't care". Ovvero, il sistema deve emettere un "1" ogni volta che riconosce una stringa di cinque bit, i cui tre bit interni siano "001".

L'automa è pertanto il seguente (considerando che le stringhe vengano lette da destra verso sinistra):

Utilizziamo la seguente codifica per gli stati:
S0 000
S1001
S2010
S3011
S4100
La tabella degli stati futuri è data dalla: 

IQ2Q1Q0 (t)	S(t)	Q2Q1Q0 (t+1)	T2T1T0 (t)	Out (tt+1)	
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111	S0
S1
S2
S3
S4
X
X
X
S0
S1
S2
S3
S4
X
X
X	S1
S1
S3
S4
S0
X
X
X
S1
S2
S1
S1
S0
X
X
X	001
000
001
111
100
XXX
XXX
XXX
001
011
011
010
100
XXX
XXX
XXX	0
0
0
0
1
X
X
X
0
0
0
0
1
X
X
X	

Si noti che le configurazioni di stato non ammesse corrispondono a valori dei segnali Ti qualsiasi.
Questo consente di semplificare il relativo circuito combinatorio.
Alternativamente, se si desidera che, in caso di errore, il sistema transiti comunque in una configurazione nota, si può imporre che da un qualsiasi stato non ammesso venga "forzata" una transizione in S0.
Si omette - perché banale- il calcolo col metodo delle mappe di Karnaugh delle espressioni booleane minimizzate per T2T1T0  e per Out.

Versione 1

Rispetto alla versione 2, il problema è complicato dal fatto che una stringa, la 11000,  non è inclusa nell'elenco delle stringhe da riconoscere, perciò, non è possibile "generalizzare" le stringhe da riconoscere in un'unica stringa.
Possiamo tuttavia cosiderare la seguente generalizzazione parziale: X1001 e 01000.
La lettura delle stringhe viene sempre effettuata da destra verso sinistra.
L'automa risultante viene mostrato in figura.
Ogni stato, oltre al simbolo Si, reca anche l'indicazione della porzione di stringa riconosciuta. L'output dell'automa è evidenziato solo in corrispondenza degli archi S4S0 e S8S0. Tutte le altre transizioni producono un output uguale a zero.

Nota: Un automa di Moore avrebbe richiesto uno stato in più.
Occorrono comunque 4 FF per codificare i 9 stati.
Una possibile codifica è la seguente:
S0=0000, S1=0001, S2=0010,S3=0011,S4=0100,S5=0101,S6=0110,S7=0111,S8=1000
La soluzione completa viene poi derivata nel modo usuale.

Esercizio 2 (14 punti) Assegnata la seguente tabella di verità:

I3I2I1I0	O3O2O1O0	
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111	0000
0010
0111
0000
0001
0100
1000
1000
0000
0000
0000
1000
1000
0001
0000
0000	

Progettare i relativi schemi circuitali utilizzando porte logiche, Programmable Logic Arrays (PLA) e multiplexers  a 4 ingressi.
Si descriva inoltre il funzionamento generale di un circuito multiplexer e se ne disegni  lo schema circuitale interno, per il caso di un MPX a 4 ingressi.

Soluzione:
Le espressioni booleane per O3O2O1O0 sono date dalle:

Nel realizzare tanto il circuito AND-OR che il PLA, si osservi che alcuni termini prodotto (ad esempio il primo di O0 e di O2) compaiono nell'espressione booleana di più di una variabile di uscita, pertanto NON vanno replicate le relative porte AND. 
Di seguito è riportato uno schema parziale del PLA

La realizzazione con MPX è molto semplice. L'esercizio richiede che si utilizzino MPX a 4 ingressi, perciò ogni funzione booleana Oi può essere realizzata usando 5 MPX connessi come in figura (che illustra specificamente il circuito relativo alla funzione di uscita O0).
In figura, gli input del circuito combinatorio vengono usati come segnali di controllo per i multiplexers. I segnali I0 ed I1 controllano il primo stadio di 4 MPX., mentre I2 ed I3 controllano il MPX del secondo stadio.
Gli ingressi dei 4 MPX del primo stadio devono essere connessi in modo permanente ai valori basso (0 logico) e alto (1 logico), seguendo i valori riportati nella colonna della tabella di verità relativa a O0.
Si osservi che, per ogni valore della quartupla I3I2I1I0 , il valore di O0 è proprio quello richiesto dalla tabella di verità.

Si vedano gli appunti per una trattazione funzionamento dei multiplexers e sul loro uso per la realizzazione di circuiti combinatori.