Un comparatore e' un circuito combinatorio che prende in input due stringhe binarie e ritorna 1 se e solo se le due stringhe sono uguali.
Sintetizzare un comparatore per stringhe lunghe 2 con il metodo delle mappe di Karnaugh. Sintetizzarlo a mano e con meno blocchi supponendo di avere a disposizione il blocco logico XOR ( aXORb=1 <=> (aORb)AND(a=b
-) ).

Le due stringhe di input saranno formate rispettivamente dai bit a,b e c,d. Affinchè le stringhe siano uguali è necessario che a=c e b=d, quindi la tavola di verità e la mappa di Karnaugh del nostro comparatore sono:

a b c d COMP
0 0 0 0 1
0 0 0 1 0
0 0 1 0 0
0 0 1 1 0
0 1 0 0 0
0 1 0 1 1
0 1 1 0 0
0 1 1 1 0
1 0 0 0 0
1 0 0 1 0
1 0 1 0 1
1 0 1 1 0
1 1 0 0 0
1 1 0 1 0
1 1 1 0 0
1 1 1 1 1
otteniamo quindi la seguente funzione
f(a,b,c,d) = a'b'c'd' + a'bc'd + abcd + ab'cd'

Se, invece, avessimo a disposizione dei blocchi logici XOR potremmo realizzare la stessa rete in maniera più efficiente nel seguente modo:

f(a,b,c,d) = (a XOR c') AND (b' XOR d)

che presenta questa tavola di verità, equivalente a quella precedente:

a b c d a XOR c' b' XOR d (a XOR c') AND (b' XOR d) COMP
0 0 0 0 1 1 1 1
0 0 0 1 1 0 0 0
0 0 1 0 0 1 0 0
0 0 1 1 0 0 0 0
0 1 0 0 1 0 0 0
0 1 0 1 1 1 1 1
0 1 1 0 0 0 0 0
0 1 1 1 0 1 0 0
1 0 0 0 0 1 0 0
1 0 0 1 0 0 0 0
1 0 1 0 1 1 1 1
1 0 1 1 1 0 0 0
1 1 0 0 0 0 0 0
1 1 0 1 0 1 0 0
1 1 1 0 1 0 0 0
1 1 1 1 1 1 1 1