A multiplexer, or
mux, is a
digital device that
multiplexes multiple
inputs onto one
output. Depending upon the value of the
select inputs, a single
data input is
connected to the
output. A symbol for a 4:1 mux:
+------+
--|I0 |
--|I1 |
--|I2 | __ __ __ __
--|I3 Q|-- Q=(I0*S1*S0)+(I1*S1*S0)+(I2*S1*S0)+(I3*S1*S0)
| |
--|S1 |
--|S0 |
+------+
If a value of '00' is present on S, then I0<->Q. If the value on S is '01', then I1<->Q; S='10' => I2<->Q; S='11' => I3<->Q.
As an example, the multiplexer can be used to time share a single line (here, we are calling it Q). On one end, the transmitter multiplexes the parallel data contained on I0-I3, and on the other end the receiver uses a decoder to demultiplex the signal. S1 and S0 count through all of the possibilities (0-4) at a specific rate, which is synchronized with both the transmitter and receiver via another line. If S changes fast enough, we can effectively transmit all of the data on I0-I3 over a single line, instead of 4. Here's a simple example:
Transmitter Receiver
+---------+ +----------+
>-------------|I3 4:1 | | 1:4 |
>-------------|I2 MUX | | Decoder |
>-------------|I1 | | |
>-------------|I0 Q|---------------|EN Q3|-->
| | | Q2|-->
+--|S1 | +--|S1 Q1|-->
+---------+ |+-|S0 | |+-|S0 Q0|-->
| Counter | || +---------+ || +----------+
| | || ||
| Q1|-+|------------------------+|
| Q0|--+-------------------------+
| /\ |
+---------+
||
clk
We can also use a mux as a quick way to implement many logic functions. Suppose we have a function, F, with this truth table:
A B|F
---+--
0 0|1 <-m0
0 1|1 <-m1
1 0|0 <-m2
1 1|1 <-m3
We then connect the output for each minterm to the inputs of the multiplexer and connect A and B to the select inputs of the mux.
^(+Vcc)
|
| +------+
+--|I0 |
+--|I1 |
|+-|I2 |
+|-|I3 Q|--> F
| | |
A >-|-|S1 |
B >-|-|S0 |
| +------+
|
V(Gnd)
See also decoder.