Addizionatori

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

Che cosa vogliono dire riporto in entrata e riporto in uscita?

Supponiamo di voler fare la somma tra i bit e , e supponiamo che tali bit siano i bit meno significativi di due numeri binari. Ovviamente per questi due numeri non ci sarà alcun riporto in entrata (CarryIn), dato che sono i primi due bit (delle due cifre binarie) che stiamo considerando. La somma restituisce , qui entra in gioco il riporto in uscita (CarryOut), tale somma che abbiamo appena effettuato non restituisce alcun riporto. Mentre se avessimo sommato avremmo ottenuto con riporto di .

Schema di un addizionatore
...

Pasted image 20230529091528.png

Tavola di verità del circuito
...

abCarryInSumCarryOut
000
001
010
011
100
101
110
111

In questo modo abbiamo elencato tutti i casi possibili di input che possiamo avere.

Consiglio

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 , la tabella dovrà avere 8 righe. Nella prima colonna facciamo 4 zeri e 4 uni, nella seconda colonna alterniamo 2 zeri e 2 uni, nella terza colonna alterniamo 0 e 1. Stesso metodo può essere applicato per qualsiasi numero di input forniti.

Adesso compiliamo la tabella di verità, effettuando i conti e quindi cosa ci aspettiamo dalla somma tra a e b ed eventuale riporto generato.

abCarryInSumCarryOut
00000
00110
01010
01101
10010
10101
11001
11111

Dalla tabella di verità ad una formula logica
...

abCarryInSumCarryOut
00000
00110
01010
01101
10010
10101
11001
11111

Vediamo di semplificare questa formula:

  • notiamo che in possono essere raccolti
  • la somma poiché se il primo operando è 1, l'altro è 0 e viceversa, quindi è per forza 1.
  • la formula diventa:
  • In può essere raccolto :
  • è riconducibile all'operazione di XOR:
  • la formula diventa:

Elaborata la formula per il resto, estrapoliamo quella per la somma
...

Adesso ci proponiamo di estrapolare una formula per la somma. Questa volta dalla tabella di verità guardiamo quando è vero che Sum è uguale a 1.

abCarryInSumCarryOut
00000
00110
01010
01101
10010
10101
11001
11111

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 e , il cui risultato viene poi sommato a .

Abbiamo una formula per la somma e una per il resto, facciamo il circuito
...


Partiamo disegnando il circuito per la formula della somma
...

photo_2023-05-29_17-31-19.jpg

  • posizioniamo a e b ai lati e come dice la formula immettiamo i loro fili in una porta XOR
  • successivamente, il risultato di a XOR b va messo in XOR con
Adesso combiniamo questo circuito con quello per il calcolo del
...

La formula dice di mettere in AND con il risultato dello XOR tra a e b:
photo_2023-05-29_17-36-45.jpg
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:
photo_2023-05-29_17-31-21.jpg
Il circuito per la somma è completo di risultato, riporto in entrata e riporto in uscita.

Intuizione

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.
photo_2023-05-29_17-42-57.jpg

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.