Nell'ambito dell'elettronica digitale occorre studiare e saper conoscere i circuiti logici derivati, più o meno complessi, che costituiscono gli elementi base dei sistemi digitali.
Tali circuiti si distinguono in due categorie:
- i circuiti combinatori, il cui studio è effettuato in questo capitolo
- i circuiti sequenziali, il cui studio è effettuato nel capitolo successivo
I circuiti combinatori sono i circuiti logici digitali in cui l'uscita o le uscite in un certo istante dipendono solo dal valore degli ingressi in quello stesso momento.
In pratica l'uscita non dipende da quello che è accaduto prima, sono circuiti senza memoria, senza “stato”.
I più comuni circuiti combinatori sono:
- codificatori (encoder)
- decodificatori (decoder)
- multiplexer e demultiplexer
- sommatori
Codificatori (encoder)
Sono circuiti combinatori aventi n ingressi ed m uscite. In uscita forniscono un opportuno codice in binario a seconda di quale è la linea di ingresso “attivata”.
Ad esempio in un codificatore con tre linee binarie di uscita (m=3) si possono avere al massimo n=23=8 linee di ingresso.
In generale, con m linee di uscita, si possono avere n=2m linee di ingresso differenti.
Supponiamo che le linee di ingresso siano attivate alte (ossia con ingresso pari a 1) la tavola della verità è la seguente:
I7 | I6 | I5 | I4 | I3 | I2 | I1 | I0 | A | B | C |
---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 |
0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 |
0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 |
0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
Nella tavola della verità le linee indicate con I7 fino a I0 sono le 8 linee di ingresso, mentre A B e C sono le uscite
Se gli ingressi attivati sono più di uno, l'uscita potrebbe assumere una configurazione binaria indesiderata. Per evitare che questo accada, i codificatori in commercio sono "con priorità": se si attiva più di una linea in ingresso, l'uscita assumerà la configurazione associata all'ingresso con più priorità, tra quelli attivati.
Pertanto la tabella della verità definitiva assume la forma:
I7 | I6 | I5 | I4 | I3 | I2 | I1 | I0 | A | B | C |
---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 1 | X | 0 | 0 | 1 |
0 | 0 | 0 | 0 | 0 | 1 | X | X | 0 | 1 | 0 |
0 | 0 | 0 | 0 | 1 | X | X | X | 0 | 1 | 1 |
0 | 0 | 0 | 1 | X | X | X | X | 1 | 0 | 0 |
0 | 0 | 1 | X | X | X | X | X | 1 | 0 | 1 |
0 | 1 | X | X | X | X | X | X | 1 | 1 | 0 |
1 | X | X | X | X | X | X | X | 1 | 1 | 1 |
in cui le X (don't care) indicano che non ci interessa quanto vale l'ingresso con priorità più bassa se ne è attivo uno con priorità maggiore.
Lo schema a blocchi dell'encoder è il seguente:
Per realizzare l'encoder, basta applicare le regole della sintesi delle funzioni logiche, per ciascuna delle tre uscite.
In pratica si ottiene:
A= I7 + I6 + I5 + I4
B= I7 + I6 + I3 + I2
C= I7 + I5 + I3 + I1
Pertanto si ha il seguente schema logico
Questa immagine proviene dal sito: www.electronics-tutorials.ws
Applicazioni
Codificatori per la tastiera
Gli encoder a priorità posso utilizzarli per ridurre il numero di fili necessari in un circuito o applicazioni che hanno ingressi multipli.
Ad esempio, supponiamo che un computer ha bisogno di leggere le 104 tasti di una tastiera QWERTY standard in cui un solo tasto possa essere premuto alla volta (è chiaramente un esempio: spesso devono essere premuti più tasti)
Un modo potrebbe essere quello di collegare tutti i fili 104 dei vari tasti direttamente al computer, ma questo sarebbe poco pratico per un PC, ma un altro modo migliore sarebbe quella di utilizzare un encoder con priorità.
I 104 singoli pulsanti o tasti potrebbero essere codificato in un codice ASCII standard di soli 7 bit (0-127 decimale) per rappresentare ogni tasto o il carattere della tastiera e poi immessa come una molto più piccola 7-bit di codice BCD direttamente al computer .
Codificatori per posizione
Un'altra applicazione più comune è un controllo posizionale magnetico come quello usato su navi o robot, ecc.
Qui la posizione angolare o il moto rotatorio di una bussola viene convertito in un codice digitale da un codificatore ed immesso al computer sistemi per fornire dati di navigazione e un esempio di uno semplice a 8 posizioni a 3-bit encoder uscita bussola è illustrato di seguito.
Decodificatori (decoder)
Sono circuiti combinatori aventi n ingressi ed m uscite. In ingresso fornendo opportuno codice in binario si stabilisce quale è l'unica linea di uscita che viene “attivata”.
Ad esempio in un decodificatore con otto linee binarie di uscita (m=8) si possono avere al massimo n=log28=3 linee di ingresso.
Supponiamo che le linee di uscita siano attivate alte (ossia con uscita pari a 1) la tavola della verità è la seguente:
A | B | C | U7 | U6 | U5 | U4 | U3 | U2 | U1 | U0 |
---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Nella tavola della verità le linee indicate con U7 fino a U0 sono le 8 linee di uscita, mentre A B e C sono gli ingressi.
Lo schema a blocchi del decoder è il seguente:
Per realizzare il decoder, basta applicare le regole della sintesi delle funzioni logiche, per ciascuna delle tre uscite.
In pratica si ottiene:
U0=A B C
U1=A B C
U2=A B C
U3=A B C
U4=A B C
U5=A B C
U6=A B C
U7=A B C
Pertanto si ha il seguente schema logico
Multiplexer
I Multiplexer sono circuiti logici combinatori con n ingressi dato e una sola linea di uscita. La sua funzione è quella di convogliare sull'uscita il dato presente su una e una sola linea di ingresso, a seconda del valore presente su una delle sue m linee di selezione.
In generale, con m linee di selezione, si possono multiplexare n=2m linee di ingresso differenti in una linea di uscita.
Nella figura che segue è mostrato un multiplexer con otto linee di ingresso, indicate con A, B, C, D, E, F, G, H tre linee di selezione indicate con S0 e S1 e S2 e una linea di uscita Z
Questa immagine proviene dal sito: http://en.wikipedia.org/wiki/Multiplexer
La tavola della verità di un multiplexer 8-3 si può fare come segue:
Ingressi selezione | Uscita | ||
---|---|---|---|
S2 | S1 | S0 | Z |
0 | 0 | 0 | A |
0 | 0 | 1 | B |
0 | 1 | 0 | C |
0 | 1 | 1 | D |
1 | 0 | 0 | E |
1 | 0 | 1 | F |
1 | 1 | 0 | G |
1 | 1 | 1 | H |
Nella figura che segue è mostrato un multiplexer con quattro linee di ingresso, indicate con A, B, C, D, duelinee di selezione indicate con S0 e S1 e una linea di uscita Z
Questa immagine proviene dal sito: http://en.wikipedia.org/wiki/Multiplexer
La tavola della verità di un multiplexer 4-2 si può fare come segue:
Ingressi selezione | Uscita | |
---|---|---|
S1 | S0 | Z |
0 | 0 | A |
0 | 1 | B |
1 | 0 | C |
1 | 1 | D |
Un multiplexer 2-1
Questa immagine proviene dal sito: http://en.wikipedia.org/wiki/Multiplexer
che si comporta in sostanza come una semplice porta logica la cui uscita Y assume il valore di uno dei due ingressi A o B in base al valore del terzo ingresso di selezione S. L'equazione booleana è:
In generale con n linee di ingresso ci devono essere almeno m=log2n linee di selezione.
Applicazioni
Generatore di funzioni logiche
Attraverso un multiplexer si può esprimere la sintesi di una qualsiasi funzione logica.
Infatti se si vuole fare la sintesi della funzione espressa in questo modo:
Y= S2 S1 S0 + S2 S1S0 + S2S1S0
Si tratta di una funzione logica di tre variabili di ingresso, espressa in prima forma canonica (somma di mintermini).
Pertanto basterà porre:
D2=D4=D7=1
e
D0=D1=D3=D5=D6=0
Demultiplexer
I Demultiplexer sono circuiti logici combinatori con una sola linea dato in ingresso e n linee di uscita. La sua funzione è quella di convogliare il dato in ingresso su una sola linea di uscita, a seconda del valore presente su una delle sue m linee di selezione.
In generale, con m linee di selezione, si possono demultiplexare n=2m linee di uscita differenti.
Pertanto si ha il seguente schema a blocchi per un demultiplexer con una linea di ingresso dati, tre linee di selezione e 8 linee di uscita.
Nel seguente schema logico si illustra un demultiplexer con due linee di selezione, quattro linee di uscita descritto dalla seguente tavola della verità funzionale.
La tavola della verità di un demultiplexer 4-2 si può fare come segue:
Ingressi selezione | Uscita | ||||
---|---|---|---|---|---|
S1 | S0 | Y3 | Y2 | Y1 | Y0 |
0 | 0 | 0 | 0 | 0 | D |
0 | 1 | 0 | 0 | D | 0 |
1 | 0 | 0 | D | 0 | 0 |
1 | 1 | D | 0 | 0 | 0 |
Nella tavola di cui sopra si è supposto di avere le uscite basse se non selezionate.
D è il valore presente nell'unico ingresso dati.
I demultiplexer, così come i multiplexer, sono utilizzati nei sistemi di distribuzione dati e nei sistemi di telecomunicazioni con tecniche digitale.
Sommatori
I sommatori sono circuiti logici combinatori che effettuano la somma, bit a bit, su numeri rappresentati in forma binaria.
Il più semplice effettua la somma su due numeri binari, A e B, costituiti ciascuno da un solo bit.
Il risultato si indica con S (somma) e da un eventuale riporto (C: carry).
Non bisogna mai confondere la somma logica dell'operatore OR con la somma aritmetica, ancorché effettuata in binario.
Se non si tiene conto di un eventuale riporto precedente si ha un semi-sommatore (half-hadder HA), altrimenti si ha un sommatore completo (full-adder FA) dove si tiene conto anche dell'eventuale riporto proveniente da una operazione precedente.
Semi-sommatore
Il semi-sommatore, il più semplice, è in grado di sommare due numeri binari A e B ciascuno costituiti da un solo bit.
La tavola della verità che ne descrive il funzionamento è la seguente:
Ingressi | Uscite | ||
---|---|---|---|
A | B | S | C |
0 | 0 | 0 | 0 |
0 | 1 | 1 | 0 |
1 | 0 | 1 | 0 |
1 | 1 | 0 | 1 |
Dalla tavola della verità si può dedurre la funzione logica necessaria per ottenere l'uscita S somma e l'uscita C (carry).
Il bit S si può ottenere con la porta logica EX-OR tra A e B -> S= A EXOR B = A B
e il bit C si può ottenere con la porta logica AND tra A e B -> C = A B
Ecco dunque lo schema logico:
Questa immagine proviene dal sito: http://en.wikipedia.org/wiki/Half-adder
Ecco lo schema a blocchi:
Sommatore completo
Il sommatore completo è in grado di sommare due numeri binari A e B ciascuno costituiti da un solo bit, ma tiene conto anche dell'eventuale riporto dovuto ad una somma precedente.
La tavola della verità che ne descrive il funzionamento è la seguente:
Ingressi | Uscite | |||
---|---|---|---|---|
Ci | A | B | Si | Ci+1 |
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 |
Pertanto per ottenere Si e Ci+1 si possono usare le regole di sintesi delle mappe di Karnaugh
Pertanto si giunge al seguente schema logico:
Questa immagine proviene dal sito: http://en.wikipedia.org/wiki/Half-adder
Ecco lo schema a blocchi:
Questa immagine proviene dal sito: http://en.wikipedia.org/wiki/Half-adder
Se si dispone inoltre di più blocchi sommatori FA, si possono far lavorare in parallelo, per sommare due stringhe di n bit.
Per esempio per sommare due stringhe di 4 bit ciascuna (n=4) lo schema a blocchi è il seguente:
Questa immagine proviene dal sito: http://en.wikipedia.org/wiki/Half-adder
Il comportamento è piuttosto lento poiché il riporto deve attendere il calcolo del riporto del full-adder precedente. Il gate delay (ritardo di propagazione) risente dunque del gate delay di ogni singolo full adder.