bitGateLab Digital · Impara
Italiano
Apri il simulatore

Impara › Argomento 8

Multiplexer, decodificatori e codificatori spiegati

8 min di lettura · Team bitGateLab

I blocchi combinatori di media complessità sono i pezzi con cui si costruisce quasi ogni sistema digitale: il multiplexer sceglie un dato fra tanti, il demultiplexer instrada un dato verso una destinazione, il decodificatore attiva una sola linea in base a un numero binario e il codificatore fa il contrario. Qui vedrai le loro equazioni, le loro tabelle di verità e due applicazioni che compaiono in tutti gli esami: realizzare una funzione logica con un multiplexer e progettare un decodificatore per display a 7 segmenti.

Il multiplexer (MUX)

Un multiplexer con 2n ingressi dati ha n ingressi di selezione e un'uscita. Il numero binario sulle linee di selezione indica quale ingresso dati passa all'uscita. Il più semplice è il MUX 2 a 1:

Y = S·I0 + S·I1

Con S = 0 l'uscita copia I0; con S = 1 copia I1. Il MUX 4 a 1 usa due linee di selezione S1 S0 e ogni ingresso dati viene moltiplicato per il mintermine di selezione che gli corrisponde:

Y = S1·S0·I0 + S1·S0·I1 + S1·S0·I2 + S1·S0·I3

S1S0Y
00I0
01I1
10I2
11I3

Ogni termine è una AND dell'ingresso dati con le linee di selezione (dirette o negate), e tutte confluiscono in una OR.

Realizzare una funzione con un MUX

Poiché il MUX contiene già tutti i mintermini delle sue variabili di selezione, funziona da "funzione programmabile". Con un MUX a 2n ingressi puoi realizzare qualsiasi funzione di n variabili mettendo 0 o 1 su ogni ingresso dati. Meglio ancora: con lo stesso MUX puoi realizzare una funzione di n + 1 variabili se colleghi la variabile rimanente (o la sua negazione) agli ingressi dati.

Esempio: realizza F(A, B, C) = Σm(1, 2, 6, 7) con un MUX 4 a 1, usando A e B come selezione (A = S1, B = S0).

  1. Raggruppa la tabella di verità a coppie con lo stesso valore di A B e guarda come F dipende da C.
  2. AB = 00: m0 = 0 (C = 0), m1 = 1 (C = 1). F = C, quindi I0 = C.
  3. AB = 01: m2 = 1 (C = 0), m3 = 0 (C = 1). F = C, quindi I1 = C.
  4. AB = 10: m4 = 0, m5 = 0. I2 = 0.
  5. AB = 11: m6 = 1, m7 = 1. I3 = 1.

Verifica con A = 0, B = 1, C = 0 (mintermine 2): la selezione 01 sceglie I1 = C = 1. Corretto, m2 appartiene alla funzione.

Il demultiplexer e il decodificatore

Il demultiplexer (DEMUX) 1 a 4 prende un dato D e lo invia a una delle quattro uscite in base a S1 S0; le altre restano a 0: Y0 = D·S1·S0, Y1 = D·S1·S0, Y2 = D·S1·S0, Y3 = D·S1·S0.

Se nel DEMUX fissi D = 1 e lo chiami "abilitazione", ottieni un decodificatore: n ingressi e 2n uscite, delle quali una sola è attiva, quella che corrisponde al numero in ingresso. Un decodificatore 3 a 8 genera gli 8 mintermini di tre variabili. Per questo qualsiasi funzione di tre variabili si realizza con un decodificatore e una porta OR che riunisca le uscite dei suoi mintermini.

Esempio: sommatore completo con un decodificatore 3 a 8. Ingressi A, B e Cin.

  • Somma S = Σm(1, 2, 4, 7): OR a 4 ingressi con le uscite Y1, Y2, Y4, Y7.
  • Riporto Cout = Σm(3, 5, 6, 7): OR a 4 ingressi con Y3, Y5, Y6, Y7.

Controlla un caso: A = 1, B = 1, Cin = 0 è il numero 110 = 6. Si attiva solo Y6; Y6 non è nella OR di S (S = 0) ma è in quella di Cout (Cout = 1). Infatti 1 + 1 + 0 = 10 in binario.

Il tipico decodificatore 3 a 8 della famiglia 74HC ha uscite attive basse: l'uscita selezionata va a 0 e le altre a 1. In tal caso la OR dei mintermini diventa una NAND delle stesse uscite, per la legge di De Morgan.

Il codificatore a priorità

