You are on page 1of 24

Bài 4: Thiết kế một số mạch logic tổ hợp sử dụng VHDL(tt)

BÀI 4: THIẾT KẾ MỘT SỐ MẠCH LOGIC TỔ HỢP SỬ DỤNG VHDL


(MẠCH ĐA HỢP, GIẢI ĐA HỢP)

4.1. THIẾT KẾ MẠCH ĐA HỢP:


4.1.1. Hãy viết chương trình mô tả mạch đa hợp 2 ngõ vào 1 ngõ ra, 1 select.
 Sơ đồ khối của mạch:

 Lập bảng trạng thái:


NGÕ VÀO NGÕ RA
S I1 I0 Q
0 X I0 I0
1 I1 X I1

 Chương trình VHDL:


library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;

entity mux2_1 is
port( I : in std_logic_vector(1 downto 0);
S : in std_logic;
1
Nhóm 8: Nguyễn Lê Thái Dương
Huỳnh Nguyễn Cao Sơn
Tăng Quốc Vinh
Bài 4: Thiết kế một số mạch logic tổ hợp sử dụng VHDL(tt)

O : out std_logic);
end mux2_1;

architecture Behavioral of mux2_1 is


begin
process(I, S)
begin
CASE S is
when '0' => O <= I(0);
when '1' => O <= I(1);
when others => O <= '0';
end case;
end process;
end Behavioral;

2
Nhóm 8: Nguyễn Lê Thái Dương
Huỳnh Nguyễn Cao Sơn
Tăng Quốc Vinh
Bài 4: Thiết kế một số mạch logic tổ hợp sử dụng VHDL(tt)

 Mô phỏng và kết quả mô phỏng:

3
Nhóm 8: Nguyễn Lê Thái Dương
Huỳnh Nguyễn Cao Sơn
Tăng Quốc Vinh
Bài 4: Thiết kế một số mạch logic tổ hợp sử dụng VHDL(tt)

4.1.2. Hãy viết chương trình mô tả mạch đa hợp 4 ngõ vào 1 ngõ ra, 2 select.
 Sơ đồ khối của mạch:

 Lập bảng trạng thái:

NGÕ VÀO NGÕ RA


S1 S0 I3 I2 I1 I0 Q
0 0 X X X I0 I0
0 1 X X I1 X I1
1 0 X I2 X X I2
1 1 I3 X X X I3

 Chương trình VHDL:


library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;

entity mux4_1_2S is
port( I : in std_logic_vector(3 downto 0);
S : in std_logic_vector(1 downto 0);
O : out std_logic);
end mux4_1_2S;

4
Nhóm 8: Nguyễn Lê Thái Dương
Huỳnh Nguyễn Cao Sơn
Tăng Quốc Vinh
Bài 4: Thiết kế một số mạch logic tổ hợp sử dụng VHDL(tt)

architecture Behavioral of mux4_1_2S is


begin
process(I , S)
begin
case S is
when "00" => O <= I(0);
when "01" => O <= I(1);
when "10" => O <= I(2);
WHEN "11" => O <= I(3);
WHEN OTHERS => O <= '0';
end case;
end process;
end Behavioral;

5
Nhóm 8: Nguyễn Lê Thái Dương
Huỳnh Nguyễn Cao Sơn
Tăng Quốc Vinh
Bài 4: Thiết kế một số mạch logic tổ hợp sử dụng VHDL(tt)

 Mô phỏng và kết quả mô phỏng:

6
Nhóm 8: Nguyễn Lê Thái Dương
Huỳnh Nguyễn Cao Sơn
Tăng Quốc Vinh
Bài 4: Thiết kế một số mạch logic tổ hợp sử dụng VHDL(tt)

4.1.3. Hãy viết chương trình mô tả mạch đa hợp 8 ngõ vào 1 ngõ ra, 3 select.
 Sơ đồ khối của mạch:

 Lập bảng trạng thái:


