Title: 1:4 Demultiplexer using Xilinx
Software: Xilinx ISE
I. Introduction
Demultiplexer (Demux)
The action or operation of a demultiplexer is opposite to that of the multiplexer. As inverse to the
MUX , demux is a one-to-many circuit. With the use of a demultiplexer , the binary data can be
bypassed to one of its many output data lines.
Demultiplexers are mainly used in Boolean function generators and decoder circuits. Different
input/output configuration demultiplexers are available in the form of single integrated circuits
(ICs).
Also, the facility of cascading two or more IC circuits helps to generate multiple output
demultiplexers. Let us get a brief idea of demultiplexers and its types.
II. What is Demultiplexer?
The process of getting information from one input and transmitting the same over one of many
outputs is called demultiplexing. A demultiplexer is a combinational logic circuit that receives
the information on a single input and transmits the same information over one of 2n possible
output lines.
The bit combinations of the select lines control the selection of specific output line to be
connected to the input at given instant. The below figure illustrates the basic idea of
demultiplexer , in which the switching of the input to any one of the four outputs is possible at a
given instant.
Demultiplexers are also called as data distributors, since they transmit the same data which is
received at the input to different destinations.
Thus, a demultiplexer is a 1-to-N device where as the multiplexer is an N-to-1 device. The figure
below shows the block diagram of a demultiplexer or simply a DEMUX.
It consists of 1 input line, n output lines and m select lines. In this, m selection lines are required
to produce 2m possible output lines (consider 2m = n). For example, a 1-to-4 demultiplexer
requires 2 (22) select lines to control the 4 output lines.
There are several types of demultiplexers based on the output configurations such as 1:4, 1:8 and
1:16.
These are available in different IC packages and some of the most commonly used demultiplexer
ICs includes 74139 (dual 1:4 DEMUX), 73136 (1:8 DEMUX), 74154 (1:16 DEMUX), 74159
(1:16 DEMUX open collector type), etc.
III. 1-to-4 Demultiplexer
A 1-to-4 demultiplexer has a single input (D), two selection lines (S1 and S0) and four outputs
(Y0 to Y3). The input data goes to any one of the four outputs at a given time for a particular
combination of select lines.
This demultiplexer is also called as a 2-to-4 demultiplexer which means that two select lines and
4 output lines. The block diagram of 1:4 DEMUX is shown below.
The truth table of this type of demultiplexer is given below. From the truth table it is clear that,
when S1=0 and S0= 0, the data input is connected to output Y0 and when S1= 0 and s0=1, then
the data input is connected to output Y1.
Similarly, other outputs are connected to the input for other two combinations of select lines.
From the table, the output logic can be expressed as min terms and are given below.
Where D is the input data, Y0 to Y3 are output lines and S0 & S1 are select lines.
From the above Boolean expressions, a 1-to-4 demultiplexer can be implemented by using four
3-input AND gates and two NOT gates as shown in figure below. The two selection lines enable
the particular gate at a time.
So depends on the combination of select inputs, input data is passed through the selected gate to
the associated output.
This type of demultiplexer is available in IC form and a typical IC 74139 is most commonly used
dual 1-to-4 demultiplexer. It has two independent demultiplexers and each DEMUX accepts two
binary inputs as select lines and four mutually exclusive active-low outputs.
Both demultiplexers share a common set of selection lines so they are selected in parallel. Also,
each demultiplexer consists of enable pin or data input, for one demultiplexer it is active high
data input and for other it is active low data input.
IV. Applications of Demultiplexer
Since the demultiplexers are used to select or enable the one signal out of many, these are
extensively used in microprocessor or computer control systems such as
 Selecting different IO devices for data transfer
 Choosing different banks of memory
 Depends on the address, enabling different rows of memory chips
 Enabling different functional units.
Other than these, demultiplexers can be found in a wide variety of application such as
 Synchronous data transmission systems
 Boolean function implementation (as we discussed full subtractor function above)
 Data acquisition systems
 Combinational circuit design
 Automatic test equipment systems
 Security monitoring systems (for selecting a particular surveillance camera at a time), etc.
