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

Báo cáo game Fix FPGA

36 394 0

Đ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

Tiêu đề Final Report Bomberman Game on DE1 Board
Tác giả Ngoc A. Le, Khanh V. Nguyen, Hai N. Nguyen
Trường học Hà Nội University of Science and Technology
Chuyên ngành Embedded Systems and Reconfigurable Computing
Thể loại Báo cáo
Năm xuất bản 2012
Thành phố Hà Nội
Định dạng
Số trang 36
Dung lượng 1,41 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

VHDL là một ngôn ngữ mô tả phần cứng cho các mạch tích hợp tốc độ cao với nhiều ưu điểm vượt trội và được ứng dụng trong nhiều lĩnh vực mà quan tr ng nhất là trong các thiết bị logic có thể lập trình được như FPGA, PLD…Với việc vận dụng những kiến thức về VHDL qua các bài lab altera chúng em đã được làm trước đó kết hợp với các tài liệu tham khảo về lập trình VHDL nâng cao để ứng dụng làm game nhỏ là game bomberman.Em xin chân thành bày tỏ lòng biết ơn sâu sắc tới TS Phạm Ng c Nam, tới tất cảcác anh và các bạn tại lab ESRC, đặc biệt anh Vũ Quang Tr ng, anh Vũ Hữu Tiệp đã tận tình hướng dẫn cho nhóm chúng em, tạo điều kiện cho b n em nghiên cứu, học tập trong học kỳ hè. Những lời nhắc nhở, nhận xét của các anh đã giúp cho em tiến bộ rất nhiều và có thể thực hiện nột dung thực tập một cách tốt nhất. Do khả năng còn hạn chế và số lượng cổng logic trên DE1 là có hạn nên trong quá trình làm Game có thể không tránh khỏi những thiếu sót và giản lược. Mong các anh và các bạn chỉ bảo và đóng góp thêm ý kiến để nhóm em có thể hoàn thiện Project này một cách tối ưu nhất.

Trang 1

Group 1- K54 – ESRC LAB Page 1

HA NOI UNIVERSITY OF SCIENCE AND TECHNOLOGY

SHOOL OF ELECTRONIC AND TELECOMMUNICATION

EMBEDDED SYSTEM AND RECONFIGURABLE COMPUTING LAB

VHDL TRAINING COURSE

2012 Project:

BOMBERMAN ON FPGA

Trainers:

Ngoc A Le Khanh V Nguyen Hai N Nguyen

Ha Noi, July 27, 2012

Trang 2

Group 1- K54 – ESRC LAB Page 2

Mục Lục

A LỜI NÓI ĐẦU 4

B NỘI DUNG 5

1.Tổng Quan Đề tài 5

1.1 Đề tài 5

1.2 Yêu cầu của đề tài 5

1.2.1 Yêu cầu chức năng 5

1.2.2 Yêu cầu phi chức năng 5

1.3 Mô tả trò chơi 6

1.3.1.Mô tả cách chơi 6

1.3.2.Tính điểm 6

1.3.3.Kết thúc 7

1.4 Kế hoạch thực hiện và phân công công việc 7

1.4.1 Kế hoạch thực hiện 7

1.4.2 Phân công công việc 8

2 Giới thiệu Công nghệ sử dụng 8

2.1 Phần cứng 8

 Kit DE1 8

2.2 Phần mềm Quartus II 9.1 10

2.3 Quy trình thiết kế FPGA với Quartus II 10

3 Sơ đồ khối của hệ thống 11

3.1.Bàn phím 12

Trang 3

Group 1- K54 – ESRC LAB Page 3

3.2.Màn hình 12

3.3.ROM 12

3.4.Khối xử lý ( CU ) 12

4 Các bước xây dựng từng khối của GAME 12

4.1 PS2 Keyboard 12

4.1.1.Khối nhận dữ liệu PS2 12

4.1.2.Mạch giao tiếp với PS2 Keyboard 16

4.2 Khối VGA 19

4.2.1.Đồ h a 19

4.2.2 ộ điều khiển video 20

4.2.3 VGA text 25

4.3 Khối di chuyển 28

4.4 Khối đặt bom 29

4.5 Khối hiện thị TEXT 30