NGÕ VÀO NGÕ RA
S2 S1 S0 I7 I6 I5 I4 I3 I2 I1 I0 Q
0 0 0 X X X X X X X I0 I0
0 0 1 X X X X X X I1 X I1
0 1 0 X X X X X I2 X X I2
0 1 1 X X X X I3 X X X I3
1 0 0 X X X I4 X X X X I4
1 0 1 X X I5 X X X X X I5
1 1 0 X I6 X X X X X X I6
1 1 1 I7 X X X X X X X I7

 Chương trình VHDL:


library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;

entity mux8_1_3s is
port( I : in std_logic_vector(7 downto 0);
S : in std_logic_vector(2 downto 0);
O : out std_logic);
7
Nhóm 8: Nguyễn Lê Thái Dương
Huỳnh Nguyễn Cao Sơn
Tăng Quốc Vinh
Bài 4: Thiết kế một số mạch logic tổ hợp sử dụng VHDL(tt)

end mux8_1_3s;

architecture Behavioral of mux8_1_3s is


begin
process(I, S)
begin
case S is
when "000" => O <= I(0);
when "001" => O <= I(1);
when "010" => O <= I(2);
when "011" => O <= I(3);
when "100" => O <= I(4);
when "101" => O <= I(5);
when "110" => O <= I(6);
when "111" => O <= I(7);
when others => O <= '0';
end case;
end process;
end Behavioral;

8
Nhóm 8: Nguyễn Lê Thái Dương
Huỳnh Nguyễn Cao Sơn
Tăng Quốc Vinh
Bài 4: Thiết kế một số mạch logic tổ hợp sử dụng VHDL(tt)

 Mô phỏng và kết quả mô phỏng:

9
Nhóm 8: Nguyễn Lê Thái Dương
Huỳnh Nguyễn Cao Sơn
Tăng Quốc Vinh
Bài 4: Thiết kế một số mạch logic tổ hợp sử dụng VHDL(tt)

4.1.4. Hãy viết chương trình mô tả mạch đa hợp 16 ngõ vào 1 ngõ ra, 4 select.
 Sơ đồ khối của mạch:

 Lập bảng trạng thái:

 Chương trình VHDL:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;

entity mux16_1_4S is
PORT( I : IN STD_LOGIC_VECTOR(15 DOWNTO 0);
S : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
O : OUT STD_LOGIC);
10
Nhóm 8: Nguyễn Lê Thái Dương
Huỳnh Nguyễn Cao Sơn
Tăng Quốc Vinh
Bài 4: Thiết kế một số mạch logic tổ hợp sử dụng VHDL(tt)

end mux16_1_4S;

architecture Behavioral of mux16_1_4S is


begin
process(I, S)
begin
CASE S IS
WHEN "0000" => O <= I(0);
WHEN "0001" => O <= I(1);
WHEN "0010" => O <= I(2);
WHEN "0011" => O <= I(3);
WHEN "0100" => O <= I(4);
WHEN "0101" => O <= I(5);
WHEN "0110" => O <= I(6);
WHEN "0111" => O <= I(7);
WHEN "1000" => O <= I(8);
WHEN "1001" => O <= I(9);
WHEN "1010" => O <= I(10);
WHEN "1011" => O <= I(11);
WHEN "1100" => O <= I(12);
WHEN "1101" => O <= I(13);
WHEN "1110" => O <= I(14);
WHEN "1111" => O <= I(15);
WHEN OTHERS => O <= '0';
END CASE;
END PROCESS;
end Behavioral;

11
Nhóm 8: Nguyễn Lê Thái Dương
Huỳnh Nguyễn Cao Sơn
Tăng Quốc Vinh
Bài 4: Thiết kế một số mạch logic tổ hợp sử dụng VHDL(tt)

 Mô phỏng và kết quả mô phỏng:

