bitGateLab Digital · Impara
Italiano
Apri il simulatore

Impara › Argomento 5

Metodo di Quine-McCluskey passo dopo passo

7 min di lettura · Team bitGateLab

La mappa di Karnaugh è rapida con quattro variabili, ma dipende dal tuo colpo d'occhio e smette di essere pratica con cinque o più. Il metodo di Quine-McCluskey fa lo stesso lavoro con tabelle e regole meccaniche: non richiede intuito, trova sempre tutti gli implicanti primi ed è alla base dei programmi che semplificano le funzioni logiche. Qui capirai le sue due fasi, imparerai a individuare gli implicanti primi essenziali e risolverai un esempio completo a quattro variabili.

Vocabolario: implicanti e primi

Il metodo ha due fasi: prima trova tutti gli implicanti primi combinando i termini; poi sceglie il più piccolo insieme di primi che copra tutti i mintermini.

Fase 1: combinare i termini

Ogni termine si scrive in binario, e la posizione di una variabile eliminata si indica con un trattino. Per esempio, con le variabili A, B, C, D, il termine 0-11 significa ACD (B è stata eliminata).

  1. Raggruppa i mintermini in base al numero di uni presenti nel loro codice binario.
  2. Confronta ogni termine di un gruppo con ogni termine del gruppo successivo. Se differiscono per un solo bit, combinali mettendo un trattino in quella posizione, e segna i due originali come usati.
  3. Ripeti con il nuovo elenco. Si combinano soltanto termini che hanno i trattini nelle stesse posizioni.
  4. Quando non si può più combinare nulla, i termini che non sono mai stati segnati sono gli implicanti primi.
Ordinare per numero di uni fa risparmiare lavoro: due termini che differiscono per un solo bit si trovano sempre in gruppi consecutivi, perciò non devi mai confrontare il gruppo 1 con il gruppo 3.

Fase 2: tabella degli implicanti primi

Si costruisce una tabella con una riga per ogni implicante primo e una colonna per ogni mintermine della funzione (le condizioni di indifferenza non hanno colonna). Si segna quali mintermini copre ciascun primo. Poi:

  1. Cerca le colonne con un solo segno. Il primo di quella riga è essenziale: selezionalo e cancella tutte le colonne che copre.
  2. Per le colonne rimaste, scegli il minor numero di primi che le copra. Se due primi coprono le stesse colonne, va bene uno qualsiasi; preferisci quello con meno letterali.

Esempio completo. Semplifica F(A, B, C, D) = Σm(0, 2, 3, 5, 7, 8, 10, 11, 13, 15).

Passo 1. Raggruppare per numero di uni.

UniMintermini
00 (0000)
12 (0010), 8 (1000)
23 (0011), 5 (0101), 10 (1010)
37 (0111), 11 (1011), 13 (1101)
415 (1111)

Passo 2. Prima combinazione (coppie). Si confrontano i gruppi vicini. L'8 non si combina né con il 3 né con il 5 perché differiscono per più di un bit.

GruppiCoppie formate
0 e 1(0,2) 00-0; (0,8) -000
1 e 2(2,3) 001-; (2,10) -010; (8,10) 10-0
2 e 3(3,7) 0-11; (3,11) -011; (5,7) 01-1; (5,13) -101; (10,11) 101-
3 e 4(7,15) -111; (11,15) 1-11; (13,15) 11-1

Tutti e dieci i mintermini sono stati segnati come usati; ci sono 13 coppie.

Passo 3. Seconda combinazione (quartetti). Si combinano le coppie con il trattino nella stessa posizione che differiscono per un bit:

  • (0,2) con (8,10), oppure (0,8) con (2,10): -0-0, copre 0, 2, 8, 10.
  • (2,3) con (10,11), o (2,10) con (3,11): -01-, copre 2, 3, 10, 11.
  • (3,7) con (11,15), o (3,11) con (7,15): --11, copre 3, 7, 11, 15.
  • (5,7) con (13,15), o (5,13) con (7,15): -1-1, copre 5, 7, 13, 15.

Tutte le 13 coppie sono state usate in qualche quartetto. I quattro quartetti non si combinano più tra loro (nessuno ha i trattini nelle stesse posizioni di un altro e ne differisce per un solo bit). Pertanto, gli implicanti primi sono:

  • P1 = -0-0 = BD
  • P2 = -01- = BC
  • P3 = --11 = CD
  • P4 = -1-1 = BD