C KẾT LUẬN 34

1 Kết quả đạt được 34

2 Khó khăn 34

3 Đề Xuất 34

Phụ lục 35

Tài liệu tham khảo 36

Trang 4

Group 1- K54 – ESRC LAB Page 4

A LỜI NÓI ĐẦU

VHDL là một ngôn ngữ mô tả phần cứng cho các mạch tích hợp tốc độ cao với nhiều ưu điểm vượt trội và được ứng dụng trong nhiều lĩnh vực mà quan tr ng nhất

là trong các thiết bị logic có thể lập trình được như FPGA, PLD…

Với việc vận dụng những kiến thức về VHDL qua các bài lab altera chúng em đã được làm trước đó kết hợp với các tài liệu tham khảo về lập trình VHDL nâng cao

để ứng dụng làm game nhỏ là game bomberman

Em xin chân thành bày tỏ lòng biết ơn sâu sắc tới TS Phạm Ng c Nam, tới tất cả các anh và các bạn tại lab ESRC, đặc biệt anh Vũ Quang Tr ng, anh Vũ Hữu Tiệp

đã tận tình hướng dẫn cho nhóm chúng em, tạo điều kiện cho b n em nghiên cứu,

h c tập trong h c kỳ hè Những lời nhắc nhở, nhận xét của các anh đã giúp cho em tiến bộ rất nhiều và có thể thực hiện nột dung thực tập một cách tốt nhất

Do khả năng còn hạn chế và số lượng cổng logic trên DE1 là có hạn nên trong quá trình làm Game có thể không tránh khỏi những thiếu sót và giản lược Mong các anh và các bạn chỉ bảo và đóng góp thêm ý kiến để nhóm em có thể hoàn thiện Project này một cách tối ưu nhất

Trang 5

Group 1- K54 – ESRC LAB Page 5

1.2 Yêu cầu của đề tài

1.2.1 Yêu cầu chức năng

- Thực hiện trên KIT DE1 của ALTERA

- Màn hình hiển thị VGA 640x480 pixels

- Bàn phím chuẩn PS/2

- Audio codec W871 (trên kit)

- Ngôn ngữ VHDL sử dụng clock 50Mhz

1.2.2 Yêu cầu phi chức năng

- Yêu cầu giao diện đơn giản, dễ chơi, di chuyển mượt

- Tiết kiệm được tài nguyên trên kit de1 tối đa

Trang 6

Group 1- K54 – ESRC LAB Page 6

1.3 Mô tả trò chơi

1.3.1.Mô tả cách chơi

- Bắt đầu mỗi ván đấu, người chơi 1 xuất hiện ở góc trên bên trái, người chơi 2 xuất hiện ở góc dưới bên phải của các bản đồ có sẵn Thời gian của ván đấu bắt đầu đếm ngược ( 200s )

Mỗi người chơi có 4 phím di chuyển:

Player 1 Player 2 Mô tả

Hinh 1 Các phím được sử dụng chơi

- an đầu mỗi người chơi chỉ có một mạng Sau khi bom nổ trúng người chơi, trò chơi kết thúc

- Mỗi lần ấn phím mỗi người chỉ đặt được 1 quả và bom tự nổ sau khi đặt là 3s

- Người chơi di chuyển với các bước đi là 1/4 ô đặt bom và không được

đi qua bom, gạch và đá

- Gạch bị phá vỡ khi bom nổ 1 lần, đá không bị phá vỡ

1.3.2.Tính điểm

- 20: Phá gạch

Trang 7

Group 1- K54 – ESRC LAB Page 7

 an đầu mỗi người chơi không có điểm nào, số điểm của mỗi người

sẽ được cập nhật trong mỗi ván và hiển thị lên màn hình

Tồng thời gian thực hiện: 01 tháng (27/7/2012 - 28/8/2012)

Báo cáo hàng tuần: sáng thứ 7 hàng tuần, trình bày các công việc hiện tại, thắc mắc cần giải đáp

Báo cáo cuối cùng: Thứ 7, 1/9/2012, báo cáo hoàn chỉnh và kết thúc

Trang 8

Group 1- K54 – ESRC LAB Page 8