Il codificatore esegue l'operazione inversa: a partire da 2n linee fornisce il numero binario a n bit della linea attiva. Il problema è che cosa fare se se ne attivano due contemporaneamente; la soluzione pratica è il codificatore a priorità, che fornisce il numero della linea attiva più alta. Per 4 ingressi da D3 (quello a priorità maggiore) a D0:

Y1 = D3 + D2, Y0 = D3 + D2·D1, V = D3 + D2 + D1 + D0

L'uscita V ("valido") indica che c'è almeno un ingresso attivo; senza di essa non potresti distinguere "D0 attivo" da "nessuno attivo", perché entrambi danno Y1 Y0 = 00. Prova con D2 = D1 = 1: Y1 = 1 e Y0 = 0 + 0·1 = 0, ossia 10 = 2. Vince D2, come deve essere.

Decodificatore da BCD a 7 segmenti

a b c d e f g
Nomi dei segmenti di un display a 7 segmenti.

Un display a 7 segmenti ha un LED per ogni segmento. Il decodificatore riceve una cifra BCD (A B C D, con A come bit più significativo) e accende i segmenti che disegnano quella cifra. Per un display a catodo comune, 1 significa segmento acceso:

CifraABCDabcdefg
000001111110
100010110000
200101101101
300111111001
401000110011
501011011011
601101011111
701111110000
810001111111
910011111011

I codici da 1010 a 1111 non sono BCD validi, quindi vengono trattati come condizioni di indifferenza (X) nella mappa di Karnaugh. Questo semplifica molto ogni segmento.

Segmento a: vale 0 solo nelle cifre 1 e 4. Nella mappa a 4 variabili, con X da 10 a 15, i gruppi più grandi sono: A (8 celle con le X), C (8 celle), B·D (mintermini 5, 7, 13, 15) e B·D (i quattro angoli: 0, 2, 8, 10).

a = A + C + B·D + B·D

Verifica il 4 (0100): A = 0, C = 0, B·D = 1·0 = 0, B·D = 0·1 = 0. Risultato 0: il segmento a resta spento, corretto.

Se il display è ad anodo comune, ogni segmento si accende con 0, quindi tutte le uscite vanno invertite.

Errori comuni

Provalo nel simulatore

Confronta la tabella di verità della funzione con la versione realizzata con il multiplexer.

  1. Crea una tabella di verità con tre ingressi A, B, C e segna F = 1 nelle righe 1, 2, 6 e 7.
  2. Inserisci nell'editor un multiplexer 4 a 1 (oppure costruiscilo con quattro AND, due NOT e una OR a quattro ingressi) e collega A e B alla selezione.
  3. Collega C, la negazione di C, uno 0 fisso e un 1 fisso agli ingressi dati, in quest'ordine.
  4. Cambia gli ingressi percorrendo le otto combinazioni e osserva che l'uscita coincide con la tabella.
  5. Ripeti con il segmento a del display: inserisci la sua colonna in una tabella a 4 variabili, segna le righe da 10 a 15 come X e controlla i gruppi proposti dalla mappa di Karnaugh.

Esercizi

  1. Realizza F(A, B, C) = Σm(0, 3, 5, 6) con un MUX 4 a 1 usando A e B come selezione.
    Risposta

    AB = 00: m0 = 1, m1 = 0, I0 = C. AB = 01: m2 = 0, m3 = 1, I1 = C. AB = 10: m4 = 0, m5 = 1, I2 = C. AB = 11: m6 = 1, m7 = 0, I3 = C. È la funzione di parità pari (vale 1 quando c'è un numero pari di uni): F = A ⊕ B ⊕ C.

  2. Quante linee di selezione servono a un MUX a 16 ingressi e quante variabili può avere al massimo la funzione che realizza?
    Risposta

    4 linee di selezione (24 = 16). Collegando la variabile rimanente ai dati può realizzare qualsiasi funzione fino a 5 variabili.

  3. Ricava l'equazione del segmento e usando le combinazioni da 10 a 15 come condizioni di indifferenza.
    Risposta

    e = 1 in 0, 2, 6 e 8. Gruppi: B·D (0, 2, 8, 10) e C·D (2, 6, 10, 14). Risultato: e = B·D + C·D = D·(B + C).

  4. Nel codificatore a priorità a 4 ingressi, quale uscita si ottiene con D3 = 0, D2 = 0, D1 = 1, D0 = 1?
    Risposta

    Y1 = 0 + 0 = 0, Y0 = 0 + 1·1 = 1, V = 1. Uscita 01: D1 prevale su D0.