Salta al contenuto
Note per Studenti Multiplexer e funzioni logiche realizzate con decoder e multiplexer

Multiplexer e funzioni logiche realizzate con decoder e multiplexer

In questa pagina 4

Il multiplexer (MUX) è il blocco combinatorio che seleziona un dato tra più ingressi: con il valore di un segnale di selezione sceglie una linea in ingresso e la manda sull'unica linea di uscita. È uno dei blocchi più usati nei datapath (per scegliere da quale registro prendere un dato, Registri a scorrimento e contatoriPiù sorgenti per un registro di destinazione si gestiscono con un MUX che sceglie la sorgente (e un encoder se i segnali di controllo sono 1-hot) più il Load. Lo shift register è una catena di FF con uscita di ognuno collegata all'ingresso del successivo: ingresso e uscita seriali, caricamento parallelo (Shift ha priorità su Load), versione bidirezionale con un MUX 4-to-1 per stadio (S1S0: 00 hold, 01 shift left, 10 shift right, 11 load). Usi: conversione serie/parallelo, interfacce, linee di ritardo, generatori pseudo-casuali. Contatori: ripple (asincrono, il clock di ogni FF è l'uscita del precedente, ritardo crescente) e sincrono (stesso clock, più veloce; EN e CO per la cascata).Registri a scorrimento e contatori →), nelle memorie e nei flip-flop con enable.

Multiplexer 2n2^n-to-1

Un MUX ha 2n2^n ingressi dati I0,…,I2n−1I_0,\dots,I_{2^n-1}, nn ingressi di selezione Sn−1…S0S_{n-1}\dots S_0 e un'uscita YY. Il segnale di selezione può essere binario o 1-hot; qui è binario: se SS vale ii in binario, allora Y=IiY=I_i.

MUX 2-to-1 (n=1n=1): Y=S‾ I0+S I1Y=\overline S\,I_0+S\,I_1. Se S=0S=0 allora Y=I0Y=I_0, se S=1S=1 allora Y=I1Y=I_1.

MUX 4-to-1 (n=2n=2): Y=S‾1S‾0I0+S‾1S0I1+S1S‾0I2+S1S0I3.Y=\overline S_1\overline S_0I_0+\overline S_1S_0I_1+S_1\overline S_0I_2+S_1S_0I_3 .

L'equazione generale è Y=∑imi(S)⋅IiY=\sum_i m_i(S)\cdot I_i: i mintermini degli ingressi di selezione fanno da "porte" per i dati.

Realizzazioni e costo del 4-to-1

Il secondo è più caro, ma ha struttura gerarchica e si estende: un MUX 64-to-1 costruito così (decoder 6-to-64 gerarchico da 182, 64 AND a 2 ingressi, una OR a 64 ingressi) costa 182+128+64=374182+128+64=374; costruito in modo "piatto" (6 inverter, 64 AND a 7 ingressi, una OR a 64) costa 6+448+64=5186+448+64=518 (Decoder, encoder e priority encoderUn decoder $n$-to-$m$ ($m\le2^n$) converte un ingresso binario a $n$ bit in un'uscita 1-hot (un solo 1, nella posizione indicata): le sue uscite sono i mintermini degli ingressi, realizzati con $m$ AND; per decoder grandi si usa l'approccio gerarchico (costo in ingressi: 3-to-8 = 27, 6-to-64 = 182) e un enable. Ogni funzione = decoder + OR dei suoi mintermini. L'encoder fa l'operazione inversa (1-hot $\to$ binario) ma sbaglia con più ingressi a 1 o tutti a 0: il priority encoder risolve con una priorità e un'uscita V (valid).Decoder, encoder e priority encoder →).

MUX a vettori

Si possono selezionare interi vettori: un quad 4-to-1 multiplexer ha quattro ingressi da 4 bit ciascuno, selezione a 2 bit e un'uscita a 4 bit. È un decoder 2-to-4 (costo 10) che comanda quattro MUX 4-to-1 a 1 bit realizzati con AND/OR (ognuno 4⋅2+4=124\cdot2+4=12 senza il decoder condiviso): 10+12⋅4=5810+12\cdot4=58 ingressi. Serve per scegliere tra 4 registri a 4 bit.

Funzioni logiche con un decoder

Come visto nella nota sui decoder, un decoder + una OR realizzano una SOP: i mintermini sono già pronti. Per il sommatore completo (Sommatori binari - half adder, full adder e ripple carryHalf adder (2 ingressi): $S=X\oplus Y$, $C=XY$. Full adder (3 ingressi, con riporto in ingresso $Z$): $S=X\oplus Y\oplus Z$, $C=XY+XZ+YZ=G+PZ$ con $P=X\oplus Y$, $G=XY$; si realizza con due half adder e una OR. Il ripple carry adder a $n$ bit concatena $n$ full adder: il riporto "ondeggia" dal LSB al MSB, quindi il ritardo cresce linearmente con $n$. È un circuito iterativo (gerarchico e regolare). Il moltiplicatore a 2 bit usa 4 AND e 2 half adder.Sommatori binari - half adder, full adder e ripple carry →) S=D1+D2+D4+D7S=D_1+D_2+D_4+D_7 e C=D3+D5+D6+D7C=D_3+D_5+D_6+D_7 con un 3-to-8 e due OR a 4 ingressi. Vale quando la funzione ha pochi mintermini; se ne ha più della metà conviene una NOR sui mintermini del complemento.

Funzioni logiche con un multiplexer

MUX 2n2^n-to-1 per nn variabili

Una funzione di nn variabili si realizza con un MUX 2n2^n-to-1: le nn variabili sono collegate agli ingressi di selezione (rispettando l'ordine dei bit: la variabile più significativa va a Sn−1S_{n-1}), e agli ingressi dati si applica il valore della tabella di verità, riga per riga: Ii=F(i)I_i=F(i), una costante 0 o 1 (value fixing). Perché funziona: per la riga ii il MUX seleziona IiI_i, che è proprio il valore che la funzione deve avere.

MUX 2n−12^{n-1}-to-1: l'ultima variabile come dato

Si può usare un MUX più piccolo, con un ingresso di selezione in meno: si collegano alla selezione solo n−1n-1 variabili e agli ingressi dati si applicano le costanti 00, 11 oppure la variabile rimasta XX o il suo complemento X‾\overline X. Per ogni valore della selezione, le due righe della tabella (con X=0X=0 e X=1X=1) danno una coppia di valori:

F(X=0)F(X=0) F(X=1)F(X=1) ingresso dati
0 0 00
1 1 11
0 1 XX
1 0 X‾\overline X

Esempio. F(A,B,C,D)=∑m(1,3,4,11,12,13,14,15)F(A,B,C,D)=\sum m(1,3,4,11,12,13,14,15) con un MUX 8-to-1 e selezione S2S1S0=ABCS_2S_1S_0=ABC. Per ogni valore di ABCABC si guarda la coppia (F(D=0),F(D=1))(F(D=0),F(D=1)):

ABCABC minterm D=0,D=1D=0,D=1 (F(0),F(1))(F(0),F(1)) IiI_i
000 0,10,1 (0,1)(0,1) DD
001 2,32,3 (0,1)(0,1) DD
010 4,54,5 (1,0)(1,0) D‾\overline D
011 6,76,7 (0,0)(0,0) 00
100 8,98,9 (0,0)(0,0) 00
101 10,1110,11 (0,1)(0,1) DD
110 12,1312,13 (1,1)(1,1) 11
111 14,1514,15 (1,1)(1,1) 11

Quindi I0=I1=I5=DI_0=I_1=I_5=D, I2=D‾I_2=\overline D, I3=I4=0I_3=I_4=0, I6=I7=1I_6=I_7=1 (attenzione all'ordine: AA va a S2S_2, CC a S0S_0).

Esempio: sommatore completo con MUX 4-to-1. Con selezione S1S0=XYS_1S_0=XY e dato ZZ: SS vale Z,Z‾,Z‾,ZZ,\overline Z,\overline Z,Z per XY=00,01,10,11XY=00,01,10,11; CC vale 0,Z,Z,10,Z,Z,1. Bastano due MUX 4-to-1 (un "dual MUX") e un inverter, invece di due MUX 8-to-1.

Con le condizioni di don't care la scelta degli ingressi può diventare più libera: un ingresso dati con coppia (X,qualsiasi)(X,\text{qualsiasi}) può essere scelto come meglio conviene (Mappe di Karnaugh - POS, condizioni di don't care e paritàPer la POS minima si raggruppano gli 0 della mappa, si ottiene la SOP minima di $\overline F$ e si scrive $F$ come prodotto di somme (variabile diretta se vale 0 nel gruppo, negata se vale 1). Le condizioni di don't care (X) sono combinazioni di ingresso che non si presentano o la cui uscita è indifferente: si usano come 1 o come 0 a seconda di quel che allarga i gruppi (mai raggruppamenti fatti solo di X). Le funzioni XOR a più variabili (disparità) e XNOR (parità) hanno mappa a scacchiera: non si semplificano con i gruppi.Mappe di Karnaugh - POS, condizioni di don't care e parità →).

Errori comuni

  • Collegare le variabili agli ingressi di selezione nell'ordine sbagliato (la più significativa va alla selezione più significativa).
  • Dimenticare di usare X‾\overline X quando la coppia è (1,0)(1,0).
  • Credere che il MUX serva solo a "scegliere": è anche un generatore di funzioni universale.
  • Confondere ingressi dati e di selezione nel conteggio: un MUX 8-to-1 ha 8 dati + 3 selezioni.

Versione ripasso

Esercizi su questo argomento

Teoria collegata