1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo thực hành FPGA

48 727 10

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 48
Dung lượng 505,42 KB

Nội dung

Phần 1: Giới thiệu về bộ thực hành Altera DE2 Board  Hình ảnh của bộ DE2 Board được hiển thị như hình 1.1 bên dưới. Nó mô tả các layout của bo mạch và chỉ ra vị trí các kết nối và các thành phần chính của bo mạch. Hình 1.1 DE2 Board  DE2 Board cung cấp nhiều tính năng cho phép người sử dụng thực hiện các thiết kế mạch, từ đơn giản tới các dự án đa phương tiện khác nhau.  Có các thành phần phần cứng được cung cấp bởi DE2 board dưới đây: • Altera Cyclone® II 2C35 FPGA device • Altera Serial Configuration device EPCS16 • USB Blaster • 512Kbyte SRAM • 8Mbyte SDRAM • 4Mbyte Flash memory • SD Card socket • 4 nút công tắc. • 18 nút gạt • 18 LED màu đỏ • 9 LED màu xanh • Bộ dao động kí 50MHz và 27MHz cho các nguồn xung clock • 24bit mã âm thanh chất lượng CD với linein, lineout, và microphonein jack cắm • TV Decoder (NTSCPAL) and TVin connector

Trang 1

TRƯỜNG ĐẠI HỌC KHOA HỌC HUẾ KHOA ĐIỆN TỬ - VIỄN THÔNG

BỘ MÔN KỸ THUẬT ĐIỆN TỬ

-BÁO CÁO THỰC HÀNH FPGA

Giáo viên hướng dẫn : th.s Phan Hải Phong Nhóm sinh viên thực hiện: Trần Văn Thạnh

Hoàng Thảo Nguyên Nguyễn Thanh Dũ

Lớp: ĐTVT – K34

Huế, 01/2015

Trang 2

Phần 1: Giới thiệu về bộ thực hành Altera DE2 Board

− Hình ảnh của bộ DE2 Board được hiển thị như hình 1.1 bên dưới Nó mô tả các layout của bo mạch và chỉ ra vị trí các kết nối và các thành phần chính của bo mạch

Hình 1.1 DE2 Board

− DE2 Board cung cấp nhiều tính năng cho phép người sử dụng thực hiện các thiết kế mạch, từ đơn giản tới các dự án đa phương tiện khác nhau

− Có các thành phần phần cứng được cung cấp bởi DE2 board dưới đây:

• Altera Cyclone® II 2C35 FPGA device

• Altera Serial Configuration device - EPCS16

• 9 LED màu xanh

• Bộ dao động kí 50MHz và 27MHz cho các nguồn xung clock

• 24-bit mã âm thanh chất lượng CD với line-in, line-out, và microphone-in jackcắm

• TV Decoder (NTSC/PAL) and TV-in connector

• 10/100 Ethernet Controller with a connector

• USB Host/Slave Controller with USB type A and type B connectors

• RS-232 transceiver and 9-pin connector

Trang 3

• PS/2 mouse/keyboard connector

• IrDA transceiver

• Two 40-pin Expansion Headers with diode protection

− Hình 1.2 mô tả sơ đồ khối của DE2 board Để cung cấp sự linh hoạt tối đa cho người sử dụng, tất cả các kết nối được thực hiện thông qua các thiết bị Cyclone II FPGA Do đó, người dùng có thể cấu hình FPGA để thiết kế bất kì hệ thống nào

Hình 1.2 Sơ đồ khối của DE2 board

Phần 2: Thực hành FPGA

Chương I Exercise 1: Switches, Lights, and Multiplexers

Trang 4

Mục đích của bài tập này là để tìm hiểu làm thế nào để kết nối các thiết bị đầu vào và đầu ra của chip FPGA và thiết kế mạch sử dụng thiết bị này Chúng ta sẽ sử dụng các switches SW 17-0 trên DE2 board cho đầu vào của mạch Sử dụng LED và LED 7-seg cho các thiết bị đầu ra

