Final Report Bomberman Game on DE1 board

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
Group 1- K54 – ESRC LAB

Page 1

Final Report Bomberman Game on DE1 board

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
Group 1- K54 – ESRC LAB

Page 2

Final Report Bomberman Game on DE1 board
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

Group 1- K54 – ESRC LAB

Page 3

Final Report Bomberman Game on DE1 board
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.

Group 1- K54 – ESRC LAB

Page 4

Final Report Bomberman Game on DE1 board

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.

Group 1- K54 – ESRC LAB

Page 5

Final Report Bomberman Game on DE1 board
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

Group 1- K54 – ESRC LAB

Page 6

Final Report Bomberman Game on DE1 board
 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 đồ.
Group 1- K54 – ESRC LAB

Page 7

Final Report Bomberman Game on DE1 board
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.
Group 1- K54 – ESRC LAB

Page 8

Final Report Bomberman Game on DE1 board
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

Group 1- K54 – ESRC LAB

Page 9

Final Report Bomberman Game on DE1 board
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

Group 1- K54 – ESRC LAB

Page 10

Final Report Bomberman Game on DE1 board
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.

CU
FONT

PS2

KEYBOARD

INTERFACE

ROM
VGA

MONITOR

CONTROLER

Hinh 4 SƠ ĐỒ TỔNG QUAN

Group 1- K54 – ESRC LAB

Page 11

Final Report Bomberman Game on DE1 board
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

Group 1- K54 – ESRC LAB

Page 12

Final Report Bomberman Game on DE1 board

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 .

Group 1- K54 – ESRC LAB

Page 13

Final Report Bomberman Game on DE1 board
- 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
clk
rst
KEYBOARD

ps2d
ps2c

dout (7 downto 0)
ps2_rx
rx_done_tick

Falling edge
Filter & Falling
Edge ps2c

clk

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

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

Group 1- K54 – ESRC LAB

Page 14

Final Report Bomberman Game on DE1 board

Idle

F
Rx_en=1 and
Fail_edge=1
T
b<=ps2d (b>>1)
n<= 9

dps

F
Fail_edge=1

T

b<= ps2d & (b>>1)

F

n=0

n<=n-1
T

Load
rx_done_tick <=1

Hinh 9

ASM của mạch nhận

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

Group 1- K54 – ESRC LAB

Page 15

Final Report Bomberman Game on DE1 board
-

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
:

Group 1- K54 – ESRC LAB

Page 16

Final Report Bomberman Game on DE1 board
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 :
Group 1- K54 – ESRC LAB

Page 17

Final Report Bomberman Game on DE1 board

ps2c
ps2d

ps2c

Key_code
dout

w_data

ps2d

got_tick
done_tick

clk

r_data

wr

rd

got_key

FSM to
get make
code

PS2_rx

Hinh 11

FIFO

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.

Group 1- K54 – ESRC LAB

Page 18

Final Report Bomberman Game on DE1 board

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

0

0

1

Xanh dương

0

1

0

Xanh

0

1

1

a

1

0

0

1

0

1

1

1

0

Group 1- K54 – ESRC LAB

en

ươ
ng

Page 19

Final Report Bomberman Game on DE1 board
1

1
Hinh 13

1
ảng kế hợp m

ng
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:
External
data/control

rgb
Pixel
Pixel generation
generation
circuit
circuit

pixel_x
pixel_y
video_on

VGA
monitor

h_sync
v_sync

clock

VGA_sync
VGA_sync

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
-

Group 1- K54 – ESRC LAB

Page 20

Final Report Bomberman Game on DE1 board
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:
x

O

border
Visible area

y
h_video_on
639 655 751 799

0
h_sync

display
Left
border
Right
border
Hinh 15

Group 1- K54 – ESRC LAB

Sơ đồ h i gi n q

retrace

Left
border

h o phương ng ng

Page 21

Final Report Bomberman Game on DE1 board
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
479 489 491 524

0
v_sync

display
Top
border

Top
border

Bottom retrace
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

Group 1- K54 – ESRC LAB

Page 22

Final Report Bomberman Game on DE1 board
- 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 .

Group 1- K54 – ESRC LAB

Page 23

Final Report Bomberman Game on DE1 board
Data/control
Video_on
pixel_x
pixel_y

rgb
mux
Object
Object 11
Generation
Generation circuit
circuit

Object
Object 22
Generation
Generation circuit
circuit

Object
Object 33
Generation
Generation circuit
circuit

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.

Group 1- K54 – ESRC LAB

Page 24

rgb

Final Report Bomberman Game on DE1 board
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
00000000
00000000
00010000
00010000
00111000
00111000
01101100
01101100
11000110
11000110
11000110
11000110
11111110
11111110
11000110
11000110
11000110
11000110
11000110
11000110
11000110
11000110
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000

Hinh 18

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.
Group 1- K54 – ESRC LAB

Page 25

Final Report Bomberman Game on DE1 board
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

Group 1- K54 – ESRC LAB

Page 26

Final Report Bomberman Game on DE1 board
process (clk)
begin
if (clk‟event and clk = „1‟) then addr-reg
end

if ;

end

process;

data
end

e.

<=

addr;

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

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

Group 1- K54 – ESRC LAB

Page 27

Final Report Bomberman Game on DE1 board
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.

Group 1- K54 – ESRC LAB

Page 28

Final Report Bomberman Game on DE1 board
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 ).

Group 1- K54 – ESRC LAB

Page 29

Final Report Bomberman Game on DE1 board
 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
Group 1- K54 – ESRC LAB

Page 30

Final Report Bomberman Game on DE1 board
Màn hình đầu vào:

Hinh 22

START GAME

Hinh 23 SƠ ĐỒ RTL KHỐI TEXT

Group 1- K54 – ESRC LAB

Page 31

Final Report Bomberman Game on DE1 board
-

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

Group 1- K54 – ESRC LAB

Page 32

Final Report Bomberman Game on DE1 board
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
Reset

Key = „0‟

New Game

Key = „1‟

Over = „0‟
Play

Key = „1‟

Over = „1‟

Game Over

Sơ đồ S

củ g m

Group 1- K54 – ESRC LAB

Page 33

Final Report Bomberman Game on DE1 board
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.

Group 1- K54 – ESRC LAB

Page 34

Final Report Bomberman Game on DE1 board

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
Group 1- K54 – ESRC LAB

Page 35

Final Report Bomberman Game on DE1 board

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-fpga33377/

Group 1- K54 – ESRC LAB

Page 36

Sign up to vote on this title
UsefulNot useful