When we transfer data, there are a few things that we need to consider to ensure that our transfers are quick, lossless and efficient. However, transmitting data needs bandwidth. Or let us put it in even simpler terms. From a layman perspective. If we have a high number of connections or wires between two points, you can transfer a larger amount of data. However, transmission lines, connections, even the traces on a circuit board are an expensive commodity. Both, cost and real estate wise. You ideally need a system where you can transfer the most data using the least connections and cost. That is one of the core aspects of communication system design. Multiplexing is a concept that is very important in this aspect. Multiplexing means to transmit more than one signal on a single transmission line. In this post, we will look at the multiplexer and the demultiplexer circuits.

**What is a multiplexer?**

A multiplexer is a digital combinational logic circuit with n inputs and one output. Its purpose is to connect one of the inputs to the output line depending on a control signal. Basically, it switches between one of the many input lines and connects them one by one to the output. It decides which input line to switch to using a control signal. So, physically, a multiplexer has n input pins, one output pin, and m control pins. n = 2^m. We can refer to a multiplexer with the terms MUX and MPX too. Since a multiplexer’s job is to select one of the data input lines and send it to the output, it is also known as “data selector”.

There are three main ways of constructing a multiplexer. Digital multiplexers, which are the focus of our post, are made up of logic gates. Analog multiplexers are made using transistors. Mechanical switches which are also known as rotary switches are made using rotating shafts.

The mux itself acts like a digitally controlled multi-position switch where the binary code applied to the select inputs controls the data input which will be switched to the output. The general symbol of a multiplexer is shown below.

**How does a multiplexer work?**

To understand the design and working of a multiplexer we will dive right in. We will start by designing the simplest of digital multiplexers: the 2:1 mux.

For a 2:1 mux, we have 2 input lines, 1 select line (2^x = 2, then x=1) and one output line. Since we have one control input, there are only two possible values for it. 0 and 1. When the control input is 0, the first input line connects to the output. When the control output is 1, the second input line connects to the output. So now you understand how a control line controls which input connects to the output.

**Truth table for 2:1 mux**

I0 | I1 | S | Output |

0 | 0 | 0 | 0 |

0 | 0 | 1 | 0 |

0 | 1 | 0 | 0 |

0 | 1 | 1 | 1 |

1 | 0 | 0 | 1 |

1 | 0 | 1 | 0 |

1 | 1 | 0 | 1 |

1 | 1 | 1 | 1 |

From the k-map of the above truth table we get

Output = SI1 + S’I0

As we can see, depending on the value of the select line (S), we can select an input line to connect it to the output. The current value on the line that is selected passes to the output. In this way, the multiplexer acts as a switching circuit. Now, as we increase the number of inputs, the number of select lines will increase too.

Let’s now design a 4:1 multiplexer. Can you calculate how many select lines would be present in this mux? We have four inputs, what number of digits in a binary number gives you four possible combinations? Or, using how many digits in a binary number can you count up to four? If you are unable to answer these questions you still have the formula we saw above to count on. For n inputs, m select lines, where n=2^m. 4 = 2^m, therefore, m =2. We need two select lines for a 4:1 mux.

**Truth table for 4:1 mux**

I0 |
I1 | I2 | I3 | S0 | S1 | Output |

0 | x | x | x | 0 | 0 | 0 |

1 | x | x | x | 0 | 0 | 1 |

x | 0 | x | x | 0 | 1 | 0 |

x | 1 | x | x | 0 | 1 | 1 |

x | x | 0 | x | 1 | 0 | 0 |

x | x | 1 | x | 1 | 0 | 1 |

x | x | x | 0 | 1 | 1 | 0 |

x | x | x | 1 | 1 | 1 | 1 |

x is don’t care because that particular line is not selected by the control lines’ values.

When

S0S1 = 00 (0 – decimal value), I0 is connected to the output.

S0S1 = 01 (1), I1 is the output.

S0S1 = 10 (2), I2 is the output

S0S1 = 11 (3), I3 is the output

Solving for output using the method we saw in the post for comparators. Output is 1 when I0 = 1 and S0 = 0 and S1 = 0 OR when I1 = 1 and S0 = 0 and S1 = 1 and so on we get

Output = I0S0’S1′ + I1S0’S1 + I2S0S1′ + I3S0S1

Plotting the circuit for the above equation we get the following logic circuit for a 4:1 multiplexer.

**What are the uses of a multiplexer?**

The applications of a multiplexer include

- In a communication system where we have a communication network, a multiplexer increases efficiency of the system by allowing the transmission of audio and video data on a single channel.
- In optical fiber communication, a multiplexer does the same job to combine multiple fiber cables onto one fiber cable using a technique called Dense wavelength division multiplexing.
- In satellite communication multiplexers are transfer data from the satellite’s computer system to the ground segment using GSM communication.
- It also works as a parallel to serial data converter.
- In a computer it decreases the number of copper lines necessary to connect the memory to other parts of the computer.