1. PART 1:

a. Yêu cầu:

1. Tạo 1 project Quartus II mới cho mạch Chọn Cyclone IIEP2C35F672C6 cho chip sử dụng, đó là những chip FPGA được tích hợp trên Altera DE2 board

2. Tạo một file VHDL entity cho các code trong hình 1 và cho nó vào trong project vừa tạo

3. Bao gồm trong project thì yêu cầu phải có các pin cần thiết cho DE2 board, như các yêu cầu nêu trên Tiến hành compile project vừa tạo

4. Tải các mạch biên dịch và các chip FPGA Kiểm tra chức năng của mạch bằng cách bật tắt các công tắc và quan sát các đèn LED

b. Mã VHDL:

LIBRARY ieee;

USE ieee.std_logic_1164.all;

ENTITY LED IS

PORT (SW :IN STD_LOGIC_VECTOR(17 DOWNTO 0);

LEDR:OUT STD_LOGIC_VECTOR(17 DOWNTO 0));

Trang 5

Hình 1.3 Mô phỏng part I

2. PART 2:

a. Yêu cầu:

1. Tạo một project Quartus II cho mạch của bạn

2. Viết mã VHDL sử dụng 8 bit mở rộng trong bộ hợp kênh 2 ra 1 trong project Sử dụng SW17 trên DE2 board cho đầu vào, SW7-0 cho đầu ra của X và SW15-8 cho đầu ra của

Y Kết nối các SW tới các đèn LED màu đỏ, đầu ra M sử dụng các led xanh LEDG7-0

3. Trong project của bạn phải cung cấp các pin yêu cầu cho DE2 board Tương tự như part

I, thì các chân đầu vào của mã VHDL phải sử dụng đúng các pin trên Cyclone II FPGA

để kết nối tới các SW, và port đầu ra của mã VHDL sử dụng FPGA pin kết nối tới LEDR

và LEDG

4. Biên dịch project

5. Tải mạch biên dịch vào chip FPGA Kiếm tra chức năng của 8bit mở rộng của bộ hợp kênh 2 to 1 bằng cách sử dụng SW và quan sát sự thay đổi của đèn LED

Trang 6

Hình 1.4 Bộ hợp kênh eight-bit wide 2-to-1

b. Mã VHDL:

LIBRARY ieee;

USE ieee.std_logic_1164.all;

ENTITY partII IS

PORT ( SW: IN std_logic_vector (17 downto 0);

LEDR: OUT std_logic_vector (17 downto 0);

LEDG: OUT std_logic_vector( 7 downto 0));

LEDG <= SW (15 downto 8) WHEN '1',

SW (7 downto 0)WHEN OTHERS;

END BH;

Trang 7

c. Mô phỏng bằng ModelSIM:

Trường hợp 1: Khi SW17 = 1 thì LEDG sẽ được gán cho các SW 15-8 , LEDG sáng

tắt phụ thuộc vào sự bật tắt của các SW15-8 Ví dụ ta cho trình tự bật tắt của SW15-8 như sau: 01101111 ta sẽ nhận được kết quả ở đầu ra LEDG

Hình 1.5 Mô phỏng part II trường hợp 1

Trường hợp 2: Khi SW 17=0, thì LEDG sẽ được gán tương ứng với các SW7-0

Tương tự như trường hợp 1 ta có kết quả mô phỏng áp dụng cho dãy SW7-0 có sự bậttắt như sau: 00001001 Kết quả nhận được ở LEDG đúng như mã VHDL ta vừa làm

Hình 1.6 Mô phỏng part II trường hợp 2

3. Part III.

Trang 8

a. Yêu cầu:

Tiến hành các bước sau đây để thực thi bộ hợp kênh 3bit wide 5-to-1

1 Tạo 1 project Quartus II mới cho mạch của bạn

2 Tạo 1 VHDL entity cho bộ ghép kênh 3bit wide 5-to-1