VHDL Code for 1 to 4 Demux
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity demux_1to4 is
port(
F : in STD_LOGIC;
S0,S1: in STD_LOGIC;
A,B,C,D: out STD_LOGIC
);
end demux_1to4;
architecture bhv of demux_1to4 is
begin
process (F,S0,S1) is
begin
if (S0 ='0' and S1 = '0') then
A <= F;
elsif (S0 ='1' and S1 = '0') then
B <= F;
elsif (S0 ='0' and S1 = '1') then
C <= F;
else
D <= F;
end if;
end process;
end bhv;
VHDL Testbench Code for 1 to 4 Demux
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY tb_demux IS
END tb_demux;
ARCHITECTURE behavior OF tb_demux IS
-- Component Declaration for the Unit Under Test (UUT)
COMPONENT demux_1to4
PORT(
F : IN std_logic;
S0 : IN std_logic;
S1 : IN std_logic;
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
A : OUT std_logic;
B : OUT std_logic;
C : OUT std_logic;
D : OUT std_logic
);
END COMPONENT;
--Inputs
signal F : std_logic := '0';
signal S0 : std_logic := '0';
signal S1 : std_logic := '0';
--Outputs
signal A : std_logic;
signal B : std_logic;
signal C : std_logic;
signal D : std_logic;
-- No clocks detected in port list. Replace <clock> below with
-- appropriate port name
BEGIN
-- Instantiate the Unit Under Test (UUT)
uut: demux_1to4 PORT MAP (
F => F,
S0 => S0,
S1 => S1,
A => A,
B => B,
C => C,
D => D
);
-- Stimulus process
stim_proc: process
begin
-- hold reset state for 100 ns.
wait for 100 ns;
F <= '1';
S0 <= '0'; S1 <= '0';
wait for 100 ns;
S0 <= '1'; S1 <= '0';
wait for 100 ns;
S0 <= '0'; S1 <= '1';
wait for 100 ns;
68
69
70
71
72
73
74
75
76
77
S0 <= '1'; S1 <= '1';
wait for 100 ns;
-- insert stimulus here
wait;
end process;
END;
Testbench waveform for 1 to 4 Demux