## How to join multiplexers?

If we have small multiplexers but we wish to increase their functionality, we can join them to obtain a mux with more inputs. The cascading of multiplexers is easy. You just need to make sure that you connect in a way that gives the same number of inputs and control lines as your target mux.

Let’s make a 4:1 mux using 2:1 multiplexers. We know that a 2:1 mux has 2 inputs and one select line. So joining two 2:1 multiplexers will give us 4 inputs, 2 outputs (we need only 1) and two select lines. So how do we proceed?

If we can somehow reduce the outputs to one, it would be really easy. Since we wish to use only multiplexers, how do we combine two lines to get a single line? We use another 2:1 mux! However, though that gives us the one output that we require, it gives us an additional select line. So now we have three select lines. How do you reduce three select lines to two select lines? If only we could just remove one select line. Well, we can do that, by joining two select lines. That would essentially reduce the two lines to one single line. This is the result we get by applying our logic.

Similarly, you can design an 8:1 mux using 2:1 multiplexers, 16:1 mux using 4:1 mux, or 16:1 mux using 8:1 mux. Try designing these using only multiplexers using similar logic to the one we saw above. Cross check your answers with the designs below.

You can also go the opposite way and use a multiplexer with more inputs than required as a smaller mux. Here’s an 8:1 mux being used as a 2:1 multiplexer.

**How to make logic gates using multiplexers?**

Since the logic gates we study are generally with two inputs and have one output we can take it up as a logical challenge to design all logic gates using a 2:1 multiplexer. As with a lot of logical circuits, making gates using mux also does not have a method written in stone. You can try alternative designs and arrive at the same logical conclusions. Let’s start with the NOT gate. We know that it just inverts the input and has one input. If we consider the select line to be the input, apply a HIGH logic at Io and LOW logic at I1, we get a NOT gate.

Similarly, by applying some logic, you can derive all other gates using just 2:1 Mux. Try it! It’s a good logical ability increasing exercise.

**What is a demultiplexer?**

A demultiplexer is a combinational logic circuit that performs the opposite function as that of a multiplexer. In a demux, we have n output lines, one input line, and m select lines. The relation between the number of output lines and the number of select lines is the same as we saw in a multiplexer. That is, 2^m = n. Depending on the value of the binary number formed by the select lines, any one of the output lines connects to the input line. The rest of the output lines at this point go to an OFF state. That is, the value of the remaining lines is 0.

In this way, a demultiplexer converts serial data to parallel data and acts as a serial-parallel converter. Moreover, since it connects one data line to multiple data lines and switches between them, a demultiplexer is also known as a “data selector”. A demultiplexer is alternatively referred to as a demux. The general symbol of a demultiplexer is shown below.

**How does a demultiplexer work?**

To understand the working of a demultiplexer, we will straight away design one. The 1:2 demux is the simplest of all demultiplexers. We have one input, two outputs and 1 select line (2^m = 2, therefore m=1). Let’s write the truth table for this demux.

**Truth table for a 1:2 demultiplexer**

I0 |
S |
Y0 |
Y1 |

0 | 0 | 0 | 0 |

0 | 1 | 0 | 0 |

1 | 0 | 1 | 0 |

1 | 1 | 0 | 1 |

From the truth table

Y0 = I0S’ and

Y1 = I0S

The resulting circuit of a 1:2 demultiplexer using logic gates using the equations we got from the truth table is shown below.

As you can see, depending on the value of the select line, one of the output connects to the input line. When S is 0, the first output line connects to the input. When S is 1, the second output line connects to the input. In this way, a demultiplexer distributes data from one data line to multiple data lines. Next, we will design a 1:4 demultiplexer. From the formula for select lines we saw above, a 1:4 demux will have two select lines. Let’s draw the truth table for a 1:4 demux.

**Truth table for a 1:4 demultiplexer**

I0 |
S0 | S1 | Y0 | Y1 | Y2 | Y3 |

I |
0 | 0 | I | 0 | 0 | 0 |

I |
0 | 1 | 0 | I | 0 | 0 |

I |
1 | 0 | 0 | 0 | I | 0 |

I |
1 | 1 | 0 | 0 | 0 | I |

As you can see, this truth table is shorter than the one for the 4:1 mux. This is because instead of taking both the possible values of the input, we just took it as I. The resulting equations will be the same. When you have large truth tables, tricks like this are handy and will make it easier for you to get to the equations you need.

So from the truth table,

Y0 = S0’S1′

Y1 = S0’S1

Y2 = S0S1′

Y3 = S0S1

The resultant circuit for the above equations is shown below.

**What are the applications of a demultiplexer?**

- In a communication system a demultiplexer can receive serial data from a multiplexer that is present at the transmission end. The demux then converts the data into its original form.
- We can store an ALU’s output in multiple memory registers using a demultiplexer.
- The demultiplexer also acts as a serial to parallel converter.