Def === МУЛЬТИПЛЕКСОР - устройство подключающее один из входных каналов к выходному под воздействием управляющих входов. (Multiplexer) ANSI/DIN
Простейший мультиплексор 2 в 1. Если S0 == 0 то O = D0 Если S0 == 1 то O = D1 ---------------- S0 D1 D0 | O ---------+------ 0 0 0 | 0 // D0 0 0 1 | 1 // D0 0 1 0 | 0 // D0 0 1 1 | 1 // D0 1 0 0 | 0 // D1 1 0 1 | 0 // D1 1 1 0 | 1 // D1 1 1 1 | 1 // D1 ----------------
Мультиплексор легко реализуется на CMOS.
Программа для Мультиплексора 2 в 1 на Verilog (switch-level): module mux2_1(out,s,i0,i1); output out; input s,i0,i1; wire sinv; // sinv = ~ s not(sinv,s); cmos(out,i0,sinv,s); cmos(out,i1,s,sinv); endmodule;
Программа на VHDL (для мультиплексора 2x1): library ieee; use ieee.std_logic_1164.all; entity MUX1 is port ( SEL, X0, X1 : in std_logic; F : out std_logic); end MUX1; architecture RTL of MUX1 is begin F <= X0 when SEL = '0' else X1; end RTL; Результаты эмуляции:
Программа на Verilog для мультиплексора 4 в 1: module MUX4(C,D,E,F,S,MUX_OUT); input C,D,E,F; input [1:0] S; output MUX_OUT; reg MUX_OUT; always @(C or D or E or F or S) begin case(S) 2'b00 : MUX_OUT = C; 2'b01 : MUX_OUT = D; 2'b10 : MUX_OUT = E; default : MUX_OUT = F; endcase end endmodule
Пример мультиплексора 4 в 1:
Его реализация на CMOS:
Реализация логики с помощью MUX:
AND: ------------------ | 0 x | y | s0 s1 | out ---+--------+----- 0 | 0* 0 | 0 0 | 0* 1 | 0 1 | 0 0* | 0 1 | 0 1* | 1 ------------------ OR: ------------------ | X 1 | y | s0 s1 | out ---+--------+----- 0 | 0* 1 | 0 0 | 1* 1 | 1 1 | 0 1* | 1 1 | 1 1* | 1 ------------------ XOR: ------------------ | X X# | y | s0 s1 | out ---+--------+----- 0 | 0* 1 | 0 0 | 1* 0 | 1 1 | 0 1* | 1 1 | 1 0* | 0 ------------------