bao cao thi nghiem dien tu so(bai 3 + 4 + 5 + 6)

21
BÁO CÁO THÍ NGHIỆM MÔN HỌC ĐIỆN TỬ SỐ Họ và tên : Trần Trung Hiếu Lớp : KS2K52 ĐTVT SHSV : 20077030 Mã lớpTN : 17987 GVHD: BÀI 3: GIỚI THIỆU VỀ QUARTUS II VÀ QUY TRÌNH THIẾT KẾ TRÊN FPGA I. MỤC ĐÍCH BÀI THÍ NGHIỆM: Bài thí nghiệm này giới thiệu về phần mềm Quartus II và tổng quan về các bước thực hiện trên CAD cho quy trình thiết kế mạch số. Ví dụ về thiết kế mạch đơn giản minh họa cho từng bước dùng phần mềm Quartus II và thực hiện trên FPGA của Altera. II. KẾT QUẢ MÔ PHỎNG, CHUẨN BỊ Ở NHÀ: Các bước thể hiện quy trình thiết kế số trên các IC có thể lập trình (FPGA/CPLD) như sau: 1

Upload: hieu-tran

Post on 30-Jun-2015

836 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Bao Cao Thi Nghiem Dien Tu So(Bai 3 + 4 + 5 + 6)

BÁO CÁO THÍ NGHIỆM MÔN HỌC ĐIỆN TỬ SỐ

Họ và tên : Trần Trung Hiếu Lớp : KS2K52 ĐTVT

SHSV : 20077030 Mã lớpTN : 17987

GVHD:

BÀI 3:GIỚI THIỆU VỀ QUARTUS II VÀ QUY TRÌNH THIẾT KẾ TRÊN FPGA

I. MỤC ĐÍCH BÀI THÍ NGHIỆM:

Bài thí nghiệm này giới thiệu về phần mềm Quartus II và tổng quan về các bước thực hiện trên CAD cho quy trình thiết kế mạch số. Ví dụ về thiết kế mạch đơn giản minh họa cho từng bước dùng phần mềm Quartus IIvà thực hiện trên FPGA của Altera.

II. KẾT QUẢ MÔ PHỎNG, CHUẨN BỊ Ở NHÀ:

Các bước thể hiện quy trình thiết kế số trên các IC có thể lập trình (FPGA/CPLD) như sau:

Trong bài thí nghiệm này, chúng ta sẽ tạo một mạch điều khiển đèn hai chiều như trong hình . Mạch có thể dùng để điều khiển một đèn LED khi một trong hai chuyển mạch x1 hoặc x2 đóng, tương

1

Page 2: Bao Cao Thi Nghiem Dien Tu So(Bai 3 + 4 + 5 + 6)

ứng với mức logic “1”. Chú ý rằng chỉ cần dùng hàm XOR cho hai đầu vào x1 và x2, tuy nhiên chúng ta sẽ xây dựng lại bằngcác cổng logic rời rạc.

Mạch logic điều khiển đèn và bảng chân lý của mạch

Chương trình viết bằng VHDL:

library IEEE;use IEEE.STD_LOGIC_1164.all;entity light isport( x1, x2: in std_logic;f : out std_logic);end light;architecture Behavioral of light isbeginf <= (x1 and not x2) or (not x1 and x2);end Behavioral;

Hình ảnh mô phỏng chức năng của mạch.

III. KIẾN THỨC, KĨ NĂNG THU ĐƯỢC CHO BẢN THÂN SAU KHI THAM GIA QUÁ TRÌNH THÍ NGHIỆM:

2

Page 3: Bao Cao Thi Nghiem Dien Tu So(Bai 3 + 4 + 5 + 6)

Đã biết: - Cơ bản về thiết kế số, - Cơ bản về ngôn ngữ mô tả phần cứng VHDL, - Nắm rõ cách sử dụng kit DE1.

Làm được: - Biết cách tạo một dự án trên phần mềm Quartus II. - Biết cách tổng hợp mạch logic từ mã VHDL dùng trình tổng hợp tích hợp sẵn của Quartus II. - Biết cách thực hiện mô phỏng cho mạch logic. - Biết cách gán chân cho FPGA để đưa các tín hiệu vào ra mạch logic nối với các chân trên FPGA. - Biết cách nạp và cấu hình cho FPGA