− Kết nối đầu vào được chọn với các switch SW17-15, và sử dụng 15 switch còn lại SW14-0 để sử dụng cho 5 3-bit đầu vào cho Y

− Kết nối các switch SW với led màu đỏ LEDR và các đầu ra với led xanh LEDG 2-0

3 Bao gồm trong project của bạn thì phải có mã pin cho DE2 board Tiến hành biên dịch project của bạn

4 Tải mạch biên dịch vào trong các chip FPGA Kiểm tra chức năng của bộ hợp kênh 3bit wide 5-to-1, bởi các nút nhấn đảo chiều và quan sát các đèn LED Phải đảm bảo rằngvới mỗi đầu vào U tới Y có thể cho kết quả đúng ở đầu ra tại M

Hình 1.7 Một bộ hợp kênh 3-bit wide 5-to-1

b. Mã VHDL:

LIBRARY ieee;

USE ieee.std_logic_1164.all;

ENTITY partIII IS

PORT ( SW: IN std_logic_vector (17 downto 0);

LEDR: OUT std_logic_vector(17 downto 0);

LEDG: OUT std_logic_vector(2 downto 0));

Trang 9

END partIII;

ARCHITECTURE BH OF partIII IS

BEGIN

LEDR <= SW;

WITH SW(17 downto 15) SELECT

LEDG <= SW (2 downto 0) WHEN "000",

Hình 1.8 Mô phỏng trường hợp 1 part III

 Tương tự với các trường hợp còn lại thì ta sẽ nhận được giá trị hiển thị lên LEDG tương ứng với SW17-15 với các SW còn lại

Trang 10

4 Part IV:

a Yêu cầu:

Hình 1.8 cho ta thấy một module giải mã 7-segment từ ba bit đầu vào c2c1c0 Bộ giải mã

này cung cấp 7 đầu ra để hiển thị lên màn hình 7-segment Để giữ cho các thiết kế đơn giản thì chỉ có 4 đặc tính trong bảng (cộng với các kí tự trắng, đó là các lựa chọn các code từ 100-111)

Bảng 1: Mã kí tự

1. Tạo một project Quartus II cho mạch của bạn

2. Tạo một thực thể VHDL cho bộ giải mã 7 đoạn Kết nối đầu vào c2c1c0 với các switch SW2-0 , và kết nối đầu ra của bộ giải mã với LED 7 đoạn HEX0 trên DE2 board Những đoạn được hiển thị được gọi là HEX00,HEX01,…,HEX06, tương ứng với hình 1.8 Bạn nên khai báo các cổng 7 bit như sau:

HEX0: OUT STD_LOGIC_VECTOR (0 to 6);

Trong mã VHDL mà chúng ta viết thì nên để tên các kết quả đầu ra phù hợp với tên tương ứng trong Sổ tay sử dụng DE2 và file DE2_pin_assigment.csv

3. Sau khi thực hiện các quá trình trên, tiến hành biên dịch project vừa tạo

4. Tải mạch biên dịch vào chip FPGA Kiểm tra chức năng của mạch bằng cách bật tắt các công tắc SW2-0 và quan sát sự thay đổi của LED 7 đoạn

Trang 11

b Mã VHDL:

LIBRARY ieee;

USE ieee.std_logic_1164.all;

ENTITY partIV IS

PORT ( SW: IN std_logic_vector (17 downto 0);

LEDR: OUT std_logic_vector (17 downto 0);

HEX1: OUT std_logic_vector (0 to 6));

 Trường hợp 1: Khi SW2-0 = “000” thì HEX1 hiển thị chữ H, có dãy nhị phân như sau:

H =1001000 Kết quả được hiển thị phía bên dưới:

Trang 13

Xem xét các mạch hiển trị trong hình 2.1 Mạch sử dụng bộ hợp kênh 3-bit wide 5-to-1 cho phép lựa chọn 5 kí tự hiển thị lên màn hình 7-segment Sử dụng mạch giải mã 7-segment từ Part