Tuần 3: 12/8/2012 - 18/8/2012

 Đặt bom, bom nổ tạo ra lửa, phá gạch và giết được đối phương

 Xây dựng text cho các màn chơi Tuần 4: 19/8/2012 - 25/8/2012

 Ghép và hoàn thiện code

 Test game, tìm lỗi phát sinh và sửa Tuần 5: 26/8/2012 - 1/9/2012

Viết báo cáo hoàn chỉnh và trình bày đề tài

1.4.2 Phân công công việc

 Hoàn thiện spec và sơ đồ khối chung cho cả hệ thống : Cả nhóm

 Hiển thị VGA, hoàn thiện màn chơi chính, ghép code : Khánh

 Bắt phím, hiển thị text cho các màn chơi, ghép code : Ngọc

 Viết báo cáo cuối cùng : Cả nhóm

2 Giới thiệu Công nghệ sử dụng

2.1 Phần cứng

Kit DE1

DE1 ( Development and Education ) là một phiên bản thu nhỏ của Kit DE2 Nó rất phù hợ để h c điện tử số, kĩ thuật máy tính và FPGAs Con chip Cyclon II 2C20 trên DE1 được thiết kế chyên để phục vụ cho mục đích giáo dục như trong các phòng lab của các trường đại h c, cao đẳng Nó phù hợp để làm nhiều bài tập trong các môn h c như điện tử số, kĩ thuật máy tính thông qua các ví dụ đơn giản

Trang 9

Group 1- K54 – ESRC LAB Page 9

Thông số cơ bản của kit DE1:

Trang 10

Group 1- K54 – ESRC LAB Page 10

2.2 Phần mềm Quartus II 9.1

Quartus II là công cụ chính được sử dụng trong quá trinh thực hiện đề tài Được cung cấp và cập nhật thường xuyên bởi Altera Đây là công cụ thiết kế tốt nhất cho các dòng chip FPGA của Altera bao gồm cả Cyclon II 2C20 có trên DE1

Là công cụ phân tích và tổng hợp thiết kế HDL, nó cho phép nhà phát triển thực hiện thiết kế của h , đồng thời cho phép phân tích thời gian, kiểm tra sơ đồ RTL, mô phỏng hệ thống và cấu hình sản phẩm một cách phù hợp nhất

2.3 Quy trình thiết kế FPGA với Quartus II

Dưới đây là quy trình thiết kế FPGA với các phần mềm thiết kế FPGA nói chung và Quartus II nói riêng:

Hinh 3 Design Flow

Trang 11

Group 1- K54 – ESRC LAB Page 11

Nó bao gồm các bước cơ bản sau:

 Design Entry – Mạch sau đã thiết kế sẽ được mô tả bởi các ngôn ngữ mô tả

phần cứng như VHDL hay Verilog, hoặc cũng có thể dùng sơ đồ Schematic

 Synthesis – Công cụ tổ hợp sẽ tổ hợp mạch tạo ra một file netlist có chứa các

phần tử logic và các kết nối giữa chúng

 Function Simulation – Chức năng của mạch sau tổ hợp sẽ được kiểm định

 Fitting – Công cụ máy tính sẽ đặt các phần tử logic được định nghĩa trong file netlist xuống các phần tử logic trong con chip FPGA thực tế Đồng thời ch n ra

các đường dây để kết nối chúng với nhau

 Timming Analysis – Phân tích trễ truyền dẫn trên các đường dây khác nhau

nhằm đưa ra các chỉ thị giúp cải thiện hiệu năng làm việc của mạch

 Timming Simulation – Kiểm tra đồng thời cả về mặt chức năng lẫn thời gian

của mạch

 Programming and Configuration – Thực hiện mạch trên con chip vật lý bằng

cách cấu hình các phần tử logic trên chip và thành lập các kết nối cần thiết

3 Sơ đồ khối của hệ thống

Hinh 4 SƠ ĐỒ TỔNG QUAN

CU

FONT

ROM

PS2 INTERFACE

VGA CONTROLER

KEYBOARD

MONITOR

Trang 12

Group 1- K54 – ESRC LAB Page 12

Khối chịu trách nhiệm điều khiển toàn bộ hệ thống