BÀI 4:THIẾT KẾ BỘ SO SÁNH 3 BIT

I. MỤC ĐÍCH BÀI THÍ NGHIỆM:

Bài này thực hiện bộ so sánh hai số, các số được biểu diễn bởi 3 bit. Mạch điện được thực hiệnthông qua lập trình VHDL chạy trong Quartus II và trên bo mạch DE1. Hai số được đưa vào sosánh thông qua các chuyển mạch, kết quả được hiển thị trên các đèn LED.

II. KẾT QUẢ MÔ PHỎNG, CHUẨN BỊ Ở NHÀ:

Nhìn chung, việc so sánh số nhiều bit có thể được thực hiện bằng cách so sánh trọng số của cácbit từ cao xuống thấp để nhận ra đâu là số lớn hơn. Việc so sánh này cần phải được thực hiện từcác bít có trọng lượng cao xuống các bit có trọng lượng thấp hơn.Như vậy, bộ so sánh hai số n bit bất kỳ có thể được hình thành từ các bộ so sánh với số bit nhỏhơn. Bộ so sánh nhỏ nhất là bộ so sánh 1 bit (2 đầu vào mỗi đầu vào 1 bit và 3 đầu vào lấy kếtquả từ các bộ so sánh trước đó).

Dưới đây là các bước thực hiện bộ so sánh 3 bit với 3 đầu ra biểu lớn hơn (LO), bằng (BO) vànhỏ hơn (NO). Bộ so sánh này được hình thành từ 3 bộ so sánh 1 bit ghép với nhau. Hình 1 dướiđây cho thấy sơ đồ bộ so sánh 3 bit, bộ so sánh 1 bit, bảng chân lý của các bộ so sánh 3 bit và 1bit. Trong đó, các đầu ra của bộ so sánh 1 bit được tối ưu thông qua bìa Karnaugh:

a.)Bộ So Sánh 3 Bit

3

Page 4: Bao Cao Thi Nghiem Dien Tu So(Bai 3 + 4 + 5 + 6)

b) Bộ so sánh 3 bit được ghép từ các bộ 1 bit

c) Bảng chân lý của bộ so sánh 3 bit

4

Page 5: Bao Cao Thi Nghiem Dien Tu So(Bai 3 + 4 + 5 + 6)

d) Bộ so sánh 3 bit

f) Hàm logic các đầu ra của vộ so sánh 1 bit

5

Page 6: Bao Cao Thi Nghiem Dien Tu So(Bai 3 + 4 + 5 + 6)

Chương trình viết bằng VHDL:

library ieee;use ieee.std_logic_1164.all;ENTITY sosanh_1bit IS --B? so sánh 1bitPORT (x: IN std_logic;y: IN std_logic;LI: IN std_logic;BI: IN std_logic;NI: IN std_logic;LO: OUT std_logic;BO: OUT std_logic;NO: OUT std_logic);END sosanh_1bit;ARCHITECTURE LogicFunc ofsosanh_1bit ISBEGIN -- ho?t d?ng c?a b? so sánh 1bitLO<=LI OR (BI AND x AND NOT y);BO<=(BI AND (NOT x AND NOT y))OR (BI AND x AND y);NO<=(NOT LI AND NOT BI) OR (NOTLI AND NOT x AND y);END LogicFunc;library ieee;use ieee.std_logic_1164.all;

ENTITY sosanh_3bit ISPORT (AA : IN std_logic_vector(2 downto0);BB : IN std_logic_vector(2 downto0);L : OUT std_logic;B : OUT std_logic;N : OUT std_logic);END sosanh_3bit;ARCHITECTURE STRUCT ofsosanh_3bit ISCOMPONENT sosanh_1bitPORT (x: IN std_logic;y: IN std_logic;LI: IN std_logic;BI: IN std_logic;NI: IN std_logic;LO: OUT std_logic;BO: OUT std_logic;NO: OUT std_logic);END COMPONENT;signal L_1, L_2, B_1, B_2, N_1, N_2 :std_logic;BEGINu2 : sosanh_1bit PORT MAP (x => AA(2),

y => BB(2)

LI => '0',BI => '1',NI => '0',LO => L_2,BO => B_2,NO => N_2);u1 : sosanh_1bit PORT MAP (x => AA(1),y => BB(1),LI => L_2,BI => B_2,NI => N_2,LO => L_1,BO => B_1,NO => N_1);u0 : sosanh_1bit PORT MAP (x => AA(0),y => BB(0),LI => L_1,BI => B_1,NI => N_1,LO => L,BO => B,NO => N);END STRUCT;

