bao cao game fix

36
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

Upload: seamap-vietnam

Post on 07-Aug-2015

240 views

Category:

Documents


12 download

TRANSCRIPT

Page 1: Bao Cao Game Fix

Final Report Bomberman Game on DE1 board

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

Page 2: Bao Cao Game Fix

Final Report Bomberman Game on DE1 board

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

Page 3: Bao Cao Game Fix

Final Report Bomberman Game on DE1 board

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

Page 4: Bao Cao Game Fix

Final Report Bomberman Game on DE1 board

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.

Page 5: Bao Cao Game Fix

Final Report Bomberman Game on DE1 board

Group 1- K54 – ESRC LAB Page 5

B. NỘI DUNG.

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

1.1. Đề tài.

Sau khi hoàn thành các bài lab thực hành trên Kit DE1 của Altera, chúng em

tiếp tục phát triển kỹ năng thiết kế và vận dụng vào thực tế, đó là triển khai một hệ

thống hoàn chỉnh trên Kit DE1 với đế tài: “Bomberman on FPGA”

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.

Page 6: Bao Cao Game Fix

Final Report Bomberman Game on DE1 board

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ả

A ← Di chuyển sang trái

S ↓ Di chuyển xuống dưới

D → Di chuyển sang phải

W ↑ Di chuyển lên trên

Space 0 Đặt bom

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

Page 7: Bao Cao Game Fix

Final Report Bomberman Game on DE1 board

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.

1.3.3.Kết thúc.

- Trò chơi kết thúc khi 1 người dính bom hoặc hết thời gian của 1 ván đấu

(200s)

- Khi hết giờ mà không ai bị bom nổ thì sẽ so điểm. Ai nhiều điểm hơn là

thắng

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

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

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

đề tài

Tuần 0: 26/7/2012 - 28/7/2012

Hoàn thành spec của game, định hình sơ đồ khối cho cả hệ thống.

Tuần 1: 29/7/2012 - 04/7/2012

Đ c tài liệu và viết khối điều khiển VGA, PS2

Xây dựng bản đồ cố định

Bắt tín hiệu của nhiều phím

Tuần 2: 05/8/2012 - 11/8/2012

Hiển thị, điều khiển nhân vật di chuyển và tránh đá trên bản đồ.

Page 8: Bao Cao Game Fix

Final Report Bomberman Game on DE1 board

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.

Page 9: Bao Cao Game Fix

Final Report Bomberman Game on DE1 board

Group 1- K54 – ESRC LAB Page 9

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

Bộ nhớ:

- 8Mb SDRAM.

- 512Kb SRAM.

- 4Mb Flash.

Âm thanh.

- Hỗ trợ bộ codec 24 bit.

Công tắc và chỉ thị.

- 10 công tắc chuyển và 4 nút bấm.

- 4 led 7 thanh.

- 10 LED đỏ và 8 LED xanh.

Các kết nối

- VGA, RS-232, và PS2.

- 2 cổng mở rộng 40 chân.

- Khe cắm SD/MMC.

Nguồn

- Có thể nguồn từ cáp USB hoặc thông qua cáp nguồn riêng.

Hinh 2 Kit DE 1

Page 10: Bao Cao Game Fix

Final Report Bomberman Game on DE1 board

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

Page 11: Bao Cao Game Fix

Final Report Bomberman Game on DE1 board

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

Page 12: Bao Cao Game Fix

Final Report Bomberman Game on DE1 board

Group 1- K54 – ESRC LAB Page 12

3.1.Bàn phím

Bàn phím với chuẩn giao tiếp PS2. Giao tiếp với khối xử lý thông qua khối PS2

Interface.

3.2.Màn hình

Màn hình được sử dụng là màn hình máy tính CRT hoặc LCD thông dụng được

điều khiển thông qua khối VGA Controller.

3.3.ROM

Được sử dụng để chứa font hiển thị trong game. Là distributed ROM - được trình

biên dịch tổng hợp từ các phần tử logic có sẵn trong chip.

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

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

Page 13: Bao Cao Game Fix

Final Report Bomberman Game on DE1 board

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

chẵn lẻ và 1 bit stop

Start Bit(1 bit)

Data Bits(8 bits)

Odd Parity Bit(1 bit)

