• Today, we’ll study multiplexers, which are just as commonly used as the decoders we presented last time. Again, – These serve as examples for circuit analysis and modular design. – Multiplexers can implement arbitrary functions. – We will actually put these circuits to good use in later weeks, as building blocks for more complex designs.
• A 2n-to-1 multiplexer sends one of 2n input lines to a single output line. – A multiplexer has two sets of inputs: • 2n data input lines • n select lines, to pick one of the 2n data inputs – The mux output is a single bit, which is one of the 2n data inputs. • The simplest example is a 2-to-1 mux: Q = S’ D0 + S D1
• The select bit S controls which of the data bits D0-D1 is chosen: – If S=0, then D0 is the output (Q=D0). – If S=1, then D1 is the output (Q=D1).
More truth table abbreviations
• Here is a full truth table for this 2-to-1 mux,
based on the equation: Q = S’ D0 + S D1
• Here is another kind of abbreviated truth table. – Input variables appear in the output column. – This table implies that when S=0, the output – Q=D0, and when S=1 the output Q=D1. This is a pretty close match to the equation.
A 4-to-1 multiplexer
• Here is a block diagram and abbreviated truth table for a 4-to-1 mux. • Be careful! In LogicWorks the multiplexer has an active-low EN input signal. When EN’ = 1, the mux always outputs 1.
Q = S1’ S0’ D0 + S1’ S0 D1 + S1 S0’ D2 + S1 S0 D3
Implementing functions with multiplexers
• Muxes can be used to implement arbitrary functions. • One way to implement a function of n variables is to use an n-to-1 mux: – For each minterm mi of the function, connect 1 to mux data input Di. Each data input corresponds to one row of the truth table. – Connect the function’s input variables to the mux select inputs. These are used to indicate a particular input combination. For example, let’s look at f(x,y,z) = Σm(1,2,6,7).
A more efficient way
• We can actually implement f(x,y,z) = Σm(1,2,6,7) with just a 4-to-1 mux, instead of an 8-to-1.
• Step 1: Find the truth table for the function, and – When xy=00, f=z – When xy=01, f=z’ – When xy=10, f=0 – When xy=11, f=1
group the rows into pairs. Within each pair of rows, x and y are the same, so f is a function of z only.
• Step 2: Connect the first two input variables of the • Step 3: Connect the equations above for f(z) to the data inputs D0-D3.
truth table (here, x and y) to the select bits S1 S0 of the 4-to-1 mux.
What should be the values of D0 .. D3? A) D0=0; D1=X;D2=1; D3=X’ B) D0=1; D1=X’;D2=0; D3=X C) D0=0; D1=X’;D2=1; D3=X D) D0=X; D1=X’;D2=0; D3=1
Example: multiplexer-based adder
• Let’s implement the adder carry function, C(X,Y,Z), with muxes. • There are three inputs, so we’ll need a 4-to-1 mux. • The basic setup is to connect two of the input variables (usually the first two in the truth table) to the mux select inputs.
With S1=X and S0=Y, then Q=X’Y’D0 + X’YD1 + XY’D2 + XYD3 Equation for the multiplexer Multiplexers 8
• We can set the multiplexer data inputs D0-D3, by fixing X and Y and finding equations for C in terms of just Z.
When XY=00, C=0 When XY=01, C=Z When XY=10, C=Z When XY=11, C=1 C = X’ Y’ D0 + X’ Y D1 + X Y’ D2 + X Y D3 = X’ Y’ 0 + X’ Y Z + X Y’ Z + X Y 1 = X’ Y Z + X Y’ Z + XY = Σm(3,5,6,7) Multiplexers 9
• Here’s the same thing, but for the sum function S(X,Y,Z).
When XY=00, S=Z When XY=01, S=Z’ When XY=10, S=Z’ When XY=11, S=Z S = X’ Y’ D0 + X’ Y D1 + X Y’ D2 + X Y D3 = X’ Y’ Z + X’ Y Z’ + X Y’ Z’ + X Y Z = Σm(1,2,4,7)
Dual multiplexer-based full adder
• We need two separate 4-to-1 muxes: one for C and one for S. • But sometimes it’s...