Sơ đồ mạch so sánh 3 bit

6

Page 7: Bao Cao Thi Nghiem Dien Tu So(Bai 3 + 4 + 5 + 6)

Hình ảnh mô phỏng chức năng

III. KIẾN THỨC, KĨ NĂNG THU ĐƯỢC CHO BẢN THÂN SAU KHI THAM GIA QUÁ TRÌNH THÍ NGHIỆM:

Đã biết: Bảng biểu diễn chức năng yêu cầu bằng bảng chân lý, hiểu cấu trúc và cách viết một chương trình VHDL ở mức cơ bản.Làm được: - Sinh viên hiểu cách thực hiện bộ so sánh 2 số được biểu diễn dưới dạng nhị phân 3 bit

- Cách thực hiện thiết kế từ những yêu cầu đặt ra

- Kỹ năng sử dụng công cụ hỗ trợ thiết kế mạch Quartus II, phân tích, tổng hợp, và đánh giá kết quả.

BÀI 5:MẠCH DÃY, XÂY DỰNG BỘ ĐẾM

I. MỤC ĐÍCH BÀI THÍ NGHIỆM:

Bài này hướng dẫn cách việc thiết kế bộ đếm 4 bit sử dụng một trong các loại flip-flop. Mạchđiện được thực hiện thông qua lập trình VHDL chạy trong Quartus II và trên bo mạch DE1/DE2.Giá trị đếm tăng khi gặp sườn dương xung clock và được hiển thị trên đèn LED 7 thanh.

II. KẾT QUẢ MÔ PHỎNG, CHUẨN BỊ Ở NHÀ:

Để thiết kế mạch số bất kỳ, ta cần chuyển các mô tả chức năng về dạng bảng chân lý. Sau đó dựa

7

Page 8: Bao Cao Thi Nghiem Dien Tu So(Bai 3 + 4 + 5 + 6)

trên bảng chân lý của loại flip-flop sẽ dùng để viết phương trình kích thích hợp ở đầu vào củaflip-flop sao cho nhận được trạng thái ở đầu ra mong muốn. Có hai loại mạch dãy là Moore và Mealy. Vớimạch dãy loại Moore, đầu ra của mạch chỉ phụ thuộc trực tiếp vào trạng thái của mạch. LoạiMealy có đầu ra phụ thuộc trực tiếp vào đầu vào và trạng thái của mạch. Bài tập được đưa ra ởđây thuộc loại Moore.Ở đây, xung clock được đưa vào các chân CLK của các flip-flop và nó được dùng làm thay đổitrạng thái của flip-flop. Bộ đếm 4 bit được xây dựng dùng các flip-flop loại T. Bảng chân lý củabộ đếm này như được đưa ra trong Hình dưới đây:

a. Bảng chân lý cho bộđếm 4bit

8

Page 9: Bao Cao Thi Nghiem Dien Tu So(Bai 3 + 4 + 5 + 6)

b. bảng kích của flip-flop T và của bộ đếm

Chương trình viết bằng VHDL:

9

Page 10: Bao Cao Thi Nghiem Dien Tu So(Bai 3 + 4 + 5 + 6)

library ieee;use ieee.std_logic_1164.all;ENTITY T_FF isPORT ( T: in std_logic;RST: in std_logic;Clk: in std_logic;Q: out std_logic);END T_FF;ARCHITECTURE Behavioral ofT_FF ISsignal temp: std_logic;beginprocess (Clk)beginif Clk'event and Clk='1' thenif RST='1' thentemp <= '0';elsif T='0' thentemp <= temp;elsif T='1' then

