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 uno 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 deve osservare che il 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.

Il circuito da realizzare deve quindi essere in grado di complementare eventualmente un addendo e poi deve tener conto del riporto causato dalla somma dei due bit più significativi. Partendo da un sommatore semplice, un circuito capace di eseguire la sottrazione con il metodo del complemento ad 1 può essere schematizzato dal seguente disegno.

L'uscita C3 costituisce il riporto eventuale ottenuto dalla somma di A3 e B3 mentre C0 è l'ingresso che deve essere sommato ad A0 e B0.

Per fare in modo che il circuito possa funzionare da sommatore o da sottrattore occorre dotarlo di un comando che complementi o non complementi uno dei due nibble, ed inoltre impedisca o no la somma dell'ultimo riporto con i bit meno significativi.
Dallo schema si riconosce come l'operazione di complementazione ad 1 possa essere eseguita su un singolo bit da una porta XOR.

Si vede come quando la variabile X=1 la variabile A venga commutata (complementata ad 1) mentre quando X=0 la variabile A non venga complementata.
La variabile X applicata ad ogni singolo bit del sottraendo B sarà determinata dalla posizione del selettore P.
L'eventuale bit di riporto C3 dovrà coincidere con il riporto in ingresso Ci associato ai due bit meno significativi; si deduce che il dispositivo è costituito da 4 FA e non da 3 FA e un HA sul LSB come nel sommatore puro.

rimane solo una correzione da fare; nel caso in cui l'operazione sia una sottrazione (P=1) ed il risultato sia eventualmente negativo (C3=0) deve essere eseguita una complementazione su quest'ultimo. Questo può essere effettuato con la stessa struttura di porte prevista sull'operando B.

Abbiamo precedentemente detto che solitamente nei sistemi digitali i numeri interi relativi vengono rappresentati con il metodo del complemento a 2, utilizzando il bit più pesante come bit di segno:
0=numero positivo
1=numero negativo
quindi in un sistema a 4 bit avremo le seguenti eventualità

I circuiti sommatori sono indispensabili anche in questo caso. Il circuito disegnato sotto ci permette di eseguire il complemento a 2 di un numero a 4 bit.
Se il terminale A0=1 si ha la complementazione a 2 dei bit in ingresso X che saranno rappresentati dai bit Y in uscita ; se A0=0 il numero rimane invariato(X3X2X1X0=Y3Y2Y1Y0).

Supponiamo infatti di voler complementare il numero +5=0101, dopo aver posto A0=1 ecco cosa accade

infatti 1011=-5. Se teniamo conto che nel sistema binario con rappresentazione a complemento a 2, la differenza tra due numeri positivi avviene complementando a 2 il sottraendo e poi sommando quest'ultimo valore al minuendo.
Il dispositivo precedente può anche essere facilmente usato per ricavare il modulo del numero in ingresso, se infatti siamo in presenza di un numero negativo il bit X3 può pilotare l'ingresso di complementazione A0. Supponiamo, infatti di voler calcolare il modulo di 1101C2 basterà porre X3=A0.

Infatti 1101C2=-3 con |-3|=3=0011C2.
Supponiamo di voler effettuare l'operazione A±|B| con A numero naturale positivo e B numero positivo in complemento a 2. Ipotizzando di operare sempre in un sistema di 4 bit possiamo collegare i dispositivi precedenti nel seguente modo.

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.