Note
Esiste una ben nota e ormai libreria di blocchi funzionali predefiniti di tipo combinatori, che contiene i blocchi per tutte le funzioni combinatorie base.
I tipici blocchi funzionali combinatori sono:
- Multiplexer
- Decoder
- Comparator
- Half adder e full adder
- Adder a
- ALU
Multiplexer
Note
Il blocco funzionale multiplexer ha ingressi di selezione, ingressi dati e uscita, dove gli ingressi dati sono numerati a partire da .
Se sugli ingressi di selezione è presenta la configurazione binaria corrispondente a , allora il -esimo ingresso dati viene presentato in uscita.
Il simbolo funzionale è il seguente (estendibile a ingressi).
Considerando un ingresso per , questo è lo schema circuitale.
Decoder
Note
Il blocco funzionale decoder ha ingressi e uscite, con le uscite numerate a partire da .
Se sugli ingressi è presente un numero binario , la -esima uscita assume valore e le restanti uscite assumono valore .
Il simbolo funzionale è il seguente (estendibile a ingressi).
Comparator
Note
Il blocco funzionale comparatore ha due gruppi e di ingressi da ciascuno e uscite, che indicano rispettivamente minoranza (), uguaglianza (), e maggioranza .
Il blocco confronta i due numeri binari e da presenti sui due gruppi di ingressi, e attiva l’uscita corrispondente all’esito del confronto.
Il simbolo funzionale è il seguente (estendibile a ingressi).
Shifter combinatorio
Note
Il blocco funzionale shifter ha ingressi, ingresso per il bit aggiunto a destra, ingresso per il bit aggiunto a sinistra, un ingresso di controllo che comanda lo scorrimento a destra o a sinistra, e uscite.
Nel caso di scorrimento a destra (divisione per ), viene aggiunto un bit a sinistra, e gli ingressi sono shiftati di una posizione a destra. Viceversa, nel caso di scorrimento a sinistra (moltiplicazione per ), viene aggiunto un bit a destra e gli ingressi sono shiftati di una posizione a sinistra.
Lo schema circuitale per ingressi è il seguente.
Half adder
Note
Il blocco funzionale half adder ha due ingressi e e due uscite e . Ci permette di sommare binariamente e tenendo conto di un resto.
Lo schema circuitale è il seguente.
Full adder
Note
Il blocco funzionale full adder funziona esattamente come un half adder, con l’aggiunta di un ingresso che permette di fare operazioni col riporto di ingresso:
Lo schema circuitale è il seguente.
Adder a in binario naturale intero
Note
Tramite i blocchi half adder e full adder possiamo creare un blocco che ci permette di eseguire la somma tra due numeri interi. Il simbolo funzionale (estendibile a ) è il seguente.
Lo schema circuitale è il seguente.
Per quanto riguarda l’algebra in complemento a due su bit, per la somma si opera in binario naturale intero, e si verifica overflow se e hanno segno concorde ed il risultato ha segno discorde.
Per la sottrazione si complementa a due l’operando , e poi si opera in binario naturale intero. Si verifica overflow se e hanno segno concorde ed il risultato ha segno discorde.
Quindi un sommatore/sottrattore in complemento a due è un sommatore binario naturale intero a bit con un ingresso , un ingresso di segnale add/sub, una batteria di xor sull’ingresso per effettuare il complemento ad uno, e una rete combinatoria per generare il segnale di overflow.
ALU
Note
Il blocco funzionale ALU (Arithmetic Logic Unit) è un blocco funzionale che permette di eseguire le operazioni
AND,OR,add,subtract,set less thaneNOR. Funziona inserendo nelle righe di controllo dell’ALU un codice associato alla funzione da svolgere. Di seguito il simbolo funzionale accompagnato dai valori notevoli.
Per quanto riguarda i numeri relativi, si usa il complemento a due. Le ALU sono normalmente in grado di operare sia con numeri interi naturali, che con numeri interi relativi rappresentati in complemento a due.
I numeri reali sono descritti dallo standard IEEE 754 per la rappresentazione in virgola mobile. Esistono delle ALU in grado di effettuare i calcoli aritmetici con i numeri reali, oltre che con i numeri interi.
Considerando un ingresso per 







