1 / 48

Multiplexers

Multiplexers. Section 3-7 Mano & Kime. Multiplexers & Demultiplexers. Multiplexers (Selectors) Lab 1 – Behavioral VHDL -- Multiplexers MUX as a Universal Element. 4– to– 1- Line Multiplexer. 4–to–1-Line Multiplexer with Transmission Gates. Quadruple 2–to–1-Line Multiplexer. Typical uses.

Download Presentation

Multiplexers

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Multiplexers Section 3-7 Mano & Kime

  2. Multiplexers & Demultiplexers • Multiplexers (Selectors) • Lab 1 – Behavioral VHDL -- Multiplexers • MUX as a Universal Element

  3. 4– to– 1- Line Multiplexer

  4. 4–to–1-Line Multiplexer with Transmission Gates

  5. Quadruple 2–to–1-Line Multiplexer

  6. Typical uses

  7. Multiplexers • Multiplexers (Selectors) • Lab 1 – Behavioral VHDL -- Multiplexers • MUX as a Universal Element

  8. Combinational Circuit Example n-line 2-to-1 Multiplexer n-line 2 x 1 MUX a(n-1:0) y(n-1:0) b(n-1:0) sel y 0 a 1 b sel

  9. a(n-1:0) n-line 2 x 1 y(n-1:0) MUX b(n-1:0) sel An n-line 2 x 1 MUX library IEEE; use IEEE.std_logic_1164.all; entity mux2g is generic (width:positive); port ( a: in STD_LOGIC_VECTOR(width-1 downto 0); b: in STD_LOGIC_VECTOR(width-1 downto 0); sel: in STD_LOGIC; y: out STD_LOGIC_VECTOR(width-1 downto 0) ); end mux2g;

  10. generic statement defines width of bus Entity Each entity must begin with these library and use statements library IEEE; use IEEE.std_logic_1164.all; entity mux2g is generic (width:positive); port ( a: in STD_LOGIC_VECTOR(width-1 downto 0); b: in STD_LOGIC_VECTOR(width-1 downto 0); sel: in STD_LOGIC; y: out STD_LOGIC_VECTOR(width-1 downto 0) ); end mux2g; port statement defines inputs and outputs

  11. Entity Mode: in or out library IEEE; use IEEE.std_logic_1164.all; entity mux2g is generic (width:positive); port ( a: in STD_LOGIC_VECTOR(width-1 downto 0); b: in STD_LOGIC_VECTOR(width-1 downto 0); sel: in STD_LOGIC; y: out STD_LOGIC_VECTOR(width-1 downto 0) ); end mux2g; Data type: STD_LOGIC, STD_LOGIC_VECTOR(width-1 downto 0);

  12. Standard Logic library IEEE; use IEEE.std_logic_1164.all; type std_ulogic is ( ‘U’, -- Uninitialized ‘X’ -- Forcing unknown ‘0’ -- Forcing zero ‘1’ -- Forcing one ‘Z’ -- High impedance ‘W’ -- Weak unknown ‘L’ -- Weak zero ‘H’ -- Weak one ‘-’); -- Don’t care

  13. Standard Logic Type std_ulogic is unresolved. Resolved signals provide a mechanism for handling the problem of multiple output signals connected to one signal. subtype std_logic is resolved std_ulogic;

  14. a(n-1:0) n-line 2 x 1 y(n-1:0) MUX b(n-1:0) sel Architecture architecture mux2g_arch of mux2g is begin mux2_1: process(a, b, sel) begin if sel = '0' then y <= a; else y <= b; endif; end process mux2_1; end mux2g_arch; Note: <= is signal assignment

  15. Architecture entity name process sensitivity list architecture mux2g_arch of mux2g is begin mux2_1: process(a, b, sel) begin if sel = '0' then y <= a; else y <= b; endif; end process mux2_1; end mux2g_arch; Sequential statements (if…then…else) must be in a process Note begin…end in process Note begin…end in architecture

  16. Digilab2 – DIO1 Boards Pushbutton bn Spartan II FPGA Four 7-segment displays 8 LEDs LD 8 Switches SW 4 Pushbuttons BTN 74HC373 latch ldg <= ‘1’

  17. Top-level Design – Lab 1

  18. library IEEE; use IEEE.std_logic_1164.all; entity lab1 is port ( SW: in STD_LOGIC_VECTOR (1 to 8); BTN4: in STD_LOGIC; ldg: out STD_LOGIC; LD: out STD_LOGIC_VECTOR (1 to 4) ); end lab1;

  19. architecture lab1_arch of lab1 is component mux2g generic(width:positive); port ( a: in STD_LOGIC_VECTOR (width-1 downto 0); b: in STD_LOGIC_VECTOR (width-1 downto 0); sel: in STD_LOGIC; y: out STD_LOGIC_VECTOR (width-1 downto 0) ); end component; constant bus_width: positive := 4; begin ldg <= '1'; -- enable 74HC373 latch SWmux: mux2g generic map(width => bus_width) port map (a => SW(1 to 4), b => SW(5 to 8), sel => BTN4, y => LD); end lab1_arch;

  20. Sel y “00” a “01” b “10” c “11” d An n-line 4 x 1 multiplexer a(n-1:0) 8-line b(n-1 :0) 4 x 1 y(n-1 :0) c(n-1 :0) MUX d(n-1 :0) sel(1:0)

  21. An 8-line 4 x 1 multiplexer library IEEE; use IEEE.std_logic_1164.all; entity mux4g is generic(width:positive); port ( a: in STD_LOGIC_VECTOR (width-1 downto 0); b: in STD_LOGIC_VECTOR (width-1 downto 0); c: in STD_LOGIC_VECTOR (width-1 downto 0); d: in STD_LOGIC_VECTOR (width-1 downto 0); sel: in STD_LOGIC_VECTOR (1 downto 0); y: out STD_LOGIC_VECTOR (width-1 downto 0) ); end mux4g;

  22. Sel y “00” a “01” b “10” c “11” d Example of case statement architecture mux4g_arch of mux4g is begin process (sel, a, b, c, d) begin case sel is when "00" => y <= a; when "01" => y <= b; when "10" => y <= c; when others => y <= d; end case; end process; end mux4g_arch; Note implies operator => Must include ALL posibilities in case statement

  23. VHDL Architecture Structure architecture name_arch of name is begin end name_arch; Signal assignments Processes contain sequential statements, but execute concurrently within the architecture body Concurrent statements Process 1 Concurrent statements Process 2 Concurrent statements

  24. Optional process label VHDL Process P1: process (<sensitivity list) <variable declarations> begin <sequential statements> end process P1; Within a process: Variables are assigned using := and are updated immediately. Signals are assigned using <= and are updated at the end of the process.

  25. Multiplexers • Multiplexers (Selectors) • Lab 1 – Behavioral VHDL -- Multiplexers • MUX as a Universal Element

  26. Multiplexer as universal combinational module • connect input variables x to select inputs of multiplexer s • set data inputs to multiplexer equal to values of function for corresponding assignment of select variables • using a variable at data inputs reduces size of the multiplexer

  27. Implementing a Boolean Function with a Multiplexer

  28. Implementing a Four- Input Function with a Multiplexer

  29. Networks with 2-input multiplexers

  30. Implementation of SFs with network of MUXes

  31. Design of networks with MUXes

  32. Example

  33. Ordering of variables in subtrees affects the number of MUXes

  34. Example of Shannon’s Decomposition F = x3(x1 + x2x0) Implemented using a multiplexer network

  35. F = x3(x1 + x2x0) Start with any variable - x0 for example x0 = 0 F = x3x1 x0 = 1 F = x3(x1 + x2)

  36. F = x3(x1 + x2x0) Then x! for example x1 = 0 F = 0 x0 = 0 F = x3x1 x1 = 1 F = x3 x1 = 0 x0 = 1 F = x3x2 F = x3(x1 + x2) x1 = 1 F = x3

  37. F = x3(x1 + x2x0) Then x2 for example x1 = 0 F = 0 x0 = 0 F = x3x1 x1 = 1 F = x3 x2 = 0 F = 0 x1 = 0 x0 = 1 F = x3x2 F = x3(x1 + x2) x2 = 1 F = x3 x1 = 1 F = x3

  38. F = x3(x1 + x2x0) Inputs x1 = 0 F = 0 x0 = 0 F = x3x1 x1 = 1 F = x3 x2 = 0 F = 0 x1 = 0 x0 = 1 F = x3x2 F = x3(x1 + x2) x2 = 1 F = x3 x1 = 1 F = x3

  39. F = x3(x1 + x2x0) MUX Select Lines x1 = 0 F = 0 x0 = 0 F = x3x1 x1 = 1 F = x3 x2 = 0 F = 0 x1 = 0 x0 = 1 F = x3x2 F = x3(x1 + x2) x2 = 1 F = x3 x1 = 1 F = x3

  40. x1 = 0 F = 0 x0 = 0 F = x3x1 x1 = 1 F = x3 x2 = 0 F = 0 x1 = 0 x0 = 1 F = x3x2 F = x3(x1 + x2) x2 = 1 F = x3 x1 = 1 F = x3 x3x1 0 F 1 sel x3(x1 + x2) x0

  41. x1 = 0 F = 0 x0 = 0 F = x3x1 x1 = 1 F = x3 x2 = 0 F = 0 x1 = 0 x0 = 1 F = x3x2 F = x3(x1 + x2) x2 = 1 F = x3 x1 = 1 F = x3 0 1 sel x3x1 0 x3 0 x1 F The branch for x0 = 0 1 sel x3(x1 + x2) x0

  42. x1 = 0 F = 0 x0 = 0 F = x3x1 x1 = 1 F = x3 x2 = 0 F = 0 x1 = 0 x0 = 1 F = x3x2 F = x3(x1 + x2) x2 = 1 F = x3 x1 = 1 F = x3 0 0 1 1 sel sel x3x1 0 The branch for x0 = 1 x3 0 x1 F 1 sel x3x2 x0 x3 x1 x3(x1 + x2)

  43. x1 = 0 F = 0 x0 = 0 F = x3x1 x1 = 1 F = x3 x2 = 0 F = 0 x1 = 0 x0 = 1 F = x3x2 F = x3(x1 + x2) x2 = 1 F = x3 x1 = 1 F = x3 0 0 0 1 1 1 sel sel sel x3x1 0 The branch for x1 = 0 x3 0 x1 F 0 1 sel x3 x0 x3 x2 x1 x3(x1 + x2) x3x2

  44. 0 0 0 1 1 1 sel sel sel F = x3(x1 + x2x0) • Starting with x0 • Shannon’s Decomposition • 4 Multiplexers 0 x3 0 x1 F 0 1 sel x3 x0 x3 x2 x1

  45. 0 0 1 1 sel sel F = x3(x1 + x2x0) • Starting with x1 • Shannon’s Decomposition • 3 Multiplexers 0 0 0 x0 F x3 x2 1 sel x3 x1

  46. 16-input tree multiplexer

More Related