4 Các bước xây dựng từng khối của GAME

4.1 PS2 Keyboard

Để điều khiển được hướng di chuyển của con rắn, nhập mức level để bắt đầu chơi hay để lưu tên nếu người chơi đạt điểm số cao… chúng ta phải sử dụng một keyboard

Hiện nay trên thị trường có 2 loại keyboard là keyboard cổng usb và keyboard cổng ps2.Trong snake game do nhóm thực hiện thì ps2 keyboard được ch n để

sử dụng Chúng ta sẽ lần lượt tìm hiểu về loại keyboard này cũng như thiết kế các khối cần thiết để có thể nhận được dữ liệu gửi từ keyboard một cách chính xác

4.1.1.Khối nhận dữ liệu PS2

- Giao tiếp vật lý cổng PS2:

Hinh 5 Cổng PS2

Trang 13

Group 1- K54 – ESRC LAB Page 13

Một cổng ps2 có bốn chân : chân data ps2d, chân clock ps2c và hai chân nguồn là VCC và ground trong đó chân nguồn VCC được cung cấp bởi host

Dữ liệu từ keyboard tới host được truyền qua chân data một cách nối tiếp theo

chuẩn UART.Quá trình truyền dữ liệu bắt đầu với 1 bit start ,8 bit dữ liệu ,1 bit

Hinh 6 Mô tả một khối dữ liệu

Clock của bàn phím thì được truyền qua chân ps2c có tần số trong khoảng từ

10Khz tới 16,7 Khz, Tín hiệu ps2d phải ổn định ít nhất là 5 us trước và sau sườn lên và xuống của tín hiệu ps2c Ta có thể thấy được điều này qua hình mô tả vẽ :

Hinh 7 Vị trí các bit trong qua trình nhận dữ liệu

Trang 14

Group 1- K54 – ESRC LAB Page 14

- Khối nhận dữ liệu PS2:

Để có thể thu lại được dữ liệu thay vì phải thiết kế một bộ lấy mẫu ta sẽ dung một mạch dò sườn xuống của tín hiệu ps2c làm điểm tham khảo.Đầu vào của mạch bao gồm tín hiệu ps2d và ps2c nhận từ keyboard ,tín hiệu clock của host ,một tín hiệu reset của hệ thống và một tín hiệu cho phép nhận dữ liệu từ bàn phím Đầu ra của mạch sẽ là 8 bit dữ liệu và một tín hiệu báo hiệu rx_done_tick.Tín hiệu này ở mức cao sau mỗi chu kì clock

Ta có sơ đồ khối của mạch nhận :

rx_en

dout (7 downto 0)

rx_done_tick

clk

Hinh 8 Sơ đồ khối mạch nhận dữ liệu

Sơ đồ ASM của khối nhận dữ liệu:

Trang 15

Group 1- K54 – ESRC LAB Page 15

Rx_en=1 and Fail_edge=1

b<=ps2d (b>>1) n<= 9

n=0 b<= ps2d & (b>>1) Fail_edge=1

F Idle

dps

Load F

Hinh 9 ASM của mạch nhận

Về cơ bản, mạch hoạt động như sau:

Trang 16

Group 1- K54 – ESRC LAB Page 16

- Trước tiên ở trạng thái chờ, mạch sẽ kiểm tra sườn xuống của tín hiệu clock của PS2 và nhận là start bit

- Sau khi xác định được start bit mạch sẽ nhận vào 10 bit tiếp theo bao gồm 8 bit dữ liệu, 1 bit chẵn lẻ và 1 bit stop

- Cuối cùng xuất ra 8 bit dữ liệu và chuyển về trạng thái chờ

4.1.2.Mạch giao tiếp với PS2 Keyboard

Trong mục này chúng ta sẽ đi tìm hiểu về cách mã hóa bàn phím đồng thời thiết kế một mạch để giải mã các lệnh gửi từ bàn phím tới Host

a Tổng quan về mã hóa bàn phím

Một bàn phím là ma trận các phím.Nó được nhúng một con vi điều khiển để điều

các hoạt động của bàn phím.Có 3 chế độ hoạt động của các phím có thể xảy ra là :