12
Nhóm 8: Nguyễn Lê Thái Dương
Huỳnh Nguyễn Cao Sơn
Tăng Quốc Vinh
Bài 4: Thiết kế một số mạch logic tổ hợp sử dụng VHDL(tt)

4.2. THIẾT KẾ MẠCH GIẢI ĐA HỢP


4.2.1. Hãy viết chương trình mô tả mạch giải đa hợp 1 ngõ vào 2 ngõ ra, 1
select.
 Sơ đồ khối của mạch:

 Lập bảng trạng thái:


NGÕ VÀO NGÕ RA
I S Q1 Q0
I 0 0 I
I 1 I 0

 Chương trình VHDL:


library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity demux1_2 is
port ( I: in STD_LOGIC;
S: in STD_LOGIC;
Q: out STD_LOGIC_VECTOR(1 downto 0));
end demux1_2;

architecture Behavioral of demux1_2 is


13
Nhóm 8: Nguyễn Lê Thái Dương
Huỳnh Nguyễn Cao Sơn
Tăng Quốc Vinh
Bài 4: Thiết kế một số mạch logic tổ hợp sử dụng VHDL(tt)

begin
PROCESS(I,S)
begin
case S is
WHEN '0' => Q(0) <= I;
WHEN '1' => Q(1) <= I;
WHEN OTHERS => NULL;
END CASE;
END PROCESS;
end Behavioral;

14
Nhóm 8: Nguyễn Lê Thái Dương
Huỳnh Nguyễn Cao Sơn
Tăng Quốc Vinh
Bài 4: Thiết kế một số mạch logic tổ hợp sử dụng VHDL(tt)

 Mô phỏng và kết quả mô phỏng:

15
Nhóm 8: Nguyễn Lê Thái Dương
Huỳnh Nguyễn Cao Sơn
Tăng Quốc Vinh
Bài 4: Thiết kế một số mạch logic tổ hợp sử dụng VHDL(tt)

4.2.2. Hãy viết chương trình mô tả mạch giải đa hợp 1 ngõ vào 4 ngõ ra, 2
select.
 Sơ đồ khối của mạch:

 Lập bảng trạng thái:


NGÕ VÀO NGÕ RA
I S1 S0 Q3 Q2 Q1 Q0
I 0 0 0 0 0 I
I 0 1 0 0 I 0
I 1 0 0 I 0 0
I 1 1 I 0 0 0

 Chương trình VHDL:


library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity demux1_4 is
port ( I: in STD_LOGIC;
S: in STD_LOGIC_VECTOR(1 downto 0);
16
Nhóm 8: Nguyễn Lê Thái Dương
Huỳnh Nguyễn Cao Sơn
Tăng Quốc Vinh
Bài 4: Thiết kế một số mạch logic tổ hợp sử dụng VHDL(tt)

Q: out STD_LOGIC_VECTOR(3 downto 0));


end demux1_4;

architecture Behavioral of demux1_4 is

begin
PROCESS(I,S)
begin
case S is
WHEN "00" => Q(0) <= I;
WHEN "01" => Q(1) <= I;
WHEN "10" => Q(2) <= I;
WHEN "11" => Q(3) <= I;
WHEN OTHERS => NULL;
END CASE;
END PROCESS;
end Behavioral;

17
Nhóm 8: Nguyễn Lê Thái Dương
Huỳnh Nguyễn Cao Sơn
Tăng Quốc Vinh
Bài 4: Thiết kế một số mạch logic tổ hợp sử dụng VHDL(tt)

 Mô phỏng và kết quả mô phỏng:

18
Nhóm 8: Nguyễn Lê Thái Dương
Huỳnh Nguyễn Cao Sơn
Tăng Quốc Vinh
Bài 4: Thiết kế một số mạch logic tổ hợp sử dụng VHDL(tt)

4.2.3. Hãy viết chương trình mô tả mạch giải đa hợp 1 ngõ vào 8 ngõ ra, 3
select.
 Sơ đồ khối của mạch:

 Lập bảng trạng thái:

 Chương trình VHDL:


library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

19
Nhóm 8: Nguyễn Lê Thái Dương
Huỳnh Nguyễn Cao Sơn
Tăng Quốc Vinh
Bài 4: Thiết kế một số mạch logic tổ hợp sử dụng VHDL(tt)

entity demux1_8 is
port ( I: in STD_LOGIC;
S: in STD_LOGIC_VECTOR(2 downto 0);
Q: out STD_LOGIC_VECTOR(7 downto 0));
end demux1_8;

architecture Behavioral of demux1_8 is

begin
PROCESS(I,S)
begin
case S is
WHEN "000" => Q(0) <= I;
WHEN "001" => Q(1) <= I;
WHEN "010" => Q(2) <= I;
WHEN "011" => Q(3) <= I;
WHEN "100" => Q(4) <= I;
WHEN "101" => Q(5) <= I;
WHEN "110" => Q(6) <= I;
WHEN "111" => Q(7) <= I;
WHEN OTHERS => NULL;
END CASE;
END PROCESS;

20
Nhóm 8: Nguyễn Lê Thái Dương
Huỳnh Nguyễn Cao Sơn
Tăng Quốc Vinh
Bài 4: Thiết kế một số mạch logic tổ hợp sử dụng VHDL(tt)

end Behavioral;

 Mô phỏng và kết quả mô phỏng:

21
Nhóm 8: Nguyễn Lê Thái Dương
Huỳnh Nguyễn Cao Sơn
Tăng Quốc Vinh
Bài 4: Thiết kế một số mạch logic tổ hợp sử dụng VHDL(tt)

4.2.4. Hãy viết chương trình mô tả mạch giải đa hợp 1 ngõ vào 16 ngõ ra, 4
select.
 Sơ đồ khối của mạch:

 Lập bảng trạng thái:

 Chương trình VHDL:


library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity demux1_16 is
port ( I: in STD_LOGIC;
S: in STD_LOGIC_VECTOR(3 downto 0);
Q: out STD_LOGIC_VECTOR(15 downto 0));
22
Nhóm 8: Nguyễn Lê Thái Dương
Huỳnh Nguyễn Cao Sơn
Tăng Quốc Vinh
Bài 4: Thiết kế một số mạch logic tổ hợp sử dụng VHDL(tt)

end demux1_16;

architecture Behavioral of demux1_16 is

begin
PROCESS(I,S)
begin
case S is
WHEN "0000" => Q(0) <= I;
WHEN "0001" => Q(1) <= I;
WHEN "0010" => Q(2) <= I;
WHEN "0011" => Q(3) <= I;
WHEN "0100" => Q(4) <= I;
WHEN "0101" => Q(5) <= I;
WHEN "0110" => Q(6) <= I;
WHEN "0111" => Q(7) <= I;
WHEN "1000" => Q(8) <= I;
WHEN "1001" => Q(9) <= I;
WHEN "1010" => Q(10) <= I;
WHEN "1011" => Q(11) <= I;
WHEN "1100" => Q(12) <= I;
WHEN "1101" => Q(13) <= I;
WHEN "1110" => Q(14) <= I;
WHEN "1111" => Q(15) <= I;
WHEN OTHERS => NULL;
END CASE;
END PROCESS;
end Behavioral;

23
Nhóm 8: Nguyễn Lê Thái Dương
Huỳnh Nguyễn Cao Sơn
Tăng Quốc Vinh
Bài 4: Thiết kế một số mạch logic tổ hợp sử dụng VHDL(tt)

 Mô phỏng và kết quả mô phỏng:

24
Nhóm 8: Nguyễn Lê Thái Dương
Huỳnh Nguyễn Cao Sơn
Tăng Quốc Vinh

You might also like