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:
|
![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 |