Skip to content

Multiplexer, decoder, demultiplexer ed encoder

Una mappa di Karnaugh è usabile con funzioni che arrivano al massimo a 4/5 variabili. Per funzioni più complesse conviene usare un metodo gerarchico: si combinano blocchi più semplici per realizzare circuiti complessi (un po’ come passare dall’assembly al C).

Funzione a 4 ingressi di dato (aa, bb, cc, dd) + 2 ingressi di controllo (s0s_0 e s1s_1).

Possiamo usare il multiplexer 2 a 1 che già conosciamo per creare questo componente più complesso. Per esempio:

  • 1° livello: si sceglie tra aa e bb e tra cc e dd usando s0s_0;
  • 2° livello: si sceglie tra i 2 rimasti usando s1s_1;

Circuito del multiplexer 4 a 1

Il simbolo che si usa per rappresentare il multiplexer è:

Simbolo del multiplexer 4 a 1

Esempi di utilizzo:

  • condivisione di risorse;
  • realizzazione dispositivi programmabili;
  • selezione di celle di memoria;

Decodificare significa passare da nn ingressi a mm uscite, dove:

  • nm2nn \leq m \leq 2^n;
  • ad ogni valore di ingresso corrisponde un unico valore in uscita;

Con mm cifre si possono rappresentare 2m2^m codici, ma se ne usano solo 2n2^n.

Decodifica 2 a 1: la prima uscita vale 1 se l’ingresso vale 0, la seconda vale 1 se l’ingresso vale 1.

Circuito del decoder 2 a 1

Il simbolo che si usa per rappresentare il decoder è:

Simbolo del decoder 2 a 1

Da notare che le combinazioni di uscita con tutti 0 o tutti 1 non vengono utilizzate.

Esempio di utilizzo: scelta di celle di memoria:

  • il processore mette sul bus un indirizzo a nn bit;
  • metà dei bit indirizza le righe con una decodifica;
  • l’altra metà sceglie una colonna con un multiplexer;

Prende in ingresso un dato e lo indirizza su una delle uscite selezionate da log2(n)\lceil \log_2(n) \rceil bit di controllo. Le uscite non selezionate hanno valore 0.

Simbolo del demultiplexer 1 a 4

Fa il lavoro contrario del decoder: riduce nn ingressi a mm uscite.

Esempio di encoder 8 a 3:

Tabella encoder 8 a 3

Priority encoder: ritorna il codice binario dell’ingresso con valore 1 avente priorità più alta. Se più ingressi hanno valore 1, restituisce quello con priorità maggiore.