IV để hiển thị bất kì kí tự nào trong các kí tự sau H,E,L,O, “Trắng” Các mã kí tự được quy định theo bảng 1 bằng cách sử dụng các switch SW14-0, và một kí tự riêng được lựa chon để hiển thị bằng cách thiết lập các switch SW17-15.

Hình 2.1 Sơ đồ mạch

Bảng 2:

a. Yêu cầu: thực hiện các bước sau đây

1. Tạo một project Quartus II mới cho mạch của bạn

2. Bao gồm các thực thể VHDL project Quartus II Kết nối các switch SW17-15 với đầu vào lựa chọn của một trong 5 trường hợp của bộ hợp kênh 3-bit wide 5-to-1 Kết nối các switch SW14-0 của bộ hợp kênh theo các kí tự thể hiện trong bảng 2 Kết nối kết quả đầu ra với LED 7 đoạn HEX4,HEX3,HEX2,HEX1 và HEX0

3. Thêm vào các pin yêu cầu của DE2 board cho tất cả các switch, đèn LED, và LED 7 đoạn Tiến hành biên dịch project

4. Tải mạch biên dịch vào chip FPGA Kiểm tra chức năng của mạch bằng cách thiết lậpcác mã ký tự thích hợp trên các thiết bị switch SW14-0 và sau đó đảo chiều SW17-15 để quan sát sự thay đổi của các ký tự trên LED 7 đoạn

b. Mã VHDL: chia làm 3 đoạn code chính

Trang 14

Code 1: Chương trình chính

LIBRARY ieee;

USE ieee.std_logic_1164.all;

ENTITY partV IS

PORT (SW :IN std_logic_vector (17 downto 0);

LEDR:OUT std_logic_vector (17 downto 0);

HEX0,HEX1,HEX2,HEX3,HEX4:OUT std_logic_vector (0 to 6));

END partV;

ARCHITECTURE bh OF partV IS

COMPONENT MUX_3bit_5to1

PORT ( S, U, V, W, X, Y :IN std_logic_vector (2 downto 0);

M :OUT std_logic_vector (2 downto 0));

Trang 16

"0000000" when with C select

D1 <= "1110001" when "000",

"0000001" when "001",

"1001000" when "010",

"0110000" when "011", "1110001" when "100", "0000000" when others; L with C select

Trang 17

LIBRARY ieee;

USE ieee.std_logic_1164.all;

ENTITY MUX_3bit_5to1 IS

PORT (

S,U,V,W,X,Y :IN std_logic_vector(2 downto 0);

M :OUT std_logic_vector(2 downto 0));

Ta xét trường hợp: SW17-15 =”000” , M = U khi SW2-0 = “000”, chọn 4 giá trị của

D0,D1,D2,D3,D4 như trong code VHDL ta có kết quả mô phỏng như sau Chỉ xét một trường hợp, các trường hợp còn lại tương tự

Trang 18

Hình 2.2 Mô phỏng PART V

6 Part VI:

Mở rộng thiết kế từ part V bằng cách sử dụng tất cả 8 con LED 7 đoạn hiển thị ở trên mạch DE2 board Mạch của bạn sẽ có thể hiển thị các từ với năm (hoặc ít hơn) các kí tự trên 8 con LED, các

Trang 19

kí tự sẽ thay đổi khi switch SW17-15 được nhấn Nếu từ hiển thị là HELLO, thì cấu trúc của mạch

sẽ được thể hiện như trong bảng 3 dưới đây

Bảng 3: xoay từ HELLO ở 8 LED 7 đoạn

a. Yêu cầu: Thực hiện theo các bước sau đây

1. Tạo một project Quartus II cho mạch của bạn và chọn chip thực hiện là Cyclone

IIEP2C35F672C6

2. Viết mã VHDL bao gồm các thực thể có trong project Quartus II Kết nối thiết bị switch