- Khi ta bấm một phím thì make code của phím đó được truyền

đi

- Khi ta giữ một phím với thời gian đủ lớn khoảng 0,5 s thì make code sẽ được truyền đi một cách lặp lại với một tốc độ xác định chu kì 100 ms

- Khi ta nhả phím thì break code của phím đó sẽ được truyền

Hình vẽ dưới đây sẽ cho ta thấy make code của các phím của keyboard

:

Trang 17

Group 1- K54 – ESRC LAB Page 17

Hinh 10 Make code của các phím của keyboard

Đối với các phím thường thì make code của nó có kích thước là 1 byte còn đối với các phím mở rộng thì kích thước là từ 2 byte cho đến 4 byte PS2 keyboard sẽ truyền tuần tự code tùy theo hoạt động của phím Ví dụ ta bấm và nhả phím A thì đầu tiên make code được gửi vào sau đó là break code của nó :

b Mạch giao tiếp PS2 keyboard

Mạch giao tiếp PS2 keyboard làm nhiệm vụ l c lấy thành phần chính trong scan code thu được sau các hoạt động bấm và nhả phím.Đồng thời tạo ra một tín hiệu báo hiệu để bộ điều khiển có thể nhận ra được đâu là phím mở rộng (thông thường phục vụ cho mục đích chuyển động của con rắn ,ch n level chơi) đâu là phím thường (dùng trong việc lưu tên trong trường hợp người chơi đạt kết quả cao)

Có 2 cách để thu lại thành phần chính trong scan code từ hoạt động nhấn nhả phím

là bắt break code và bắt make code.Trong snake game mà nhóm thực hiện thì nhóm

đã ch n cách bắt make code sẽ chính xác hơn vì các lệnh sẽ được thực hiện ngay lập tức ngay sau khi được nhập tránh được khoảng thời gian trễ chờ nhả phím nếu chúng ta dùng cách bắt break code

Sơ đồ khối của mạch giao tiếp với PS2 keyboard :

Trang 18

Group 1- K54 – ESRC LAB Page 18

dout done_tick

FIFO

wr

w_data r_data

rd got_tick

Key_code

got_key

Hinh 11 giao tiếp với PS2 keyboard

Điểm chú ý trong mạch này là tín hiệu got_key.Sau khi mạch nhận dữ liệu được gửi

từ PS2 keyboard cho đầu ra là dout và một tín hiệu báo hiệu là done_tick.tín hiệu đầu ra này sẽ được đưa tới một mạch FSM để xác định thành phần chính của code

mà ta cần thu lại để phục vụ cho các mục đích của chúng ta.Tín hiệu got_tick sẽ tích cực cao khi mạch FSM xác định được thành phần code cần đ c ,đồng thời cho phép ghi thành phần code này vào bộ FiFo chờ cho Control Unit xử lý

c sơ đồ khối giao tiếp với PS 2 ( * bắt nhiều phím)

- Test trên kit De1 với các led red và green Mỗi led sáng (tắt) tương ứng với 1 phím được nhấn (nhả) Phương pháp: “ Sử dụng 3 thanh ghi 8 bit “

- Trong bộ Ps2_check có chứa ba thanh ghi 8 bit

Trang 19

Group 1- K54 – ESRC LAB Page 19

Hinh 12 ba thanh ghi 8 bit

- Ví dụ: Muốn bắt phím di chuyển sang trái

Left =„1‟ khi byte0 = x”6b”

Left =„0‟ khi byte0 = x”6b” , byte1= x”f0” và byte3 = x”e0”

- Dưới đây là bảng kết hợp màu từ 3 bit của VGA:

Xanh (G) Xanh dương B

Trang 20

Group 1- K54 – ESRC LAB Page 20

Hinh 13 ảng kế hợp m i củ

b Cổng

- Cổng VGA có 5 tín hiệu tích cực bao gồm các tín hiệu đồng bộ theo phương

ngang và phương d c, h_sync và v_sync và 3 tín hiệu hình ảnh cho 3 màu đỏ, xanh,

xanh dương

