Un addizionatore è un circuito combinatorio numerico.
Input: due bit (in base due) da sommare a e b, bit di riporto in entrata CarryIn
Output: un bit che rappresenta la somma dei bit a e b, Sum e un bit di riporto in uscita CarryOut
Supponiamo di voler fare la somma tra i bit
a | b | CarryIn | Sum | CarryOut |
---|---|---|---|---|
0 | 0 | 0 | ||
0 | 0 | 1 | ||
0 | 1 | 0 | ||
0 | 1 | 1 | ||
1 | 0 | 0 | ||
1 | 0 | 1 | ||
1 | 1 | 0 | ||
1 | 1 | 1 |
In questo modo abbiamo elencato tutti i casi possibili di input che possiamo avere.
Quando si crea una tabella di verità, si prendono in considerazione solo gli input (a, b CarryIn in questo caso), per elencare tutte le combinazioni possibili tra gli input, dobbiamo capire quante combinazioni 3 input generano, in questo caso
Adesso compiliamo la tabella di verità, effettuando i conti e quindi cosa ci aspettiamo dalla somma tra a e b ed eventuale riporto generato.
a | b | CarryIn | Sum | CarryOut |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 | 0 |
0 | 1 | 0 | 1 | 0 |
0 | 1 | 1 | 0 | 1 |
1 | 0 | 0 | 1 | 0 |
1 | 0 | 1 | 0 | 1 |
1 | 1 | 0 | 0 | 1 |
1 | 1 | 1 | 1 | 1 |
a | b | CarryIn | Sum | CarryOut |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 | 0 |
0 | 1 | 0 | 1 | 0 |
0 | 1 | 1 | 0 | 1 |
1 | 0 | 0 | 1 | 0 |
1 | 0 | 1 | 0 | 1 |
1 | 1 | 0 | 0 | 1 |
1 | 1 | 1 | 1 | 1 |
Vediamo di semplificare questa formula:
Adesso ci proponiamo di estrapolare una formula per la somma. Questa volta dalla tabella di verità guardiamo quando è vero che Sum è uguale a 1.
a | b | CarryIn | Sum | CarryOut |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 | 0 |
0 | 1 | 0 | 1 | 0 |
0 | 1 | 1 | 0 | 1 |
1 | 0 | 0 | 1 | 0 |
1 | 0 | 1 | 0 | 1 |
1 | 1 | 0 | 0 | 1 |
1 | 1 | 1 | 1 | 1 |
La formula, sfruttando la forma normale disgiuntiva, è:
La somma in binario è riconducibile all'operatore (e anche porta logica) XOR.
Lo XOR diventa uno quando i due input passati sono diversi.
La somma che stiamo descrivendo sopra non è altro che la somma tra
La formula dice di mettere in AND
In più, rispetto alla formula per la somma, va inserito un AND tra a e b e questo va messo in OR con l'AND appena piazzato:
Il circuito per la somma è completo di risultato, riporto in entrata e riporto in uscita.
In un circuito di questo tipo il riporto in uscita, diventa il riporto in entrata di un'altra somma di bit (nel caso in cui ci fossero più addizionatori in serie), mentre il primo riporto in entrata è 0.
A questo punto siamo in grado di implementare un circuito che esegue più di una operazione e non, per esempio, solo l'AND, o solo la somma. Costruiremo la prima ALU a 1 bit.