Bộ Multiplexers trong VHDL

Lu ROm

Administrator
Staff member
25 Tháng bảy 2014
481
119
43
32
One piece
vimach.net
- Bộ Multiplexers là một trong những mạch quan trong trong thiết kế FPGA. Nó là một trong những thành phần cơ bản tạo nên mạch thiết kế.Multiplexer hay Mạch ghép kênh hay MUX, là phần tử chọn một trong số các kênh ngõ vào tín hiệu analog hay digital và chuyển tiếp chúng ở một ngõ ra duy nhất. Một Multiplexer cho 2N kênh vào có N địa chỉ chọn, được sử dụng để lựa chọn ngõ vào nào được gửi đến đầu ra.
**Bộ MUX 2 to 1 4bit
- Tín hiệu điều khiển SEL cho phép đầu ra là X=A nếu SEL = 1, cho phép đầu ra là X=B nếu SEL = 0.
mux-2to1-4-bit.png

- Code:
Mã:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity mux_2to1_top is
    Port ( SEL : in  STD_LOGIC;
           A   : in  STD_LOGIC_VECTOR (3 downto 0);
           B   : in  STD_LOGIC_VECTOR (3 downto 0);
           X   : out STD_LOGIC_VECTOR (3 downto 0));
end mux_2to1_top;

architecture Behavioral of mux_2to1_top is
begin
    X <= A when (SEL = '1') else B;
end Behavioral;
- Từ khóa whenelse được sử dụng để tạo ra bộ mux này. Cấu trúc when-else là cấu trúc gán tín hiệu có điều kiện. Gán các tín hiệu trên trái when (A ) với tín hiệu đầu ra (X) nếu điều kiện ở bên phải when là đúng (SEL = '1 '). Nếu điều kiện sai, tín hiệu bên phải else (8) sẽ được gán với tín hiệu đầu ra (SEL = 0).
** Tương tự ta có thể thiết kế bộ mux 4 to 1 với đầu vào và ra đều 1bit. Chúng ta cần sử dụng 2 tín hiệu điều khiển( SEL1, SEL2) hoặc tín hiệu SEL có 2 bit.
- Code:
Mã:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity mux_4to1_top is
    Port ( SEL : in  STD_LOGIC_VECTOR (1 downto 0);     -- select input
           A   : in  STD_LOGIC_VECTOR (3 downto 0);     -- inputs
           X   : out STD_LOGIC);                        -- output
end mux_4to1_top;

architecture Behavioral of mux_4to1_top is
begin
with SEL select
    X <= A(0) when "00",
         A(1) when "01",
         A(2) when "10",
         A(3) when "11",
         '0'  when others;
end Behavioral;