- Hình ảnh là một tín hiệu tương tự, và bộ điều khiển video sử dụng một bộ chuyển đổi DAC để chuyển đổi tín hiệu số đầu ra thành mức tương tự mong muốn Nếu một tín hiệu hình ảnh N-bit thì tín hiệu này có thể được chuyển thành 2N mức tương tự

- Trong phần thảo luận , chúng ta dùng tín hiệu hình ảnh màu 3 – bit nên đầu

ra chúng ta sẽ thu được 23=8 màu cơ bản như được liệt kê trong bảng trên

4.2.2 điều khiển video

- Một bô điều khiển hình ảnh tạo ra các tín hiệu đồng bộ và các pixel dữ liệu đầu ra Sơ đồ như sau:

VGA_sync

Pixel generation circuit

Pixel generation circuit

h_sync v_sync

video_on

pixel_x pixel_y

External

data/control

rgb

VGA monitor

clock

Hinh 14 Sơ đồ khối củ ộ đi khi n

- Sơ đồ bao gồm:

Mạch đồng bộ, kí hiệu là VGA_sync

Mạch tạo pixel “Pixel generation circuit”

- Mạch VGA_sync tạo ra các tín hiệu đồng bộ và tín hiệu thời gian Tín hiệu

h_sync và v_sync được nối với cổng VGA để điều khiển chế độ quét theo phương

Trang 21

Group 1- K54 – ESRC LAB Page 21

ngang và phương d c của bộ điều khiển Pixel_x và pixel_y là đầu ra của các tín

hiệu được giải mã từ bộ đếm ở bên trong Hai tín hiệu này xác định vị trí của pixel

hiện tại Mạch VGA_sync cũng tạo ra tín hiệu video_on để xác định khi nào thì kích

hoạt hay vô hiệu hóa tín hiệu hiển thị trên màn hình

- Mạch pixel generation circuit tạo ra 3 tín hiệu hình ảnh rgb Màu thu được

tương ứng với t a độ của các pixel hiện tại và các tín hiệu dữ liệu và điều khiển từ bên ngoài

a ạch đồng ộ

- Mạch này tạo ra các tín hiệu đồng bộ theo phương ngang h_sync và đồng bộ theo phương d c v_sync Trong đó :

 h_sync: chỉ ra thời gian cần thiết để quét hết một hàng

 v_sync: chỉ ra thời gian cần thiết để quét hết toàn bộ màn hình

- Trong phần thảo luận của chúng ta dùn màn hình có độ phân giải 640x480 với tốc độ pixel là 25Mhz, nghĩa là trong 1s màn hình xử lý 25M pixel

- Màn hình bao gồm vùng viền đen ở xung quanh màn hình và vùng nhìn thấy

ở giữa có hình chữ nhật Các trục t a độ và chiều dương của các trục như hình vẽ dưới đây:

border

Visible area

x

y O

h_video_on

h_sync

Left border

display

Right border

retrace

Left border

Hinh 15 Sơ đồ h i gi n q h o phương ng ng

Ngày đăng: 27/09/2014, 10:32

HÌNH ẢNH LIÊN QUAN

3. Sơ đồ khối của hệ thống. - Báo cáo game Fix FPGA
3. Sơ đồ khối của hệ thống (Trang 11)
Hinh 8  Sơ đồ khối mạch nhận dữ liệu - Báo cáo game Fix FPGA
inh 8 Sơ đồ khối mạch nhận dữ liệu (Trang 14)
Hình vẽ dưới đây sẽ cho ta thấy make code của các phím của keyboard - Báo cáo game Fix FPGA
Hình v ẽ dưới đây sẽ cho ta thấy make code của các phím của keyboard (Trang 16)
Hinh 16  Sơ đồ  h i gi n củ   ín hiệ  q     h o phương   c - Báo cáo game Fix FPGA
inh 16 Sơ đồ h i gi n củ ín hiệ q h o phương c (Trang 22)
Hinh 17  Sơ đồ khối củ  mạch o j c  – mapped - Báo cáo game Fix FPGA
inh 17 Sơ đồ khối củ mạch o j c – mapped (Trang 24)
Hình 24: Sơ đồ khối counter - Báo cáo game Fix FPGA
Hình 24 Sơ đồ khối counter (Trang 33)

TỪ KHÓA LIÊN QUAN

w