Multiplexer, demultiplexer, encoder e decoder
Multiplexer, demultiplexer, encoder e decoder sono circuiti combinatori fondamentali per selezionare, instradare e codificare segnali digitali. Li troviamo nei sistemi a microprocessore, nelle memorie, nei bus dati, nelle comunicazioni digitali e in moltissimi circuiti integrati.
Quattro funzioni fondamentali
MUX
Seleziona uno tra più ingressi e lo porta a una sola uscita.
DEMUX
Instrada un singolo ingresso verso una tra più uscite.
Encoder
Converte la linea attiva in un codice binario.
Decoder
Converte un codice binario nell’attivazione di una specifica uscita.
Multiplexer: scegliere un segnale
Il multiplexer, abbreviato MUX, funziona come un commutatore digitale controllato. Possiede diversi ingressi dati, uno o più ingressi di selezione e normalmente una sola uscita.
Un MUX 2:1 dispone di due ingressi D0 e D1 e di un ingresso di selezione S. Se S vale 0 viene selezionato D0; se S vale 1 viene selezionato D1.
| S | Uscita Y |
|---|---|
| 0 | D0 |
| 1 | D1 |
Multiplexer 4:1
Un MUX 4:1 possiede quattro ingressi dati D0-D3, due linee di selezione S1 e S0 e una sola uscita. Due bit di selezione consentono infatti di rappresentare quattro combinazioni.
| S1 | S0 | Ingresso selezionato | Y |
|---|---|---|---|
| 0 | 0 | D0 | D0 |
| 0 | 1 | D1 | D1 |
| 1 | 0 | D2 | D2 |
| 1 | 1 | D3 | D3 |
Demultiplexer: distribuire un segnale
Il demultiplexer svolge concettualmente l’operazione opposta al MUX. Un ingresso dati viene instradato verso una delle diverse uscite in base alle linee di selezione.
In un DEMUX 1:4 abbiamo un ingresso D, due selezioni S1 e S0 e quattro uscite Y0-Y3.
| S1 | S0 | Uscita che riceve D |
|---|---|---|
| 0 | 0 | Y0 |
| 0 | 1 | Y1 |
| 1 | 0 | Y2 |
| 1 | 1 | Y3 |
Encoder: da una linea a un codice binario
Un encoder converte l’attivazione di uno tra diversi ingressi in un codice binario. Un encoder 4:2 possiede quattro ingressi e due bit di uscita.
| Ingresso attivo | Y1 | Y0 |
|---|---|---|
| D0 | 0 | 0 |
| D1 | 0 | 1 |
| D2 | 1 | 0 |
| D3 | 1 | 1 |
Priority encoder
Il priority encoder assegna una priorità agli ingressi. Se più linee sono attive nello stesso momento, viene codificata quella con priorità maggiore.
Questa tecnica è molto utile nei sistemi in cui più dispositivi possono richiedere contemporaneamente l’attenzione della logica di controllo.
Decoder: dal codice binario alle uscite
Il decoder esegue l’operazione inversa dell’encoder: riceve un codice binario e attiva l’uscita corrispondente. Con n ingressi binari si possono indirizzare fino a 2n uscite.
I decoder vengono usati, per esempio, nella selezione di dispositivi, nell’indirizzamento delle memorie e nella decodifica di codici digitali.
Decoder 2:4
Con due ingressi A1 e A0 possiamo selezionare una tra quattro uscite. Nel caso active-high, una sola uscita assume livello logico 1 per ciascuna combinazione valida.
| A1 | A0 | Y0 | Y1 | Y2 | Y3 |
|---|---|---|---|---|---|
| 0 | 0 | 1 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 0 | 0 |
| 1 | 0 | 0 | 0 | 1 | 0 |
| 1 | 1 | 0 | 0 | 0 | 1 |
Multiplexer e demultiplexer a confronto
Encoder e decoder a confronto
MUX, DEMUX, encoder e decoder: confronto
| Circuito | Trasformazione | Controllo | Funzione |
|---|---|---|---|
| MUX | Molti ingressi → una uscita | Linee Select | Seleziona un segnale |
| DEMUX | Un ingresso → molte uscite | Linee Select | Instrada un segnale |
| Encoder | Linea attiva → codice | Ingressi | Codifica |
| Decoder | Codice → linea attiva | Codice binario | Decodifica/seleziona |
Applicazioni pratiche
| Applicazione | Circuito |
|---|---|
| Selezione tra più sorgenti dati | Multiplexer |
| Instradamento di un segnale verso più destinazioni | Demultiplexer |
| Arbitraggio con più richieste | Priority encoder |
| Selezione chip o periferica | Decoder |
| Indirizzamento memoria | Decoder / MUX |
| Selezione dei canali di misura | Multiplexer |
Errori comuni
- confondere multiplexer e demultiplexer;
- confondere encoder e decoder;
- pensare che MUX e encoder svolgano la stessa funzione;
- dimenticare che n linee di selezione possono scegliere fino a 2n possibilità;
- usare un encoder semplice con più ingressi contemporaneamente attivi;
- non controllare se gli ingressi o le uscite sono active-low;
- dimenticare l’eventuale ingresso Enable presente negli integrati reali;
- confondere il dato del DEMUX con le sue linee di selezione;
- ignorare i ritardi di propagazione;
- pensare che questi circuiti memorizzino automaticamente lo stato precedente.

