Nell’articolo di oggi analizzeremo nel dettaglio i multiplexer.
Negli articoli precedenti abbiamo visto:
- Come funziona una CPU: progetto di circuiti logici #0
- Come funziona una CPU: Flip-Flop SR asincrono #0.1
- Come funziona una CPU: Flip-Flop sincrono #0.1.1
- Come funziona una CPU: Flip-Flop D #0.1.2
- Come funziona una CPU: Flip-Flop Master-Slave #0.1.3
- Come funziona una CPU: Modello di Huffman #0.2
- Come funziona una CPU: progetto di circuiti sequenziali sincroni #0.2.1
- Come funziona una CPU: progetto dei circuiti logici #0.3
- Come funziona una CPU: porte logiche operanti su parole #0.3.1
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).
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
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 8×1
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