Multiplexer

Il multiplexer è un selettore, dati n ingressi vi è una singola uscita, e un certo numero di ingressi, detto ingressi di controllo per selezionare uno dei input.

In questo caso, vediamo prima l'inscatolamento del multiplexer e vediamo di fare alcuni commenti al riguardo, successivamente vediamo al suo interno com'è fatto.
Pasted image 20230528102938.png
L'immagine sopra mostra la struttura di un multiplexer con 2 input e un unico output.
Un terzo ingresso (nell'immagine S) è l'ingresso di controllo che consente al multiplexer di selezionare uno dei due ingressi.

Quindi C, in base al valore di S, avrà il valore di A oppure il valore di B.

Come si determina il numero di ingressi di controllo?

Il numero di ingressi di controllo è determinato dal numero di input tra cui si vuole scegliere. Nel caso sopra abbiamo solo 2 ingressi, e per scegliere tra di loro ne basta uno solo: S = 0, o S = 1, ci consente di scegliere tra i due input da mandare in uscita.

Nota

L'inscatolamento del multiplexer è diverso da quello del decoder, quello del decoder era un quadrato, mentre i bordi della scatola del multiplexer sono arrotondati.

Differenze con il decoder
...

MultiplexerDecoder
Ingressi2n
Output1
FunzioneSceglie uno dei due ingressi da dirigere verso l'output grazie ad SCodifica una uscita su in base ai valori in input

Struttura multiplexer
...

Costruiamo un multiplexer con due linee di input, una di controllo e una di uscita.

photo_2023-05-28_10-50-09.jpg

Se S = 0, viene selezionata (si "accende", viene posta a 1) la porta AND collegata a ,che messa in OR con l'altra porta AND ("spenta", posta a 0). Le porte AND non saranno mai entrambe accese, quindi verrà sempre scelto uno dei due input.

Osserviamo meglio il multiplexer:
photo_2023-05-28_11-03-41.jpg
L'ingresso di controllo assomiglia ad un circuito combinatorio che abbiamo già visto: il decoder.
Di fatti l'ingresso di controllo e le porte AND, codificano una uscita, che viene poi messa in AND con ogni singolo input, la porta OR, infine manda in uscita uno degli ingressi.

Con una notazione più compatta il multiplexer può essere implementato come segue:
Pasted image 20230528110552.png
ovvero il pallino dell'invertitore è direttamente incluso nella porta AND collegata ad A.

Esempio: multiplexer con 8 ingressi
...

Avendo 8 ingressi (8 bit in ingresso) dovremmo selezionare uno di questi 8 ingressi, per farlo ci servono 3 bit, poiché , questi tre bit sono gli ingressi di controllo di cui necessiteremo.
Pasted image 20230528110923.png
Nel caso superiore, il multiplexer ci consente di selezionare tra un certo numero di ingressi, tuttavia non sempre è quello che vogliamo.
Immaginiamo che in ogni ingresso giunga il risultato di una operazione, per esempio in giunge il risultato di una somma, in il risultato di una differenza, e così via, in questo caso il selettore ci consente di mandare in output il risultato di una di queste 8 operazioni svolte.

Per esempio, per un circuito che implementa effettivamente la somma di un'operazione come la somma, il circuito sopra sarebbe poco utile.
Riprendiamo il circuito precedente con due ingressi:
photo_2023-05-28_11-20-45.jpg
Immaginiamo che i valori di S siano i seguenti:

  • S = 0: non fare niente tra e
  • S = 1: fai lo somma tra e
    Immaginiamo che S sia posto a 1 e immaginiamo anche che i bit e siano i bit meno significativi di due numeri diversi:

Verrà mandato in uscita la somma tra e , per il momento trascurate il
come fa a fare la somma.

Adesso supponiamo di voler fare la somma anche tra e , ecco come diventa il circuito:
photo_2023-05-28_11-35-43.jpg
aggiungiamo un altro multiplexer che fa il medesimo lavoro di quello che era già presente, e facciamo si che l'ingresso di controllo S sia condiviso tra i due, in modo tale che la somma venga effettuata per tutti i bit, o non venga fatta per nessuno.

Con un ragionamento del tutto analogo, possiamo creare un circuito che fa la somma tra due numeri ognuno con un certo numero di bit (per esempio 64 bit):
photo_2023-05-28_11-20-46.jpg

Questi ragionamenti pongono le basi per costruire circuiti logici che fanno somme tra bit: gli addizionatori.