Demultiplexer with vhdl code

  • 1.
    Title: 1:4 Demultiplexerusing Xilinx Software: Xilinx ISE I. Introduction Demultiplexer (Demux) The action or operation of a demultiplexer is opposite to that of the multiplexer. As inverse to the MUX , demux is a one-to-many circuit. With the use of a demultiplexer , the binary data can be bypassed to one of its many output data lines. Demultiplexers are mainly used in Boolean function generators and decoder circuits. Different input/output configuration demultiplexers are available in the form of single integrated circuits (ICs). Also, the facility of cascading two or more IC circuits helps to generate multiple output demultiplexers. Let us get a brief idea of demultiplexers and its types. II. What is Demultiplexer? The process of getting information from one input and transmitting the same over one of many outputs is called demultiplexing. A demultiplexer is a combinational logic circuit that receives the information on a single input and transmits the same information over one of 2n possible output lines. The bit combinations of the select lines control the selection of specific output line to be connected to the input at given instant. The below figure illustrates the basic idea of demultiplexer , in which the switching of the input to any one of the four outputs is possible at a given instant.
  • 2.
    Demultiplexers are alsocalled as data distributors, since they transmit the same data which is received at the input to different destinations. Thus, a demultiplexer is a 1-to-N device where as the multiplexer is an N-to-1 device. The figure below shows the block diagram of a demultiplexer or simply a DEMUX. It consists of 1 input line, n output lines and m select lines. In this, m selection lines are required to produce 2m possible output lines (consider 2m = n). For example, a 1-to-4 demultiplexer requires 2 (22) select lines to control the 4 output lines. There are several types of demultiplexers based on the output configurations such as 1:4, 1:8 and 1:16. These are available in different IC packages and some of the most commonly used demultiplexer ICs includes 74139 (dual 1:4 DEMUX), 73136 (1:8 DEMUX), 74154 (1:16 DEMUX), 74159 (1:16 DEMUX open collector type), etc. III. 1-to-4 Demultiplexer A 1-to-4 demultiplexer has a single input (D), two selection lines (S1 and S0) and four outputs (Y0 to Y3). The input data goes to any one of the four outputs at a given time for a particular combination of select lines. This demultiplexer is also called as a 2-to-4 demultiplexer which means that two select lines and 4 output lines. The block diagram of 1:4 DEMUX is shown below.
  • 3.
    The truth tableof this type of demultiplexer is given below. From the truth table it is clear that, when S1=0 and S0= 0, the data input is connected to output Y0 and when S1= 0 and s0=1, then the data input is connected to output Y1. Similarly, other outputs are connected to the input for other two combinations of select lines. From the table, the output logic can be expressed as min terms and are given below. Where D is the input data, Y0 to Y3 are output lines and S0 & S1 are select lines.
  • 4.
    From the aboveBoolean expressions, a 1-to-4 demultiplexer can be implemented by using four 3-input AND gates and two NOT gates as shown in figure below. The two selection lines enable the particular gate at a time. So depends on the combination of select inputs, input data is passed through the selected gate to the associated output. This type of demultiplexer is available in IC form and a typical IC 74139 is most commonly used dual 1-to-4 demultiplexer. It has two independent demultiplexers and each DEMUX accepts two binary inputs as select lines and four mutually exclusive active-low outputs. Both demultiplexers share a common set of selection lines so they are selected in parallel. Also, each demultiplexer consists of enable pin or data input, for one demultiplexer it is active high data input and for other it is active low data input. IV. Applications of Demultiplexer Since the demultiplexers are used to select or enable the one signal out of many, these are extensively used in microprocessor or computer control systems such as  Selecting different IO devices for data transfer  Choosing different banks of memory  Depends on the address, enabling different rows of memory chips  Enabling different functional units.
  • 5.
    Other than these,demultiplexers can be found in a wide variety of application such as  Synchronous data transmission systems  Boolean function implementation (as we discussed full subtractor function above)  Data acquisition systems  Combinational circuit design  Automatic test equipment systems  Security monitoring systems (for selecting a particular surveillance camera at a time), etc.
  • 6.
    VHDL Code for1 to 4 Demux 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 library IEEE; use IEEE.STD_LOGIC_1164.all; entity demux_1to4 is port( F : in STD_LOGIC; S0,S1: in STD_LOGIC; A,B,C,D: out STD_LOGIC ); end demux_1to4; architecture bhv of demux_1to4 is begin process (F,S0,S1) is begin if (S0 ='0' and S1 = '0') then A <= F; elsif (S0 ='1' and S1 = '0') then B <= F; elsif (S0 ='0' and S1 = '1') then C <= F; else D <= F; end if; end process; end bhv; VHDL Testbench Code for 1 to 4 Demux 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY tb_demux IS END tb_demux; ARCHITECTURE behavior OF tb_demux IS -- Component Declaration for the Unit Under Test (UUT) COMPONENT demux_1to4 PORT( F : IN std_logic; S0 : IN std_logic; S1 : IN std_logic;
  • 7.
    16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 A : OUTstd_logic; B : OUT std_logic; C : OUT std_logic; D : OUT std_logic ); END COMPONENT; --Inputs signal F : std_logic := '0'; signal S0 : std_logic := '0'; signal S1 : std_logic := '0'; --Outputs signal A : std_logic; signal B : std_logic; signal C : std_logic; signal D : std_logic; -- No clocks detected in port list. Replace <clock> below with -- appropriate port name BEGIN -- Instantiate the Unit Under Test (UUT) uut: demux_1to4 PORT MAP ( F => F, S0 => S0, S1 => S1, A => A, B => B, C => C, D => D ); -- Stimulus process stim_proc: process begin -- hold reset state for 100 ns. wait for 100 ns; F <= '1'; S0 <= '0'; S1 <= '0'; wait for 100 ns; S0 <= '1'; S1 <= '0'; wait for 100 ns; S0 <= '0'; S1 <= '1'; wait for 100 ns;
  • 8.
    68 69 70 71 72 73 74 75 76 77 S0 <= '1';S1 <= '1'; wait for 100 ns; -- insert stimulus here wait; end process; END; Testbench waveform for 1 to 4 Demux