Le Mappe di Karnaugh. Introduzione Le mappe di Karnaugh rappresentano un metodo grafico-sistematico per la semplificazione di qualsiasi funzione booleana. Questo metodo si basa su poche regole e se applicate tutte contemporaneamente portano sempre alla massima semplificazione delle espressioni booleane. Una funzione booleana, espressa da una tavola della verità, può essere rappresentata mediante una particolare tabella costituita da una serie di celle individuate dall incrocio di righe e colonne che riportano i valori assunti dalle variabili d ingresso e ogni cella contiene il valore binario assunto della funzione booleana in corrispondenza di quelle entrate. Una mappa di Karnaugh ( mappa di K. ) è costituita da una serie di celle adiacenti opportunamente disposte. Ogni cella rappresenta una particolare combinazione delle variabili d'entrata, che compaiono nell'espressione booleana, sotto forma di prodotto ( MinTerm ). La mappa di K. non è altro che un modo diverso di rappresentare la tavola della verità della funzione logica data. Se n sono le variabili d'entrata della rete, la mappa di K. prevede 2 n celle, perché 2 n sono le combinazioni possibili di n variabili booleane. Un'espressione con due variabili A e B richiede una mappa di K con 4 celle, come mostrato in figura: FIGURA 28 - Mappa di Karnaugh per una funzione di due variabili. Nella mappa di figura a), sono mostrate le quattro celle contenenti tutte le possibili combinazioni tra due variabili binarie A e B; la figura b), invece, mostra come viene disegnata la mappa di K, per il suo impiego nella semplificazione delle funzioni booleane: le variabili sono poste esternamente alle celle. Si noti come le coordinate delle celle siano collocate in modo tale che qualsiasi coppia di celle adiacenti (vicine) si consideri, cambi di stato (dritta /negata) una sola variabile.altre forme di mappe di K. Per tre e quattro variabili, la forma delle mappe di Karnaugh è mostrata in figura 29. 47
FIGURA 29 Mappa di K per funzione booleane a 3 e 4 variabili. Celle Adiacenti Si definiscono celle adiacenti due celle che rappresentano due combinazioni per le quali cambia di stato una sola variabile. In genere sono adiacenti tutte le celle che hanno un lato in comune, quelle agli estremi delle righe e quelle agli estremi delle colonne. Mappa di Karnaugh ed espressioni booleana Per conoscere il comportamento di una rete logica si determina la tavola della verità e da questa si risale alla funzione logica espressa come somma di prodotti ( MinTerm ) o come prodotti di somme ( MaxTerm ). Per rappresentare una funzione booleana con la mappa di K., la si pone sottoforma di somma di prodotti. Per ogni termine prodotto si scrive un 1 nella cella corrispondente della mappa di K.. Ad esempio: 48
FIGURA 30 Esempio di funzione booleana e relativa Mappa di K. La mappa di Karnaugh e la semplificazione di una funzione logica. Si devono creare gruppi o raggruppamenti degli 1 che si trovano in celle adiacenti rispettando le seguenti regole: 1) I raggruppamenti si effettuano per rettangoli o quadrati per un numero di celle pari ad una potenza del 2: 1,2,4,8,16.... 2) I raggruppamenti devono comprendere il maggior numero di celle possibili nel rispetto della regola 1). 3) Una o più celle possono appartenere a più raggruppamenti. 4) I raggruppamenti devono ricoprire tutte le celle contenenti un 1; in altre parole, ogni cella con un 1 deve far parte di un raggruppamento, che al limite può essere costituito da una sola cella. 5) Ad ogni raggruppamento corrisponde un prodotto delle variabili d'entrata così strutturato: il prodotto comprende solo quelle variabili che nel raggruppamento in esame non cambiano di stato, complementando quelle che sono allo stato 0. La funzione logica semplificata è data dalla somma dei questi prodotti generati dai raggruppamenti. 49
Applicando le regole viste all'esempio di Figura 30, si ottiene: FIGURA 31 Esempio di semplificazione di una funzione booleana con la Mappa di K. Esercizio 1 Nell esempio seguente sono mostrati raggruppamenti di 1 un po particolari. Gli 1 posti ai quattro angoli della mappa sono adiacenti; infatti si pensi la mappa come un oggetto flessibile piegandola opportunamente si possono avvicinare i quattro 1 in questione fino a rappresentare un gruppo di quattro celle adiacenti, in cui cambiano stato solo le variabili A e C. FIGURA 32 Esempio di semplificazione di una funzione booleana con la Mappa di K. 50
Esercizio 2 FIGURA 33 Esempio di semplificazione di una funzione booleana con la Mappa di K. Esercizio 3 FIGURA 34 Esempio di semplificazione di una funzione booleana con la Mappa di K. 51
Le condizioni di indifferenza Nel progetto di reti logiche, a volte, si presentano combinazioni delle variabili d'entrata non permesse. Ad esempio, il codice BDC ( Binary Decimal Code ) codifica solo le 10 cifre decimali e servono 4 bit per la loro codifica. Le possibili combinazioni con 4 bit sono 16, nel caso del codice BCD ne servono 10, da 0000,...,1001; le altre 6, a partire da 1010,..., 1111 che pure esistono, non sono ammesse. Dovendo costruire una macchina logica con 4 variabili d'entrata che operi soltanto su numeri in BCD è ovvio che le 6 combinazioni suddette non sono codici BCD validi, ma numeri possibili. Queste combinazioni possono essere considerate di indifferenza, nel senso che in BCD non saranno mai accettate, perché non fanno parte del codice. L'importanza delle condizioni di indifferenza si manifesta nella semplificazioni delle mappe di Karnaugh, perché ognuna di esse può assumere il valore 0 oppure 1 senza influenzare il funzionamento della macchina logica. In questo modo, aumentando il numero degli 1 presenti nella mappa aumenta di conseguenza la semplificazione dell'espressione della funzione logica e si ottimizza anche il numero di porte utilizzate per realizzare il circuito. Nella mappa di Karnaugh le condizioni di indifferenza vengono indicate con una X. Si consideri l'esempio di figura: FIGURA 35 Esempio di semplificazione di una funzione booleana con la Mappa di K con la presenza di condizioni d indifferenza. NOTA Si utilizzano solo le condizioni di indifferenza X in una mappa che servono a semplificare. Non si devono usarle tutte se non servono, perché si rischia di aumentare la complessità dell espressione semplificata e del circuito da realizzare. 52