library ieee;use ieee.std_logic_1164.all;ENTITY Bo_dem ISPORT (Clock_bd: IN std_logic;Reset_bd: IN std_logic;Y3 : OUT std_logic;Y2 : OUT std_logic;Y1 : OUT std_logic;Y0: OUT std_logic);END Bo_dem;ARCHITECTURE STRUCTof Bo_dem ISCOMPONENT T_FFPORT ( T: in std_logic;RST: in std_logic;Clk: in std_logic;Q: out std_logic);END COMPONENT;signal T_0, T_1, T_2, T_3,Q_0, Q_1, Q_2, Q_3, Reset,

u1 : T_FF PORT MAP (T =>T_1,RST=>Reset,Clk=>Clock,Q=>Q_1);u0 : T_FF PORT MAP (T =>T_0,RST=>Reset,Clk=>Clock,Q=>Q_0);T_3<=Q_2 AND Q_1 ANDQ_0;T_2<= (NOT Q_3 ANDQ_1 AND Q_0) OR (NOTQ_2 AND Q_1 AND Q_0);T_1<=Q_0;T_0<='1';Clock<=Clock_bd;Reset<=Reset_bd;

Sơ đồ mạch bộ đếm:

Hình ảnh mô phỏng chức năng:

10

Page 11: Bao Cao Thi Nghiem Dien Tu So(Bai 3 + 4 + 5 + 6)

III. KIẾN THỨC, KĨ NĂNG THU ĐƯỢC CHO BẢN THÂN SAU KHI THAM GIA QUÁ TRÌNH THÍ NGHIỆM:

Đã biết: Bảng biểu diễn chức năng yêu cầu dùng bảng chân lý, sử dụng bảng chân lý của flip-flop để viếtcác phương trình kích, cách viết một chương trình VHDL ở mức nâng cao dùng các process.Làm được: - Sinh viên hiểu cách thực hiện mạch dãy dùng flip-flop, - Cách thực hiện thiết kế từ những yêu cầu đặt ra, - Kỹ năng sử dụng công cụ hỗ trợ thiết kế mạch Quartus II, phân tích, tổng hợp, và đánh giá kết quả.

BÀI 6:TRẠNG THÁI MÁY HỮU HẠN – FSM

I. MỤC ĐÍCH BÀI THÍ NGHIỆM:

Triển khai một mạch logic để nhận biết hai chuỗi của các tín hiệu đầu vào xác định dùng FSM, cụ thể là bốn lần liên tục mức 1 hoặc bốn lần liên tục mức 0. Có một đầu vào w và một đầu ra z. Bất kể khi nào w= 1 hoặc w = 0 trong bốn xung nhịp đồng hồ liên tiếp thì đầu ra z có giá trị 1; ngược lại, z = 0. Cho phép hiện tượng chồng các chuỗi, vì thế nếu w = 1 trong năm xung nhịp đồng hồ liên tiếp đầu ra z sẽ bằng 1sau xung nhịp thứ bốn và thứ năm. Hình 1 minh họa quan hệ yêu cầu giữa w và z.

Hình 1. Yêu cầu về mặt thời gian cho đầu ra zII. KẾT QUẢ MÔ PHỎNG, CHUẨN BỊ Ở NHÀ:

Phần 1: Triển khai FSM dùng mã one-hotPhần này yêu cầu thực hiện mạch FSM gán trạng thái bằng tay bao gồm các biểu thức logic để nạp mỗitrạng thái cho các flip-flop trạng thái. Để triển khai FSM dùng chín flip-flop trạng thái gọi lày8y7y6y5y4y3y2y1y0 và phép gán trạng thái kiểu one-hot đưa ra trong bảng 1.

11

Page 12: Bao Cao Thi Nghiem Dien Tu So(Bai 3 + 4 + 5 + 6)

Bảng 1. Mã one-hot dành cho FSM

Hình 2. Sơ đồ trạng thái máy cho FSM

Chương trình viết bằng VHDL:

library IEEE;use IEEE.STD_LOGIC_1164.all;entity part1 isport( clk, rst, w: in std_logic;z: out std_logic;led: out std_logic_vector(8 downto 0));end entity;architecture Behavioral of part1 issignal states: std_logic_vector(8 downto 0);beginprocess(clk)beginif(rising_edge(clk)) then

12

Page 13: Bao Cao Thi Nghiem Dien Tu So(Bai 3 + 4 + 5 + 6)