Passo 4. Tabella di copertura.

Primo02357810111315
P1 BD✔✔✔✔
P2 BC✔✔✔✔
P3 CD✔✔✔✔
P4 BD✔✔✔✔

Passo 5. Essenziali. Le colonne 0 e 8 hanno un segno soltanto in P1, quindi P1 è essenziale. Le colonne 5 e 13 hanno un segno soltanto in P4, quindi anche P4 è essenziale. Insieme coprono 0, 2, 5, 7, 8, 10, 13 e 15.

Passo 6. Coprire il resto. Mancano i mintermini 3 e 11. P2 li copre entrambi, e anche P3. Uno qualsiasi dei due completa la soluzione con lo stesso numero di letterali.

Risultato: F = BD + BD + BC, oppure F = BD + BD + CD. Entrambe hanno tre termini e sei letterali.

Se disegni questa funzione in una mappa di Karnaugh, P1 corrisponde ai quattro angoli, P4 al blocco centrale, P2 alle colonne 11 e 10 delle righe 00 e 10 (unite attraverso il bordo) e P3 all'intera colonna 11. Il metodo tabulare arriva allo stesso risultato senza bisogno di vedere la mappa.

Condizioni di indifferenza e tabelle cicliche

Le condizioni X si includono nella fase 1 come se fossero uni, perché possono aiutare a formare implicanti più grandi. Nella fase 2 si omettono: non hanno colonna, dato che non è obbligatorio coprirle. Un primo formato soltanto da X non serve mai.

A volte, dopo aver scelto gli essenziali, o fin dall'inizio, ogni colonna ha almeno due segni e non c'è un modo ovvio di decidere. Questa situazione si chiama tabella ciclica. Si risolve per tentativi: scegli un primo, togli ciò che copre e ripeti, confrontando le soluzioni ottenute. Per le tabelle grandi esiste un procedimento algebrico (il metodo di Petrick) che elenca tutte le coperture possibili.

Errori comuni

Provalo nel simulatore

Il simulatore semplifica le funzioni con un procedimento di questo tipo, perciò puoi usarlo per controllare ogni fase del tuo lavoro a mano.

  1. Crea una tabella di verità a quattro variabili e segna con 1 i mintermini dell'esempio.
  2. Svolgi le fasi 1 e 2 sulla carta e scrivi il tuo risultato.
  3. Osserva l'espressione minima fornita dallo strumento e la sua mappa di Karnaugh; individua quale gruppo corrisponde a ciascun implicante primo.
  4. Converti in circuito le due soluzioni possibili nella stessa area di lavoro e cambia gli ingressi per confermare che danno sempre la stessa uscita.

Esercizi

  1. Trova gli implicanti primi e l'espressione minima di F(A, B, C, D) = Σm(0, 1, 3, 7, 8, 9, 11, 15).
    Risposta

    Primi: -00- (BC), -0-1 (BD) e --11 (CD). La colonna 0 è coperta soltanto da BC, e la 7 soltanto da CD: entrambi sono essenziali e insieme coprono tutto. F = BC + CD. Il primo BD è superfluo.

  2. Risolvi F(A, B, C) = Σm(0, 1, 2, 5, 6, 7). Ci sono primi essenziali?
    Risposta

    Le coppie sono 00-, 0-0, -01, -10, 1-1 e 11-, e nessuna si combina in un quartetto: sono sei primi. Ogni mintermine è coperto esattamente da due di essi, quindi non ci sono essenziali (tabella ciclica). Due soluzioni minime: AB + BC + AC, oppure AC + BC + AB.

  3. Semplifica F(A, B, C, D) = Σm(2, 3, 7, 9, 11, 13) + d(1, 10, 15).
    Risposta

    Includendo le X nella fase 1 si ottengono quattro primi: -0-1 (BD), -01- (BC), --11 (CD) e 1--1 (AD). Nella tabella, senza colonne per 1, 10 e 15: il 2 è coperto soltanto da BC, il 7 soltanto da CD e il 13 soltanto da AD. Tutti e tre sono essenziali e coprono anche 3, 9 e 11. F = BC + CD + AD.

  4. Perché nella fase 1 non si confronta il gruppo con un uno con il gruppo con tre uni?
    Risposta

    Perché due codici con uno e tre uni differiscono per almeno due bit, e per combinarsi devono differire esattamente per uno.