edutecnica

Sommatori binari        

L’addizione è la più elementare delle operazioni aritmetiche; l’addizione è più o meno la sola cosa che i computer fanno; l’unico problema è riuscire a costruire qualcosa che produca delle somme col sistema binario, dato che tutte le macchine sono basate su questo sistema numerico.
Sommare numeri binari è più o meno come sommare numeri decimali, per sommare due numeri come 245 e 673, si scompone il problema in passi più semplici.
Ogni passo richiede soltanto di sommare una coppia di cifre decimali. In questo esempio si comincerebbe con 5 più 3 (etc.).

I sommatori binari sono reti combinatorie che ricevono in ingresso n bit degli addendi da sommare e generano in uscita i bit della somma binaria con il relativo riporto.
Si tratta, dunque, di un tipico esempio di rete combinatoria con ingressi multipli ed uscite multiple, strutturata in modo da seguire il meccanismo secondo cui avviene la somma binaria.

Introduciamo, pertanto, i due blocchi funzionali fondamentali che sono:
• il semisommatore binario HA (Half Adder) senza riporto in ingresso ;
• il sommatore binario FA (Full Adder) con riporto in ingresso.

Circuito semisommatore HA        

La differenza tra la somma in decimale e la somma in binario è che per quest'ultimo sistema lo schema per la somma è molto più semplice:
0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 0 con riporto 1

questo schema non è altro che la tabella della verità della porta XOR (a parte la questione del riporto che deve essere risolta).

Per gestire anche il riporto questo circuito deve essere modificato in modo da risolvere la seguente tabella della verità

semisommatore binario Half-adder

Dove A e B sono i bit da sommare, S è il bit della somma (sum) e C è il bit del riporto (carry).
Abbiamo così costruito il semisommatore o Half-Adder.

Circuito sommatore FA        

Il dispositivo creato si chiama semi-sommatore (half-adder) questo nome deriva dal fatto che per ottenere la somma completa (full-adder) tra due numeri di più cifre, oltre ai bit dello stesso ordine occorre sommare anche il riporto eventualmente ottenuto dai due bit di ordine immediatamente inferiore.

Per questo motivo il circuito full-adder si presenta con tre ingressi e due uscite.

I due ingressi sono costituiti dai due bit An e Bn da sommarsi e dal riporto Ci eventualmente ottenuto dalla somma dei due bit An-1 e Bn-1 .
Le due uscite sono composte dal bit di somma dei tre ingressi e dall'eventuale riporto Co da inviare al full-adder successivo. Qui sotto è mostrato il simbolo logico, la tabella della verità e lo schema circuitale di un full-adder

tabella della verità di un sommatore binario

Dalla tabella della verità è possibile dedurre la funzione logica della somma eseguita di questo circuito combinatorio

mentre la funzione logica del riporto è la seguente

Quando si vogliono sommare numeri di più bit ciascuno, il metodo più semplice è quello di realizzare un sommatore parallelo come disegnato qui

schema a blocchi di un sommatore binario

mettendo in cascata tanti FA (full-adder) quanti sono i bit di ciascun numero binario da sommare.
Se per ipotesi usiamo dei nibble (4bit) i quattro bit di ciascun numero vengono presentati simultanemente all'ingresso del full-adder e viene effettuata la somma se non è presente alcun riporto.
Nel caso peggiore, invece, in cui ad ogni somma corrisponde un riporto, si avrà che questo bit traslerà dal primo HA a tutti gli altri FA fino all'ultimo.

A :      B :


Risultato : 00000

E' molto facile schematizzare il comportamento del sommatore anche usando l'excel.

Qui sotto è riportato lo schema completo di un addizionatore a 4 bit che usa solo porte elementari ed in cui i numeri da sommare sono individuati dalle posizioni degli otto deviatori (considerando +Vcc=1 e GND=0).

sommatore binario a porte logiche

Sottrattori binari        

In analogia a quanto visto per il sommatore, è possibile realizzare una rete combinatoria che realizza una sottrazione tra due numeri binari; anche in questo caso, tenendo presenti le regole della sottrazione binaria, dobbiamo preparare due blocchi fondamentali:

˙ il semisottrattore binario HS (Half subtracter) senza prestito in ingresso
˙ il sottrattore binario FS (Full subtracter) con prestito in ingresso .

Circuito semisottrattore HS        

Il semisottrattore è il blocco elementare che realizza la differenza di due bit: deve rispettare la seguente tabella della verità