SW17-15 cho các đầu vào được lựa chọn để thể hiện đặc điểm của bộ hợp kênh trong mạchcủa bạn Kết nối SW14-0 cho mỗi mức của bộ ghép kênh được thể hiện như trong bảng 3 (Gợi ý: Đối với một số yếu tố đầu vào của bộ hợp kênh, có thể sẽ phải chọn các kí tự

“trống”) Kết nối đầu ra của bộ hợp kênh đến LED 7 đoạn hiển thị từ HEX7,…HEX0

b. Mã VHDL cho yêu cầu thiết kế:

Code 1: Đoạn mã VHDL chính

LIBRARY ieee;

USE ieee.std_logic_1164.all;

ENTITY partVI IS

PORT(SW: IN std_logic_vector(17 downto 0);

LEDR: OUT std_logic_vector(17 downto 0);

HEX0: OUT std_logic_vector(6 downto 0);

HEX1: OUT std_logic_vector(6 downto 0);

Trang 20

HEX2: OUT std_logic_vector(6 downto 0);

HEX3: OUT std_logic_vector(6 downto 0);

HEX4: OUT std_logic_vector(6 downto 0);

HEX5: OUT std_logic_vector(6 downto 0);

HEX6: OUT std_logic_vector(6 downto 0);

HEX7: OUT std_logic_vector(6 downto 0));

END part6;

ARCHITECTURE bh OF partVI IS

COMPONENT mux

PORT (S,U,V,W,X,Y,A,B,C:IN std_logic_vector(2 downto 0);

M:OUT std_logic_vector(2 downto 0));

SIGNAL M0: std_logic_vector(2 downto 0);

SIGNAL M1: std_logic_vector(2 downto 0);

SIGNAL M2: std_logic_vector(2 downto 0);

SIGNAL M3: std_logic_vector(2 downto 0);

SIGNAL M4: std_logic_vector(2 downto 0);

SIGNAL M5: std_logic_vector(2 downto 0);

SIGNAL M6: std_logic_vector(2 downto 0);

Trang 21

SIGNAL M7: std_logic_vector(2 downto 0);

BEGIN

LEDR <= SW;

M8: mux PORT MAP (SW(17 downto 15), SW(14 downto 12),SW(11 downto 9),SW(8 downto 6),SW(5 downto 3),SW(2 downto 0), "101","101","101",M0);

H0: char_7seg PORT MAP (M0, HEX0);

M9: mux PORT MAP (SW(17 downto 15),"101", SW(14 downto 12),SW(11 downto 9),SW(8 downto 6),SW(5 downto 3),SW(2 downto 0), "101","101",M1);

H1: char7seg PORT MAP (M1, HEX1);

M10: mux PORT MAP (SW(17 downto 15),"101","101", SW(14 downto 12),SW(11 downto 9),SW(8 downto 6),SW(5 downto 3),SW(2 downto 0), "101",M2);

H2: char7seg PORT MAP (M2, HEX2);

M11: mux PORT MAP (SW(17 downto 15),"101","101","101", SW(14 downto

12),SW(11 downto 9),SW(8 downto 6),SW(5 downto 3),SW(2 downto 0),M3);

H3: char_7seg PORT MAP (M3, HEX3);

M12: mux PORT MAP (SW(17 downto 15),SW(2 downto 0),"101","101","101", SW(14 downto 12),SW(11 downto 9),SW(8 downto 6),SW(5 downto 3),M4);

H4: char_7seg PORT MAP (M4, HEX4);

M13: mux PORT MAP (SW(17 downto 15),SW(5 downto 3),SW(2 downto

0),"101","101","101", SW(14 downto 12),SW(11 downto 9),SW(8 downto 6),M5);

H5: char_7seg PORT MAP (M5, HEX5);

M14: mux PORT MAP (SW(17 downto 15),SW(8 downto 6),SW(5 downto 3),SW(2 downto 0),"101","101","101", SW(14 downto 12),SW(11 downto 9),M6);

H6: char_7seg PORT MAP (M6, HEX6);

M15: mux PORT MAP (SW(17 downto 15),SW(11 downto 9),SW(8 downto 6),SW(5 downto 3),SW(2 downto 0),"101","101","101", SW(14 downto 12),M7);