if(rst='0') thenstates<=(0=>'1',others=>'0');elsestates(1)<=(states(0) or states(5) or states(6) or states(7) or states(8)) and (not w);states(2)<=states(1) and (not w);states(3)<=states(2) and (not w);states(4)<= (states(3) or states(4)) and (not w);states(5)<=(states(0) or states(1) or states(2) or states(3) or states(4)) and w;states(6)<=states(5) and w;states(7)<=states(6) and w;states(8)<= (states(7) or states(8)) and w;states(0)<=not(states(1) or states(2) or states(3) or states(4) or states(5) or states(6) or states(7) orstates(8));end if;end if;end process;z <= '1' when states(4)='1' or states(8)='1' else'0';led <= states;end Behavioral;

Bảng 2. Các mã one-hot đã thay đổi cho FSM.Sơ đồ mạch:

13

Page 14: Bao Cao Thi Nghiem Dien Tu So(Bai 3 + 4 + 5 + 6)

Hình ảnh mô phỏng chức năng:

Phần 2: Triển khai FSM dùng các ProcessPhần này yêu cầu viết một kiểu khác của mã VHDL cho FSM. Trong cách viết mã này, không cần lấy các biểu thức logic cần thiết cho mỗi trạng thái flip-flop bằng tay. Các trạng thái hiện tại và

14

Page 15: Bao Cao Thi Nghiem Dien Tu So(Bai 3 + 4 + 5 + 6)

trạng thái kế tiếp cho FSM được định nghĩa dạng liệt kê với các giá trị có thể có bởi các ký hiệu từ A đến I. Trình biên dịch VHDL tự động nhận ra có bao nhiêu trạng thái flip-flop để dùng cho mạch, và tự động lựa chọn phép gán trạng thái.

Chương trình viết bằng VHDL

library IEEE;use IEEE.STD_LOGIC_1164.ALL;entity part2 isPort(clk,rst,w: in std_logic;z: out std_logic;led: out std_logic_vector(8 downto 0));end part2;architecture Behavioral of part2 istype state_type is (A,B,C,D,E,F,G,H,I);signal current_state,next_state: state_type;beginprocess(w,current_state)beginz<='0';case current_state iswhen A=> if w='1' thennext_state<=F;elsenext_state<=B;end if;when B=> if w='1' thennext_state<=F;elsenext_state<=C;end if;when C=> if w='1' thennext_state<=F;elsenext_state<=D;end if;when D=> if w='1' thennext_state<=F;elsenext_state<=E;end if;when E=> z<='1';if w='1' thennext_state<=F;elsenext_state<=E;end if;when F=>if w='1' thennext_state<=G;elsenext_state<=B;end if;when G=>if w='1' thennext_state<=H;elsenext_state<=B;end if;when H=>

15

Page 16: Bao Cao Thi Nghiem Dien Tu So(Bai 3 + 4 + 5 + 6)

if w='1' thennext_state<=I;elsenext_state<=B;end if;when I=>z<='1';if w='1' thennext_state<=I;elsenext_state<=B;end if;end case;end process;process(clk)beginif rising_edge(clk) thenif rst='0' thencurrent_state<=A;elsecurrent_state<=next_state;end if;end if;end process;with current_state selectled<="000000001" when A,"000000010" when B,"000000100" when C,"000001000" when D,"000010000" when E,"000100000" when F,"001000000" when G,"010000000" when H,"100000000" when I,"000000000" when others;end Behavioral;

Sơ đồ mạch:

Hình ảnh mô phỏng chức năng:

16

Page 17: Bao Cao Thi Nghiem Dien Tu So(Bai 3 + 4 + 5 + 6)

III. KIẾN THỨC, KĨ NĂNG THU ĐƯỢC CHO BẢN THÂN SAU KHI THAM GIA QUÁ TRÌNH THÍ NGHIỆM:

Đã biết: - Hiểu biết về FSM, các cách mã hóa trạng thái máy thông dụng - Kỹ năng cơ bản về ngôn ngữ VHDL - Kỹ năng cơ bản với bộ công cụ phần mềm Quartus II - Nắm rõ cách sử dụng kit DE1Làm được: - Có kỹ năng về cách xây dựng các FSM trong các mạch logic - Thành thạo hơn về cấu trúc VHDL dùng để triển khai viết mã cho FSM

17