asdadas
BÁO CÁO GIỮA KỲ MÔN THỰC HÀNH PLD VÀ ASIC BÀI 2: HƯỚNG DẪN SỬ DỤNG MÔ PHỎNG THIẾT KẾ PLD BẰNG ISE WEBPACK Bài 201: mạch giải mã 2 sang 4 đường Code: entity GIAIMA_24 is Port ( I : in STD_LOGIC_VECTOR (1 downto 0); Q : OUT STD_LOGIC_VECTOR (3 downto 0)); end GIAIMA_24; architecture Behavioral of GIAIMA_24 is begin PROCESS(I) BEGIN CASE I IS WHEN "00" => Q <= "0001"; WHEN "01" => Q <= "0010"; WHEN "10" => Q <= "0100"; WHEN "11" => Q <= "1000"; WHEN OTHERS => NULL; END CASE; END PROCESS; end GIANG; Mô phỏng: Bài 202: mạch đếm nhị phân 4 bit Code: entity COUNT_4BIT is Port ( CLK : in STD_LOGIC; CLR : in STD_LOGIC; Q : out STD_LOGIC_VECTOR (03 downto 0)); end COUNT_4BIT; architecture GIANG of COUNT_4BIT is begin PROCESS (CLK,CLR) VARIABLE QTAM: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN IF CLR='0' THEN QTAM:="0000"; ELSIF CLK='1' AND CLK'EVENT THEN QTAM:=QTAM+1; END IF; Q <= QTAM; END PROCESS; end GIANG; Mô phỏng: BÀI 4: CHƯƠNG TRÌNH VHDL CHO CÁC MẠCH TỔ HỢP PHẦN 1: MẠCH GIẢI MÃ Bài 401:viết chương trình mô tả mạch giải mã 2 đường sang 4 đường ngõ ra tích cực mức thấp, có them 1 chân E cho phép giải mã khi ở mức 1 Code: entity GIAIMA_24E is Port ( E : in STD_LOGIC; I : in STD_LOGIC_VECTOR (1 downto 0); Q : out STD_LOGIC_VECTOR (3 downto 0)); end GIAIMA_24E; architecture GIANG of GIAIMA_24E is begin PROCESS (E,I) BEGIN IF E ='0' THEN Q<= "0000"; ELSE CASE I IS WHEN"00" => Q <= "0001"; WHEN"01" => Q <= "0010"; WHEN"10" => Q <= "0100"; WHENOTHERS=> Q <= "1000"; END CASE; END IF; END PROCESS; end GIANG; Mô phỏng: Bài 402: mạch giải mã 2 đường sang 4 đường ngõ ra tích cực mức thấp, có chân E cho phép giải mã khi ở mức 1 và chân S cho phép chọn mức tích cực ngõ ra: nếu S=0 thì ngõ ra tích cực mức thấp, S=1 thì ngõ ra tích cực mức 1 Code: entity GIAIMA_24ES is Port ( I : in STD_LOGIC_VECTOR (01 downto 0); E : in STD_LOGIC; S : in STD_LOGIC; Q : out STD_LOGIC_VECTOR (03 downto 0)); end GIAIMA_24ES; architecture GIANG of GIAIMA_24ES is begin PROCESS (E,S,I) VARIABLE QTAM: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN IF E='0' THEN QTAM:="1111"; ELSE CASE I IS WHEN"00" => QTAM:="1110"; WHEN"01" => QTAM:="1101"; WHEN"10" => QTAM:="1011"; WHENOTHERS=> QTAM:="0111"; END CASE; END IF; IF S='0' THEN Q<= QTAM; ELSE Q<= NOT(QTAM); END IF; END PROCESS; end GIANG; mô phỏng: Bài 403:chương trình mô tả mạch giải mã 3 đường sang 8 đường ngõ ra tích cực mức thấp có thêm chân E cho phép giải mã khi mức 1 Code: entity GIAIMA_38E is Port ( E : in STD_LOGIC; I : in STD_LOGIC_VECTOR (02 downto 0); Q : out STD_LOGIC_VECTOR (07 downto 0)); end GIAIMA_38E; architecture GIANG of GIAIMA_38E is begin PROCESS (E,I) BEGIN IF E ='0' THEN Q <= "00000000"; ELSE CASE I IS WHEN "000" => Q <= "00000001"; WHEN "001" => Q <= "00000010"; WHEN "010" => Q <= "00000100"; WHEN "011" => Q <= "00001000"; WHEN "100" => Q <= "00010000"; WHEN "101" => Q <= "00100000"; WHEN "110" => Q <= "01000000"; WHEN OTHERS => Q <= "10000000"; END CASE; END IF; END PROCESS; end GIANG; Mô phỏng: Bài 404:chương trình giải mã 3 sang 8 ngõ ra tích cực mức cao. Có chân E cho phép giải mã khi ở mức 1, và chân S cho phép lựa chọn mức tích cực ngõ ra: S=0 ngõ ra tích cực mức thấp ,S=1 ngõ ra mức cao Code: entity GIAIMA_38ES is Port ( S : in STD_LOGIC; E : in STD_LOGIC; I : in STD_LOGIC_VECTOR (02 downto 0); Q : out STD_LOGIC_VECTOR (07 downto 0)); end GIAIMA_38ES; architecture GIANG of GIAIMA_38ES is begin PROCESS(E,S,I) VARIABLE QTAM: STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN IF E='1' THEN Q <= "11111111"; ELSE CASE I IS WHEN "000" => QTAM:="11111110"; WHEN "001" => QTAM:="11111101"; WHEN "010" => QTAM:="11111011"; WHEN "011" => QTAM:="11110111"; WHEN "100" => QTAM:="11101111"; WHEN "101" => QTAM:="11011111"; WHEN "110" => QTAM:="10111111"; WHEN OTHERS=> QTAM:="01111111"; END CASE; END IF; IF S='0' THEN Q <= QTAM; ELSE Q <= NOT(QTAM); END IF; END PROCESS; end GIANG; Mô phỏng: Bài 405:mạch giải mã mô tả IC 74138 (hình 4-3 sách thực hành trang 59) Code: entity IC74138 is Port ( I : in STD_LOGIC_VECTOR (02 downto 0); G : in STD_LOGIC_VECTOR (02 downto 0); Q : OUT STD_LOGIC_VECTOR (07 downto 0)); end IC74138; architecture GIANG of IC74138 is begin PROCESS(I,G) VARIABLE QT: STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN IF ( G(0) ='0' OR G(1) ='0' OR G(2) ='0' )THEN QT:= "11111111"; ELSIF G = "111" THEN CASE I IS WHEN "000" => QT:= "11111110"; WHEN "001" => QT:= "11111101"; WHEN "010" => QT:= "11111011"; WHEN "011" => QT:= "11110111"; WHEN "100" => QT:= "11101111"; WHEN "101" => QT:= "11011111"; WHEN "110" => QT:= "10111111"; WHEN OTHERS=> QT:= "01111111"; END CASE; END IF; Q <= QT; END PROCESS; end GIANG; Mô phỏng: PHẦN 2: MẠCH TỔ HỢP Bài 406:chương trình mô tả mạch giải mã giống IC 74139 (hình 4-4 trang 60) Code: entity IC74139 iS Port ( EA : in STD_LOGIC; EB : in STD_LOGIC; A : in STD_LOGIC_VECTOR (01 downto 0); B : in STD_LOGIC_VECTOR (01 downto 0); Q : out STD_LOGIC_VECTOR (07 downto 0)); end IC74139; architecture GIANG of IC74139 is SIGNAL QTA : STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL QTB : STD_LOGIC_VECTOR(3 DOWNTO 0); begin PROCESS (EA,A) BEGIN IF EA='0' THEN QTA <="0000"; ELSE CASE A IS WHEN"00" => QTA <="0001"; WHEN"01" => QTA <="0010"; WHEN"10" => QTA <="0100"; WHENOTHERS=> QTA <="1000"; END CASE; END IF; END PROCESS; PROCESS (EB,B) BEGIN IF EB='0' THEN QTB <="0000"; ELSE CASE B IS WHEN"00" => QTB <="0001"; WHEN"01" => QTB <="0010"; WHEN"10" => QTB <="0100"; WHENOTHERS=> QTB <="1000"; END CASE; END IF; END PROCESS; Q <= QTA & QTB; end GIANG; Mô phỏng: Bài 407:chương trình mô tả mạch mã hóa 8 sang 3 ngõ ra tích cực mức thấp Code: entity MAHOA_83 is Port ( I : in STD_LOGIC_VECTOR (07 downto 0); Q : out STD_LOGIC_VECTOR (02 downto 0)); end MAHOA_83; architecture GIANG of MAHOA_83 is begin PROCESS (I) VARIABLE QTAM: STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN CASE I IS WHEN"11111110" => QTAM:= "000"; WHEN"11111101" => QTAM:= "001"; WHEN"11111011" => QTAM:= "010"; WHEN"11110111" => QTAM:= "011"; WHEN"11101111" => QTAM:= "100"; WHEN"11011111" => QTAM:= "101"; WHEN"10111111" => QTAM:= "110"; WHEN"01111111" => QTAM:= "111"; WHENOTHERS => NULL; END CASE; Q <= QTAM; END PROCESS; end GIANG; Mô phỏng: Bài 408: chương trình mã hóa 8 sang 3 với ngõ ra tích cực mức thấp, có chân E cho phép mã hóa khi ở mức 1 Code: entity MAHOA_83E is Port ( E : in STD_LOGIC; I : in STD_LOGIC_VECTOR (07 downto 0); Q : out STD_LOGIC_VECTOR (02 downto 0)); end MAHOA_83E; architecture GIANG of MAHOA_83E is begin PROCESS (E,I) VARIABLE QTAM: STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN IF E='0' THEN QTAM:= "000"; ELSE CASE I IS WHEN "11111110" => QTAM:="000"; WHEN "11111101" => QTAM:="001"; WHEN "11111011" => QTAM:="010"; WHEN "11110111" => QTAM:="011"; WHEN "11101111" => QTAM:="100"; WHEN "11011111" => QTAM:="101"; WHEN "10111111" => QTAM:="110"; WHEN "01111111" => QTAM:="111"; WHEN OTHERS => NULL; END CASE; END IF; Q <= QTAM; END PROCESS; end GIANG; Mô phỏng: