Come funziona una CPU: multiplexer #0.3.2

Nell’articolo di oggi analizzeremo nel dettaglio i multiplexer.

Negli articoli precedenti abbiamo visto:

Il multiplexer, pilotato dall’ingresso p, detto segnale di controllo, seleziona una delle k parole in ingresso portandola in uscita.

Connettendo più multiplexer semplici in cascata si può avere un maggior numero di parole in ingresso.

L’uso di un multiplexer è un modo veloce (ma non efficiente) per implementare il comportamento di una generica funzione booleana data: basta porre agli ingressi con parallelismo di m = 1 bit tutti i possibili 2n valori restituiti dalla funzione, e ai segnali di controllo gli n ingressi valutati dalla funzione.

Questo dispositivo di tipo combinatorio è un commutatore che riceve in ingresso k-dati, ciascuno espresso su m-bit, ne seleziona uno in base al valore del segnale di selezione S ricevuto in ingresso e lo riproduce in uscita. Detto in soldoni, il Multiplexer fa in modo che l’uscita Z assuma uno tra i valori (X0. . . Xk-1).

multiplexer

Come fa a sceglierne uno in particolare? Semplicemente, sceglie quello suggeritogli dal segnale di selezione S. Quest ultimo deve essere espresso su un numero di bit che gli consenta di rappresentare uno tra i k indici dei valori di ingresso (per indicare al dispositivo se scegliere il primo ingresso o il secondo o il k-esimo).

Pertanto, il numero di bit su cui deve essere espresso il segnale di selezione S è pari a:

p = nbit(S) = log2 k

Equivalentemente, il numero massimo di ingressi che può ricevere un Multiplexer avente un segnale di selezione S espresso su p-bit è pari a: k = 2^p

Multiplexer 2×1

multiplexer

Si noti che il numero di bit del segnale di selezione S è indipendente dal numero di bit m degli ingressi.

Nella figura sotto riportata è raffigurato lo schema logico di un Multiplexer 2×1 (2 ingressi ed 1 uscita) i cui ingressi sono rappresentati su 4-bit. A livello di registri, lo schema di questo Multiplexer è analogo a per ingressi ad 1-bit (due porte AND ed una OR). L’insieme di celle riceve, a coppie di bit corrispondenti, gli ingressi X0 ed X1 e produce bit per bit l’uscita Z.

multiplexer

Multiplexer 8×1

multiplexer

Per questo tipo di Multiplexer è stato aumentato il numero d’ingressi k, anziché il numero di bit m su cui questi sono espressi. Pertanto, il numero di bit con cui esprimere il segnale di selezione S dovrà aumentare a sua volta (essendoci 8 ingressi si hanno 3 bit per S).

Il Multiplexer 8×1 ha uno schema a livello di registri ben diverso da quello del Multiplexer 2×1, tant’è che esso è costituito da 7 Multiplexer 2×1 connessi su più livelli (tanti quanti sono i bit di S).

Il primo livello contiene chiaramente un numero di Multiplexer 2×1 tale da garantire l’accesso a 8 ingressi. I livelli successivi contengono un numero di Multiplexer 2×1 decrescente secondo le potenze di 2 (questa configurazione, ad albero binario se vogliamo, vale solo in questo specifico caso perché varia col variare del numero di ingressi ed uscite).

Quindi è possibile quindi realizzare un Multiplexer  8×1, a livello puramente modulare, con 7 Multiplexer 2×1 ma questo comporta diversi svantaggi sia in termini di costo che di velocità del circuito (più livelli ci sono, più il ritardo del circuito aumenta a parità di ritardo fra i vari moduli). Risulta se non altro vantaggioso per via della semplicità di progettazione (sfruttando e connettendo tra loro moduli preesistenti).

Esiste anche un’alternativa che consiste nel progettare in maniera “classica” il circuito combinatorio desiderato. Questo comporta chiaramente delle difficoltà a livello di progetto, ovvero l’elaborazione e la sintesi della tavola di verità del circuito che in questo caso avrebbe ben 8 ∗ 2^8= 2048 righe perché per ogni combinazione di ingressi (2^8) viene fornito un output per ogni possibile valore di S (8 in totale, tanti quanti gli ingressi). Tuttavia, ciò consentirebbe di ottenere un circuito equivalente minimo su 2 livelli il ché risulterebbe notevolmente vantaggioso.

Tavola di verità di un Multiplexer, n-righe

Volendo stabilire una regola generale per la determinazione del numero di righe della tavola di verità di un Multiplexer con k ingressi, otteniamo che:

nrighe = k ∗ 2^k

Multiplexer: uso nella sintesi di un circuito

Ci si può servire di un Multiplexer per sintetizzare un qualunque circuito combinatorio di cui si conosce la tavola di verità. Infatti è possibile fare in modo che ad una certa configurazione dei bit del segnale di selezione S corrisponda uno solo tra i k-ingressi del Multiplexer, di valore 0 oppure 1 (in base a quanto riportato sulla tavola di verità), il quale verrà riprodotto in uscita. Ad esempio: si consideri un Multiplexer il cui segnale S è espresso su 4-bit. Si avranno quindi 16 possibili configurazioni di S a ciascuna delle quali corrisponderà uno specifico ingresso (tra i k=16 possibili) che verrà riprodotto in uscita. Se per esempio si vuole far sì che venga prodotto un 1 in uscita quando S assume un valore 8 < val < 13, è necessario far corrispondere alle configurazioni dei bit di S opportune (che forniscono in ingresso i valori 9, 10, 11 e 12) un 1 per ciascuna di esse. Nella figura sottostante è riportato un Multiplexer che implementa la funzione combinatoria appena descritta:

Questa soluzione non fornisce il circuito minimo n’è tanto meno il circuito più prestante (d’altronde, un Multiplexer 16×1 è costituito da 60 porte logiche) ma rende decisamente più semplice la fase di progetto.

Iscriviti ai nostri gruppi Telegram

Link utili

Seguici per non perdere le prossime novità!

Simone Candido è un ragazzo appassionato del mondo tech nella sua totalità. Simone ama immedesimarsi in nuove esperienze, la sua filosofia si basa sulla irrefrenabile voglia di ampliare a 360° le sue conoscenze abbracciando tutti i campi del sapere, in quanto ritiene che il sapere umano sia il connubio perfetto tra cultura umanistica e scientifica.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.