H7: char_7seg PORT MAP (M7, HEX7);

Trang 22

S,U,V,W,X,Y,A,B,C:IN std_logic_vector(2 downto 0);

M:OUT std_logic_vector(2 downto 0));

Trang 23

END bh;

c. Mô phỏng bằng ModelSIM: phần này sử dụng DE2 board sẽ thấy rõ hơn ModelSIM

Chương II: Exercise 2 Numbers and Displays

Đây là một bài tập về thiết kế mạch tổ hợp logic chuyển đổi nhị phân sang thập phân, và bộ cộng mã thập phân BCD

Trang 24

1. Part I

Hiển thị giá trị lên HEX3 tới HEX0 được thiết lập cho các switches từ SW 15-0.Các SW15-12ứng với HEX3, SW11-8 ứng với HEX2,… tới SW3-0 tới HEX0 Hiển thị các số tương tứng từ 0tới 9, và loại ra các giá trị 1010 tới 1111

a. Yêu cầu: Thực hiện các bước sau

1. Tạo project mới sử dụng các thành phần có sẵn trên DE2 board Altera Mục đích của bài tập này là thể hiện các chức năng logic lên LED 7 đoạn Bạn nên sử dụng mã VHDL đơngiản và xác định từng chức năng logic theo biểu thức Boolean

2. Viết một file VHDL cung cấp các hàm cần thiết Bao gồm các file trong project và quy định các chân trên FPGA để kết nối với thiết bị chuyển mạch và hiển thị LED 7 đoạn như đã nêu trong phần hướng dẫn sử dụng DE2 board

3. Biên dịch project và tải các mạch biên dịch vào các chip FPGA

4. Kiểm tra các chức năng của thiết kế bằng cách bật tắt các công tắc và quan sát sự thay đổi ở LED 7 đoạn

PORT (SW :IN std_logic_vector(15 downto 0);

LEDR: OUT std_logic_vector (15 downto 0);

HEX0,HEX1,HEX2,HEX3: OUT std_logic_vector (0 to 6));

Trang 25

LEDR<= SW;

H0: char_7seg port map (SW(15 downto 12),HEX0);

H1: char_7seg port map (SW(11 downto 8),HEX1);

H2: char_7seg port map (SW(7 downto 4),HEX2);

H3: char_7seg port map (SW (3 downto 0),HEX3);

Trang 26

"0001111" when "0111", "0000000" when "1000", "0000100" when "1001", "1111111" when others;

Trang 27

của bộ so sánh này để điều khiển LED 7 đoạn Hoàn thành thiết kế bằng cách tạo ra mã VHDL cho bộ so sánh, bộ hợp kênh, và mạch A (bao gồm mạch B hoặc các bộ giải mã 7 đoạn đầu vào tại thời điểm đó) Entity của VHDL nên có các đầu vào 4-bit, bốn bit đầu ra M và đầu ra z

Bảng 4: Chuyển đổi giá trị nhị phân 4bit sang thập phân

a. Yêu cầu: thực hiện theo các bước sau

1. Tạo một project Quartus II cho thực thể VHDL của bạn

2. Biên dịch mạch và sử dụng mô phỏng về mặt chức năng để xác định các hoạt động của các mạch so sánh, bộ hợp kênh và mạch A

3. Cải tiến mã VHDL để chèn vào mạch B như trong hình 2.4 cũng như các bộ giải mã 7 đoạn Thay đổi các yếu tố đầu vào và đầu ra của mã bạn sử dụng các switch SW3-0 trên bộ KIT DE2 để đại diện cho số nhị phân V, và sử dụng HEX1 và HEX0 để hiển thị các giá trị của chữ số thập phân d1,d0

4. Biên dịch lại project, và sau đó tải các mạch vào trong chip FPGA

5. Kiểm tra lại mạch bằng cách thử cách giá trị có thể có của V và quan sát ở màn hình đầu ra

Ngày đăng: 18/01/2015, 01:10

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w