tabella della verità del semisottrattore binario

In questo caso invece che usare i teoremi dell'algebra di Boole semplifichiamo la funzione con le mappe K ottenendo come variabili di uscita.

La differenza si ottiene facendo l'operazione di XOR (EX_OR o OR esclusivo) come nel caso del sommatore, mentre il prestito è un AND logico tra la variabile B e la variabile A negata.

circuito semisottrattore con porte logiche

Circuito sottrattore FS        

Lo schema completo di un sottrattore è qui riportato, dove
An ; Bn sono i bit da sottrarre
Pn è il prestito da richiedere
Dn è la differenza binaria
Pn-1 è il prestito da fornire

Il circuito logico che esegue la sottrazione è ottenuto sviluppando la funzione in due fasi: dapprima, con un HS si sottraggono An e Bn ; successivamente, mediante un secondo HS si toglie il riporto Pn-1 . I riporti in uscita convergono verso una porta OR.
In modo analogo al sommatore non si verifica mai che a questo porta si presentino due 1 simultaneamente.

Per eseguire la sottrazione binaria di due numeri di n bit, bisogna disporre di n blocchi elementari, coi prestiti connessi in cascata. Il primo blocco, meno significativo, non avendo riporto in ingresso, può essere un HS, gli altri saranno necessariamente degli FS.

Bisogna dire che in caso di calcoli complessi, i sottrattori sono poco usati. Si preferisce effettuare l'operazione tramite una addizione con complementazione.

In tal caso, l'operazione aritmetica di sottrazione viene effettuata aggiungendo al minuendo il complemento a due del sottraendo. Il sottrattore è, in questo caso, simile ad un sommatore al quale uno dei due numeri giunge complementato

e l'eventuale riporto, ottenuto dalla somma dei bit significativi, deve essere aggiunto alla somma dei bit meno significativi. Si ricorda che tale riporto si ha solo nel caso in cui il minuendo è maggiore del sottraendo e mai nel caso opposto.

caso A) minuendo maggiore del sottraendo

caso B) minuendo minore del sottraendo

In quest'ultimo caso già sappiamo che il risultato è negativo come segno perchè minuendo < sottraendo poi basta prendere il risultato 1100 e complementarlo nuovamente a 1 per conoscere il modulo del numero. che è (0011)2=(3)10.
Una volta implementata la sottrazione abbiamo di fatto realizzato una unità aritmetico-logica, dato che la moltiplicazione non è altro che una somma ripetuta e la e la divisione , a sua volta, una sottrazione ripetuta.

Display a 7 segmenti        

La realizzazione di dispositivi numerici digitali si accompagna alla necessità di visualizzazione di variabili e di risultati. In Particolare, nel caso dei circuiti sommatori e sottrattori si può ricorrere ai display a 7 segmenti a diodi LED (Light emitting Diode) oppure a cristalli liquidi LCD (Liquid Crystal Display). In entrambi i casi i segmenti utilizzati vengono identificati secondo il seguente schema

I display a 7 segmenti devono essere guidati da un opportuno decoder per effettuare la rappresentazione in decimale di un codice BCD (Binary Code Decimal) che è un codice a 4 bit, ottenuto utilizzando le prime 10 cifre del binario puro assegnandole alle corrispondenti cifre del decimale secondo la seguente orditura

Si osserva che nel codice BCD le combinazioni 1010, 1011, 1100, 1101, 1111 sono inutilizzate ( ridondanti ) e prive di significato.

Se assumiamo che nella sequenza dei bit in ingresso la cifra più significativa sia D (MSB=Most significant Bit) mentre la cifra meno significativa sia A (LSB=Least Significant Bit) si avrebbe il seguente collegamento:

La struttura interna del decodificatore (che normalmente si acquista dal mercato) può facilmente essere ricavata costruendo la mappa di Karnaugh per ciascuna delle sette variabili di uscita a,b,c,d,e,f,g ottenendo le seguenti semplificate espressioni

Nell'attuare questo procedimento, i cinque numeri inutilizzati dal codice BCD possono essere considerati condizioni di indifferenza.

Se invece i vuole mantenere la codifica in ingresso in binario puro, allora saranno ammesse anche le combinazioni di bit precedentemente escluse, ma l'unica maniera per utilizzarle sarà quella di interpretare l'uscita secondo una codifica esadecimale da (0)10=(0000)2=(0)H a (15)10=(1111)2=(F)H.