Stop Bit(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 .

Page 14: Bao Cao Game Fix

Final Report Bomberman Game on DE1 board

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 :

KEYBOARD

Filter & Falling

Edge ps2c

ps2_rx

ps2c

ps2d

Falling edge

rst

clk

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:

Page 15: Bao Cao Game Fix

Final Report Bomberman Game on DE1 board

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

n<=n-1

rx_done_tick <=1

T

T

T

F

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:

Page 16: Bao Cao Game Fix

Final Report Bomberman Game on DE1 board

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

:

Page 17: Bao Cao Game Fix

Final Report Bomberman Game on DE1 board

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ó :

1C F0 1C

Đối với phím mở rộng ví dụ nút up : E0 75 F0 E0 75

Nếu ta nhấn một phím đủ lâu sau đó nhả ra thì make code sẽ được gửi nhiều lần :

1C 1C 1C ….. F0 1C

Nếu nhiều phím được bấm cùng một lúc thì code gửi đi lần lượt là make code và

break code của 2 phím.ví dụ ta bấm 2 phím Shift và A cùng lúc thì coe gửi đi sẽ là :

12 1C F0 1C F0 12

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 :

Page 18: Bao Cao Game Fix

Final Report Bomberman Game on DE1 board

Group 1- K54 – ESRC LAB Page 18

PS2_rx

ps2c

ps2d

ps2c

ps2d

clk

FSM to get make

code

dout

done_tick

FIFO

wr

w_data r_data

rdgot_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.

Page 19: Bao Cao Game Fix

Final Report Bomberman Game on DE1 board

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”

4.2. Khối VGA.

4.2.1.Đồ h a

a. iới hiệ

- VGA là viết tắt của “ video graphic array”, là một chuẩn đồ h a được giới

thiệu trong cuối những năm 1980 từ phía I M cùng loại máy tính PS/2 .Trong các

phần sau, chúng ta sẽ thảo luận về giao diện có độ phân giải 640 x 480 với 8 màu cơ

bản của màn hình CRT ( cathode ray tube).

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

Xanh (G) Xanh dương B

0 0 0 en

0 0 1 Xanh dương

0 1 0 Xanh

0 1 1 a

1 0 0

1 0 1 ươ

1 1 0 ng

Page 20: Bao Cao Game Fix

Final Report Bomberman Game on DE1 board

Group 1- K54 – ESRC LAB Page 20

1 1 1 ng

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_syncVGA_sync

Pixel generation

circuit

Pixel generation

circuit

h_sync

v_sync

video_on

pixel_x

pixel_y

External

data/controlrgb

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

Page 21: Bao Cao Game Fix

Final Report Bomberman Game on DE1 board

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:

borderVisible area

x

y

O

h_video_on

h_sync

0 639 655 751 799

Left

border

display

Right

border

retrace

Left

border

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

Page 22: Bao Cao Game Fix

Final Report Bomberman Game on DE1 board

Group 1- K54 – ESRC LAB Page 22

iệ đồ p

- Sơ đồ thời gian quét của tín hiệu đồng bộ theo phương ngang như hình 2.

Một chu kì của tín hiệu h_sync được chia làm 4 vùng:

Vùng hiển thị: là vùng mà các pixel được hiển thị trên màn hình.

Vùng quét ngược: là vùng mà các tia điện tử quay ngược lại về phía

cạnh bên trái.

Vùng biên phải: là vùng màu đen bên phải, trong vùng này các tín

hình ảnh bị vô hiệu hóa không được hiển thị.

Vùng biên trái: là vùng màu đen bên trái và giống như vùng biên bên

phải, trong vùng này thì các tín hiệu hình ảnh không được hển thị.

iệ đồ p ọ

- Sơ đồ thời gian quét của tín hiệu đồng bộ theo phương d c như sau:

v_video_on

v_sync

0 479 489 491 524

Top

border

display

Bottom

border

retrace

Top

border

Hinh 16 Sơ đồ h i gi n củ ín hiệ q h o phương c

- Trong đó:

Vùng hiển thị: là vùng mà các pixel được hiển thị trên màn hình.

Vùng quét ngược: là vùng mà các tia điện tử quay ngược lại về phía

cạnh bên trái.

Vùng biên trên: là vùng màu đen bên trên, trong vùng này các tín hình

ảnh bị vô hiệu hóa không được hiển thị.

Vùng biên dưới: là vùng màu đen bên dưới và giống như vùng biên

bên trên, trong vùng này thì các tín hiệu hình ảnh không được hển thị.

b. ốc độ pi l

Page 23: Bao Cao Game Fix

Final Report Bomberman Game on DE1 board

Group 1- K54 – ESRC LAB Page 23

- G i p là số pixel trong 1 hàng ngang, l là số đường ngang trong 1 màn hình

và s là số màn hình hiển thị trong 1 s thì tốc độ pixel bằng p*l*s.

- h đ n h nh h ng nh p nh th s ph i lớn hơn ho c ng 2

- Với màn hình có độ phân giải 640x480 và số màn hình hiển thị trong 1s là 60

h nh s thì p = 800 pixel/line, l=525 line/screen, s=60 screen/second tốc độ pixel

bằng 800x525x60 25M pixel/s.

c. ạch ạo pi l

- Mạch tạo pixel tạo ra tín hiệu màu 3 – bit rgb cho cổng VGA. Tín hiệu điều

khiển và dữ liệu từ bên ngoài chỉ ra nội dung cần hiển thị trên màn hình, pixel_x và

pixel_y chỉ ra t a độ hiện tại của pixel. Có 3 loại mạch tạo pixel:

Sơ đồ kiểu bit – mapped .

Sơ đồ kiểu tile – mapped .

Sơ đồ kiểu object – mapped.

- Trong sơ đồ kiểu bit – mapped, dữ liệu hiển thị trên màn hình được lưu trữ

trong một ô bộ nhớ. Mỗi pixel được lưu trữ trực tiếp trong bộ nhớ tạo thành từ nhớ (

memory word )và tín hiệu pixel_x, pixel_y tạo ra địa chỉ của ô nhớ. Một mạch xử lý

đồ h a liên tục cập nhật màn hình và ghi dữ liệu vào ô nhớ. Một mạch thu liên tục

đ c từ bộ nhớ và truyền dữ liệu tới tín hiệu rgb. Sơ đồ bit – mapped thường được

dùng để tạo màu. Nhược điểm khi sử dụng sơ đồ này là tốn bộ nhớ.

- Để giảm yêu cầu bộ nhớ, người ta dùng sơ đồ kiểu tile – mapped . Trong sơ

đồ kiểu này, chúng ta nhóm một tập bit để tạo thành 1 tile ( ô gạch ) và coi mỗi tile

như 1 bit. Sơ đồ này thường được dùng để tạo text.

- Cuối cung, sơ đồ kiểu object – mapped thường được dùng để tạo ra các vật

thể. Trong các bào toán, chúng ta thường kết hợp cả 3 cách trên để tạo ra một màn

hình hoàn chỉnh.

Sơ đồ ki o j c – mapped .

Page 24: Bao Cao Game Fix

Final Report Bomberman Game on DE1 board

Group 1- K54 – ESRC LAB Page 24

Object 1

Generation circuit

Object 1

Generation circuit

Object 2

Generation circuit

Object 2

Generation circuit

Object 3

Generation circuit

Object 3

Generation circuit

rgb

mux

Data/control

Video_on

pixel_x

pixel_yrgb

Hinh 17 Sơ đồ khối củ mạch o j c – mapped

- Sơ đồ khối bao gồm các mạch tạo ra các vật thể, một bộ mux để ch n vật thể

hiển thị. Mạch này thực hiện các chức năng sau:

Giữ t a độ của các vật thể và so sánh các t a độ này với vị trí hiện tại

mà pixel_x và pixel_y cung cấp.

Nếu vị trí hiện tại của vật thể ở trong vùng hiển thị thì mạch này sẽ

ch n thêm tín hiệu on của vật thể đó.

Chỉ ra tín hiệu màu của vật thể.

- ộ mux kiểm tra các tín hiệu on và xác định tín nào được truyền tới tín hiệu

đầu ra rgb.

ơ đồ i u it – mapped

Trong kiểu sơ đồ này, mỗi pixel tạo thành 1 ô nhớ nên nhược điểm của phương

pháp này là rất tốn bộ nhớ. Cách tiếp cận này không yêu cầu thêm mạch để chuyển

các tín hiệu pixel_ x và pixel_y thành địa chỉ ô nhớ nhưng lãng phí nhiều bộ nhớ.

ơ đồ i u tile – mapped

- Sơ đồ kiểu này được dùng để tạo text và sẽ được thảo luận trong sau.

Page 25: Bao Cao Game Fix

Final Report Bomberman Game on DE1 board

Group 1- K54 – ESRC LAB Page 25

4.2.3. VGA text.

a. iới hiệ

- Sơ đồ kiểu tile – mapped được dùng để tạo text và các kí tự . Mỗi tile được

coi như một siêu pixel . Phương pháp xây dựng các kí tự là coi chúng như các tile

và thiết kế mạch tạo pixel bằng phương pháp này.

b. ạo

- Khi áp dụng phương pháp này, mỗi kí tự được coi như một tile, giá trị của

một tile biểu diễn mã của một vị mẫu cụ thể. Chúng ta sử dụng mã ASCII 7 – bit

cho các kí tự.

- Mẫu của các tile tạo nên font chữ của tập các kí tự. Có nhiều loại font chữ

nhưng trong phần thảo luận của chúng ta dùng font chữ có kích thước 8x16( 8 cột và

16 hàng ).

00000000

00000000

00010000

00111000

01101100

11000110

11000110

11111110

11000110

11000110

11000110

11000110

00000000

00000000

00000000

00000000

00000000

00000000

00010000

00111000

01101100

11000110

11000110

11111110

11000110

11000110

11000110

11000110

00000000

00000000

00000000

00000000

Hinh 18 kí on củ kí

- Các kí tự bao gồm phần số, các chữ cái hoa và chữ cái thường, các biểu

tượng và nhiều kí tự đồ h a đặc biệt.

- Đối với màn hình có độ phân giải 640 x480 , khi sử dụng các tile có kích

thước 8 x16 thì mỗi hàng ngang chứa vừa 80 tile và mỗi hàng d c chứa vừa đủ 30

tile. Khi đó ta có thể coi màn hình có độ phân giải là 80 x 30.

-

Page 26: Bao Cao Game Fix

Final Report Bomberman Game on DE1 board

Group 1- K54 – ESRC LAB Page 26

d. Font ROM

- Để thực hiện các kí tự mã ASCII, chúng ta sử dụng font ROM . Giả sử chúng

ta thực hiện 128 kí tự đầu của bảng mã ASCII thì kích thước của ROM là 211 x 8.

Trong đó, 7 bit có tr ng số cao nhất của 11 bit địa chỉ được dùng để xác định kí tự,

4 bit có tr ng số nhỏ nhất được dùng để xác định hàng trong một mẫu của kí tự.

Hình 5 là địa chỉ và nội dung ROM của kí tự A.

- Cách thực hiện như sau:

constant ADDR_WIDTH: integer :=ll;

constant DATA_WIDTH: integer:=8;

signal addr_reg: std_logic_vector (ADDR_WIDTH -1 downto

0);

type rom_type is array (0 to 2**ADDR_WIDTH-l)

-- ROM definition

constant RUM: rom_type :=

-- code x00 (blank space)

“00000000”, -- 0

“00000000”, -- 1

“00000000”, -- 2

“00000000”, -- 3

“00000000”, -- 4

“00000000”, -- 5

“00000000”, -- 6

“00000000”, -- 7

“00000000”, -- 8

“00000000”, -- 9

“00000000”, -- a

“00000000”, -- b

“00000000”, -- c

“00000000”, -- d

“00000000”, -- e

“00000000”, -- f

...

begin

-- addr register to infer block RAM

Page 27: Bao Cao Game Fix

Final Report Bomberman Game on DE1 board

Group 1- K54 – ESRC LAB Page 27

process (clk)

begin

if (clk‟event and clk = „1‟) then addr-reg <= addr;

end if ;

end process;

data <= ROM(to_integer(unsigned(addr_reg))) ;

end arch;

e. ạch ạo cơ ản

- Mạch tạo pixel tạo ra các giá trị của pixel tương ứng với t a độ của pixel

hiện tại và các tín hiệu dữ liệu/điều khiển bên ngoài. Mạch tạo pixel dựa trên sơ đồ

kiểu tile – mapped liên quan tới 2 giai đoạn. Ở giai đoạn thứ nhất dùng các bit cao

của pixel_x và pixel_y để tạo ra mã của một tile, và ở giai đoạn thứ hai dùng mã này

và các bit thấp để tạo ra giá trị của pixel.

- Theo phương pháp này thì màn hình được coi như có độ phân giải 80x30 tile,

mỗi tile là một ô có kích thước 8x16. Đầu tiên, pixel x v pixel sẽ chỉ ra t a độ

của vị trí tile hiện tại. Mạch tạo kí tự sử dụng những t a độ này kết hợp với các tín

hiệu dữ liệu/ điều khiển từ bên ngoài để tạo ra giá trị của tlie tương ứng với mã

ASCII. Tiếp theo, mã ASCII này sẽ làm 7 bit cao của địa chỉ của font ROM và chỉ

ra vị trí của mẫu đang xét. Kết hợp với 4 bit thấp của t a độ y để hình thành nên địa

chỉ đầy đủ của font ROM. Đầu ra của font ROM tương ứng với 8 bit hàng ngang

của một mẫu, còn 3 bit có tr ng số nhỏ nhất của t a độ x chỉ ra vị trí của pixel.

f. lệ củ on

- Trong sơ đồ kiểu tile – mapped chúng ta có thể điều chỉnh kích thước của

các pixel. Chẳng hạn, chúng ta có thể mở rộng từ font có kích thước 8x16 lên font

có kích thước 16x32. Để thực hiện được công việc này, chúng ta chỉ cần dịch phải

t a độ của pixel 1 bit và bỏ đi bit có tr ng số nhỏ nhất của pixel_x và pixel_y.

Page 28: Bao Cao Game Fix

Final Report Bomberman Game on DE1 board

Group 1- K54 – ESRC LAB Page 28

4.3. Khối di chuyển.

Hinh 19 SƠ ĐỒ THUẬT TOÁN KHÓI DI CHUYỂN

an đầu, 2 nhân vật xuất hiện ở 2 góc màn hình chéo nhau. Khi phím di

chuyển được nhấn, ta sẽ xét xem t a độ tiếp theo mà nhân vật di chuyển tới có là đá

hay gạch không. Nếu không thì gán biến move_step<= 8 ( bước di chuyển của nhân

vật), nếu có thì gán biến move_step<= 0. Sau đó ta lưu t a độ mới của nhân vật,

đồng thời đánh dấu hướng di chuyển của nhân vật để phục vụ quá trình đặt bom sau

này.

Page 29: Bao Cao Game Fix

Final Report Bomberman Game on DE1 board

Group 1- K54 – ESRC LAB Page 29

4.4 Khối đặt bom.

Hinh 20 SƠ ĐỒI THUẬT TOÁN KHỐI ĐẶT BOM

Khi có tín hiệu đặt bom, ta sẽ lưu lại t a độ nhân vật khi đặt bom để chỉnh lại

vị trí đặt bom ưu tiên theo hướng di chuyển ( Ví dụ: khi nhân vật đang sang ph i thì

tọa độ bom là : bom (x,y) = nhan_vat (x-1,y) ), đồng thời bộ counter bắt đầu đếm ,

và gán biến bomb_set = „1‟( hi n th bom ) . Đến khi counter đếm đến giá trị đặt

trước, ta gán o set = „0‟ v fire set = „1‟( Th i hi n th bom mà hi n th lửa ).

Page 30: Bao Cao Game Fix

Final Report Bomberman Game on DE1 board

Group 1- K54 – ESRC LAB Page 30

Phá gạch :

Từ t a độ đặt bom , khi có tín hiệu hiển thị lửa fire on=‟1‟,

ta gán các phần tử mà ứng với các t a độ liền kề của bom của mảng

Brick bằng „ 0 ‟.

Nhân vật mất mạng:

Khi quét màn hình mà thấy t a độ nhân vật trùng với t a độ lửa thì

nhân vật sẽ bị mất mạng.

4.5. Khối hiện thị TEXT

Hinh 21 TEXT CONTROL

Khối điều khiển text với đầu vào gồm các tín hiệu pixel_x và pixel_y để xác định vị

trí pixel đang được quét trên màn hình. Các tín hiệu key_up, key_down để di

chuyển lên hoặc xuống xác định text đang được ch n. Tín hiệu SW điều khiển các

text hiển thị trong từng màn hình. Tín hiệu ra sẽ được đưa qua bộ mux để lựa ch n

text hiển thị lên màn hình kết hợp với các tín hiệu đồng bộ v_sync và h_sync

Page 31: Bao Cao Game Fix

Final Report Bomberman Game on DE1 board

Group 1- K54 – ESRC LAB Page 31

Màn hình đầu vào:

Hinh 22 START GAME

Hinh 23 SƠ ĐỒ RTL KHỐI TEXT

Page 32: Bao Cao Game Fix

Final Report Bomberman Game on DE1 board

Group 1- K54 – ESRC LAB Page 32

- Sử dụng font mẫu: 8x8 pixel

- Các font có kích thước lớn hơn có thể mở rộng từ font mẫu

- VD: Text “ OM ERMAN” là 64x64 font thu được bằng cách dịch t a độ

pixel_x và pixel_y sang phải 3 bit

4.6 Khối counter

Page 33: Bao Cao Game Fix

Final Report Bomberman Game on DE1 board

Group 1- K54 – ESRC LAB Page 33

Hình 24: Sơ đồ khối counter

Khối counter thực hiện việc đếm ngược từ 200s -> 0 để xác định thời gian của

người chơi cho một ván đấu. Tín hiệu timer_tick sử dụng tick 60 Hz . Khi

timer_start được xác định bộ đếm bắt đầu hoạt động. Khi bộ đếm đến 0 thì tín hiệu

timer_up được xác định để làm tín hiệu chuyển màn chơi.

4.7 Sơ đồ FSM của game

New Game

Play

Game Over

Reset

Key = „1‟

Key = „0‟

Over = „1‟

Over = „0‟

Key = „1‟

Sơ đồ S củ g m

Page 34: Bao Cao Game Fix

Final Report Bomberman Game on DE1 board

Group 1- K54 – ESRC LAB Page 34

Hình 25. Sơ đồ FSM của game

Có 3 trạng thái chính là New Game, Play và Game Over. Các tác nhân gây ra dịch

chuyển trạng thái là tín hiệu Key và Over

C. KẾT LUẬN

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

Game thu được sát với spec đã đề ra

Giao diện còn đơn giản, các chức năng còn sơ sài

Chưa có vật phẩm

2. Khó khăn.

Vì thời gian còn hạn chế và lại rơi vào thời điểm thi h c kỳ hè nên chúng

em mới chỉ hoàn thiện được các chức năng cơ bản nhất.

Kĩ năng đ c tài liệu tiếng anh còn hạn chế nên mất khá nhiều thời gian

Việc chia sẻ dùng kit gặp khó khăn vì các thành viên ở khá xa nhau.

3. Đề Xuất.

- Ghép thêm phần AUDIO cho Game sinh động hơn.

Page 35: Bao Cao Game Fix

Final Report Bomberman Game on DE1 board

Group 1- K54 – ESRC LAB Page 35

Phụ lục

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

Hinh 2 Kit DE 1 .......................................................................................................... 9

Hinh 3 Design Flow ................................................................................................. 10

Hinh 4 SƠ ĐỒ TỔNG QUAN .................................................................................. 11

Hinh 5 Cổng PS2 ....................................................................................................... 12

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

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

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

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

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

Hinh 11 giao tiếp với PS2 keyboard ...................................................................... 18

Hinh 12 ba thanh ghi 8 bit ........................................................................................ 19

Hinh 13 bảng kết hợp màu từ 3 bit của VGA .......................................................... 20

Hinh 14 Sơ đồ khối của bộ điều khiển VGA ......................................................... 20

Hinh 15 Sơ đồ thời gian quét theo phương ngang ................................................. 21

Hinh 16 Sơ đồ thời gian của tín hiệu quét theo phương d c. ................................... 22

Hinh 17 Sơ đồ khối của mạch object – mapped ....................................................... 24

Hinh 18 Mẫu kí tự và font của kí tự ......................................................................... 25

Hinh 19 SƠ ĐỒ THUẬT TOÁN KHÓI DI CHUYỂN ............................................ 28

Hinh 20 SƠ ĐỒI THUẬT TOÁN KHỐI ĐẶT BOM ............................................. 29

Hinh 21 TEXT CONTROL ..................................................................................... 30

Hinh 22 START GAME ........................................................................................ 31

Hinh 23 SƠ ĐỒ RTL KHỐI TEXT ........................................................................ 31

Page 36: Bao Cao Game Fix

Final Report Bomberman Game on DE1 board

Group 1- K54 – ESRC LAB Page 36

Tài liệu tham khảo

[1] FPGA Prototyping VHDL Examples - Xilinx Spartan-3 version . PONG P.CHU.

[2] Rapid.Prototyping.of.Digital.Systems

[3] MIT Press - Circuit Design with VHDL (2007)

[4] http://esrc618.wordpress.com/

[5] http://vuhuutiep.wordpress.com/

[6] http://www.dientuvietnam.net/forums/gal-pal-cpld-fpga-59/tam-su-ve-fpga-

33377/