Tải bản đầy đủ (.pdf) (33 trang)

THIẾT KẾ HỆ THỐNG NHÚNG TRÒ CHƠI FLAPPY BIRD TRÊN KIT DE1 ALTERA TẠI PHÒNG NGHIÊN CỨU HỆ THỐNG NHÚNG VÀ TÍNH TOÁN KHẢ TRÌNH – VIỆN ĐTVT - BKHN

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.71 MB, 33 trang )

I HC BÁCH KHOA HÀ NI
VIN T - VIN THÔNG




BÁO CÁO THỰC TẬP KỸ THUẬT
THIT K H THNG NHÚNG

TRÊN KIT DE1 ALTERA
TẠI PHÒNG NGHIÊN CỨU HỆ THỐNG NHÚNG
VÀ TÍNH TOÁN KHẢ TRÌNH – VIỆN ĐTVT - BKHN

Hà Nội, 8 /2014
Sinh viên thực hiện: TĂNG THIÊN VŨ
Lớp: KSTN ĐTVT K55
SHSV: 20102788



Nhận xét của đơn vị thực tập:
……………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………


……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………


MC LC

MỤC LỤC 3
DANH MỤC HÌNH VẼ 4
A. LỜI NÓI ĐẦU 5
B. NỘI DUNG 6
Chương 1. Trung tâm nghiên cứu và phát triển Điện tử - Viễn thông 6
1.1 Chức năng, nhiệm vụ. 6
1.2 Phòng thí nghiệm Hệ thống nhúng và Tính toán khả cấu trình
(ESRC Lab). 8
Chương 2. Nội dung thực tập 9
2.1 Các khái niệm cơ bản 9
2.1.1 Hệ thống nhúng 9
2.1.2 Công nghệ FPGA 10
2.1.3 Phần cứng có khả năng cấu hình 10
2.1.4 Hệ thống nhúng trên các KIT phát triển của Alteral. 11
2.2 Thiết kế hệ thống nhúng – Trò chơi Flappy Bird 14
2.2.1 Tổng quan hệ thống 14

2.2.2 Phân tích 18
2.2.3 Thiết kế 19
2.2.3.1 Khối điều khiển VGA 19
2.2.3.2 Thuật toán di chuyển, tính toán va chạm, tính điểm người
chơi………… 21
2.2.3.3 Xử lí Audio, giao tiếp SD Card 27
2.2.3.4. Khối bàn phím PS2 29
2.2.4. Kiểm thử hệ thống 30
Chương 3. Nhận xét đề xuất 31
3.1. Ưu điểm 31
3.2. Nhược điểm 31
3.3. Đề xuất 31
C. KẾT LUẬN 32
D. TÀI LIỆU THAM KHẢO 33

DANH MỤC HÌNH VẼ

Hình 2.1.4.1. Giao diện làm việc của phần mềm Quartus 11
Hình 2.1.4.2 Giao diện làm việc của Tool SOPC 12
Hình 2.1.4.3 Giao diện làm việc của NIOS II IDE 13
Hình 2.2.1.1 Màn hình chơi 14
Hình 2.2.1.2 Cổng giao tiếp VGA 15
Hình 2.2.1.3 Cổng giao tiếp PS2 16
Hình 2.2.1.4 Các thành phần trong hệ thống 17
Hình 2.2.2.1 Sơ đồ khối hệ thống 19
Hình 2.2.3.1 Sơ đồ khối VGA Controller 20
Hình 2.2.3.2 Các thông số trên màn hình chơi 21
Hình 2.2.3.3 Sơ đồ thuật toán va chạm và tính điểm 24
Hình 2.2.3.4 Lưu trữ một kí tự trong ROM 25
Hình 2.2.3.5 Khôi character controller. 26

Hình 2.2.3.6 Khối SD card và xử lí âm thanh 27
Hình 2.2.3.7 Cấu trúc khối audio 28
Hình 2.2.3.8 Khối audio config trong SOPC 28
Hình 2.2.3.9 Module Ps2 trong SOPC 29

A. LỜI NÓI ĐẦU
Nằm trong chương trình học cơ bản của sinh viên ngành kĩ thuật, thực tập kĩ
thuật là một môn học quan trọng. Sinh viên được trực tiếp tham gia học tập và làm
việc trực tiếp tại một cơ quan, một tổ chức. Đây là cơ hội thực sự tốt cho sinh viên
để tiếp xúc trực tiếp với môi trường làm việc thực tế, được áp dụng những kiến thức
học được trên ghế nhà trường vào những lĩnh vực khác nhau, qua đó rút ra được
nhiều kinh nghiệm cho bản thân, giúp sinh viên có định hướng tốt hơn trong trong
việc chuẩn bị cho con đường phía trước.
Trong quãng thời gian hè nằm 2014, học kì 20133, em đã được học tập và
nghiên cứu tại Phòng thí nghiệm về Hệ thống nhúng và Tính toán khả cấu trình
(Embedded System and Reconfigurable Compute Labroratory) thuộc Trung tâm
Nghiên cứu và Phát triển, Viện Điện tử Viễn Thông, Đại học Bách Khoa Hà Nội.
Tại phòng thí nghiệm, em cùng các bạn trong nhóm đã được tìm hiểu thêm về
phương pháp thiết kế hệ thống nhúng, trực tiếp thực hành trên các KIT phát triển
được trang bị trên phòng lab. Qua đó nâng cao được khả năng xây dựng hệ thống,
khả năng sử dụng các ngôn ngữ mô tả phần cứng như VHDL, Verilog HDL cũng
như các ngôn ngữ lập trình như C/C++.
Kết quả nghiên cứu sau đợt thực tập kĩ thuật, ngoại trừ nâng cao được các
khả năng về xây dựng hệ thống, em và các bạn khác trong nhóm đã xây dựng được
một hệ thống nhúng hoạt động ổn định. Hệ thống được xây dựng và phát triển dựa
trên ý tưởng trò chơi trên Android (Flappy Bird) nhưng được thực hiện hoàn toàn
trên KIT DE1 của Alteral.
Để có được những kết quả khả quan trong đợt thực tập hè này, em và các
bạn trong nhóm đã nhận được sự giúp đỡ của các anh chị trong phòng thí nghiệm
cùng các bạn đã giúp đỡ. Xin chân thành cảm ơn thầy Phạm Ngọc Nam đã tạo điều

kiện về vật chất cũng như trang thiết bị cho nhóm được học tập và nghiên cứu.
Qua đây, em cũng xin gửi lời cảm ơn đến Ban lãnh đạo Viện Điện tử Viễn
thông đã tạo điều kiện cho em được tham gia đợt thực tập kĩ thuật lần này.

Hà nội, 8/2014
Sinh viên
Tăng Thiên Vũ


B. NỘI DUNG
Chương 1. Trung tâm nghiên cứu và phát triển Điện tử - Viễn thông
1.1 Chức năng, nhiệm vụ.
Trung tâm nghiên cu và phát trin t- Vin thông
Địa chỉ: Phòng 618, Thư viện Tạ Quang Bửu, Đại học Bách khoa Hà Nội, số 1
Đại Cồ Việt, Hai Bà Trưng, Hà Nội.
Trung tâm nghiên cứu và phát triển Điện tử – Viễn thông có nhiệm vụ triển khai
các hoạt động nghiên cứu khoa học, tư vấn và chuyển giao công nghệ trong lĩnh vực
ĐT-VT, được tổ chức theo cơ chế mở, hình thành các nhóm nghiên cứu và các nhóm
nghiên cứu mạnh để thực hiện các đề tài, dự án nghiên cứu, với sự tham gia của cán bộ
thuộc các bộ môn, trung tâm của Viện, cán bộ thuộc các đơn vị trong Trường ĐHBK
Hà Nội, cán bộ và nhà khoa học của các trường đại học, các cơ sở nghiên cứu trong
nước và ngoài nước. Hiện tại trung tâm có 8 phòng nghiên cứu chính:
 PTN Thiết kế vi mạch (IC Design Lab)
 PTN Thông tin vô tuyến (Wireless Communications Lab)
 PTN Mạng thế hệ mới (Future Networking Lab)
 PTN Quang dẫn và siêu cao tần (Microwaves and Photonics Lab)
 PTN Hệ thống nhúng và tính toán khả cấu hình
(Embedded Systems and Reconfigurable Computing Lab)
 PTN Xử lý tín hiệu và thông tin
(Signal and Information Processing Laboratory)

 PTN Đa phương tiện (Multimedia Lab)
 PTN Kỹ thuật điện tử Y sinh (Bio-medical Electronics Lab)

Trung tâm là nơi cho phép phát huy hết thế mạnh về mặt NCKH và CGCN của
Viện ĐT-VT. Ngoài ra, đây cũng có thể được xem là điều kiện tiên quyết để Viện có
thể tập trung tiềm lực KHCN nhằm thực hiện các nhiệm vụ lớn mang tính trọng điểm
quốc gia, là nơi thúc đẩy HTQT trong các hoạt động NCKH và CGCN với các nước
phát triển.

c nghiên cu chính:
 Thông tin vô tuyn: Các hướng nghiên cứu liên quan đến thiết bị di động thông
minh; Các kỹ thuật xử lý tín hiệu tiên tiến trong thông tin di động như
OFDM/OFDMA, MIMO-OFDM, CDMA; Thiết kế và mô phỏng mạng thông tin di
động ở dạng mô hình; Nghiên cứu và thiết kế hệ thống thông tin dưới nước
 Mng th h m: tập trung vào các chủ đề nghiên cứu liên quan đến
mạng cố định và di động thế hệ mới, mạng Internet và các dịch vụ mạng như: Công
nghệ ảo hóa, quản lý tài nguyên mạng, mạng tiết kiệm năng lượng, đảm bảo chất
lượng dịch vụ và chất lượng trải nghiệm trong mạng; Mạng cảm biến vô tuyến và
ứng dụng của mạng cảm biến trong môi trường, xây dựng, giao thông vận tải; Hệ
thống thông tin không dây đa chặng phục vụ các hoạt động hiện trường và tình
huống khẩn cấp; Mạng đồng đẳng và mạng xếp chồng; Các công nghệ sử dụng
trong mạng di động: tối ưu hóa tài nguyên mạng, quản lí di động, điều khiển
chuyển giao, đảm bảo chất lượng dịch vụ và chất lượng trải nghiệm di động; Công
nghệ theo định hướng dịch vụ giá trị gia tăng và môi trường thông minh
 Quang dn và siêu cao tn: tập trung vào các chủ đề nghiên cứu liên quan đến
công nghệ quang và siêu cao tần như: Nghiên cứu, tính toán và thiết kế các mạch
quang học có kích thước nano: áp dụng cho các hệ thống thông tin quang, các phần
tử tích cực, và đặc biệt là các thiết bị truyền dẫn năng lượng quang học kích thước
nano; Phân tích, thiết kế và chế tạo các loại antenna thế hệ mới: nghiên cứu các loại
antenna đa băng, băng rộng, kích thước nhỏ, hiệu suất bức xạ cao ứng dụng trong

các hệ thống thông tin vô tuyến, các hệ thống vô tuyến cảm biến môi trường; Phân
tích và thiết kế đường truyền sóng vô tuyến: phân tích và thiết kế đường truyền,
phương thức truyền sóng thích hợp cho các hệ thống thông tin
 H thng nhúng và tính toán kh cu hình: tập trung vào các chủ đề nghiên cứu
liên quan đến thiết kế các hệ thống vi mạch khả trình và ứng dụng; Các ứng dụng
của hệ thống nhúng trong viễn thông; Xây dựng và đăng ký sở hữu trí tuệ các bộ
thư viện phần cứng phục vụ cho việc thiết kế các thiết bị di động như công nghệ
CDMA, OFDM, .v.v.; Thiết kế các vi mạch mã hóa, giải mã video (MPEG4,
H.264), mã hóa, giải mã ảnh (JPEG) và giải mã, mã hóa âm thanh (MP3, AAC);
Các ứng dụng của hệ thống nhúng trong các hệ điều khiển và điện tử ứng dụng.
 X tập trung vào các chủ đề nghiên cứu liên quan đến xử lý tín hiệu
trong viễn thông, trong đa phương tiện, trong y sinh như: Lý thuyết xử lý tín hiệu
phi tuyến và các ứng dụng trong viễn thông, bảo mật; Thông tin hỗn loạn, laser hỗn
loạn, mạch hỗn loạn và mã hóa biểu tượng; Mạng thần kinh tế bào và các ứng dụng;
Xử lý ảnh và ứng dụng của xử lý ảnh trong y tế, giao thông vận tải, bảo mật, .v.v.
  thiết kế các IC số và tương tự, phát triển các công cụ kiểm tra vi
mạch (verification), IC cao tần (RFIC) và RFID.
1.2 Phòng thí nghiệm Hệ thống nhúng và Tính toán khả cấu trình (ESRC
Lab).
Đơn vị thuộc trung tâm nghiên cứu và phát triển viện Điện tử Viễn thông, Đại
học Bách Khoa Hà Nội.
Địa chỉ: Phòng 618, thư viện Tạ Quang Bửu, ĐHBKHN, số 1 Đại Cồ Việt, Hai
Bà Trưng Hà nội.
Cơ cấu tổ chức:
 Chủ nhiệm phòng Lab: PGS - TS. Phạm Ngọc Nam - Phó Viện
trưởng Viện Điện tử, Phó trưởng bộ môn Điện tử và Kỹ thuật máy tính -
Viễn thông, trường Đại học Bách khoa Hà Nội.
 Nghiên cứu sinh nghiên cứu: 3.
 Số lượng sinh viên nghiên cứu và học tập: 50
Hướng nghiên cứu:

 Thiết kế hệ thống nhúng.
 Tính toán cấu hình lại.
 Thực hiện và tối ưu các thuật toán xử lý tín hiệu trên FPGA.
Các đề tài đang thực hiện:
 Broadcom
 HTTP streaming
 Network on Chip
 Open flow
 Camera giao thông



Chương 2. Nội dung thực tập
2.1 Các khái niệm cơ bản
2.1.1 Hệ thống nhúng
Hệ thống nhúng (Embedded system) là một thuật ngữ để chỉ một hệ thống có
khả năng tự trị được nhúng vào trong một môi trường hay một hệ thống mẹ. Đó là các
hệ thống tích hợp cả phần cứng và phần mềm phục vụ các bài toán chuyên dụng trong
nhiều lĩnh vực công nghiệp, tự động hoá điều khiển, quan trắc và truyền tin. Đặc điểm
của các hệ thống nhúng là hoạt động ổn định và có tính năng tự động hoá cao.
Còn theo định nghĩa của IEEE thì hệ thống nhúng là một hệ tính toán nằm trong
sản phẩm, tạo thành một phần của hệ thống lớn hơn và thực hiện một số chức năng của
hệ thống.
Nói một cách đơn giản khi một hệ tính toán (có thể là PC, IPC, PLC, vi xử lý, vi
hệ thống, DSP vv…) được nhúng vào trong một sản phẩm hay một hệ thống một cách
hữu cơ và thực hiện một số chức năng cụ thể của hệ thống thì ta gọi đó là một hệ thống
nhúng. Ví dụ quanh ta có rất nhiều sản phẩm nhúng như lò vi sóng, nồi cơm điện, điều
hoà, điện thoại di động, ô tô, máy bay, tàu thuỷ, các đầu đo cơ cấu chấp hành thông
minh vv. Ta có thể thấy hiện nay hệ thống nhúng có mặt ở mọi lúc mọi nơi trong cuộc
sống của chúng ta.

Hệ thống nhúng thường có một số đặc điểm chung như sau:
 Các hệ thống nhúng được thiết kế để thực hiện một số nhiệm vụ chuyên
dụng chứ không phải đóng vai trò là các hệ thống máy tính đa chức năng. Một số hệ
thống đòi hỏi ràng buộc về tính hoạt động thời gian thực để đảm bảo độ an toàn và tính
ứng dụng; một số hệ thống không đòi hỏi hoặc ràng buộc chặt chẽ, cho phép đơn giản
hóa hệ thống phần cứng để giảm thiểu chi phí sản xuất.
 Một hệ thống nhúng thường không phải là một khối riêng biệt mà là một
hệ thống phức tạp nằm trong thiết bị mà nó điều khiển.
 Phần mềm được viết cho các hệ thống nhúng được gọi là firmware và
được lưu trữ trong các chip bộ nhớ ROM hoặc bộ nhớ flash chứ không phải là trong
một ổ đĩa. Phần mềm thường chạy với số tài nguyên phần cứng hạn chế: không có bàn
phím, màn hình hoặc có nhưng với kích thước nhỏ, dung lượng bộ nhớ thấp Sau đây, ta
sẽ đi sâu, xem xét cụ thể đặc điểm của các thành phần của hệ thống nhúng.
Hệ thống nhúng giao tiếp với bên ngoài thông qua các thiết bị ngoại vi, ví dụ
như:
 Serial Communication Interfaces (SCI): RS-232, RS-422, RS-485
 Synchronous Serial Communication Interface: I2C, JTAG, SPI, SSC và
ESSI
 Universal Serial Bus (USB)
 Networks: Controller Area Network, LonWorks
 Bộ định thời: PLL(s), Capture/Compare và Time Processing Units
 Discrete IO: General Purpose Input/Output (GPIO)
2.1.2 Công nghệ FPGA
Field-programmable gate array (FPGA) là vi mạch dùng cấu trúc mảng phần tử
logic mà người dùng có thể lập trình được. Vi mạch FPGA được cấu thành từ các bộ
phận:
 Các khối logic cơ bản lập trình được (logic block)
 Hệ thống mạch liên kết lập trình được
 Khối vào/ra (IO Pads)
 Phần tử thiết kế sẵn khác như DSP slide, RAM, ROM, nhân vi xử lý

FPGA có thể tái cấu trúc lại khi đang sử dụng, công đoạn thiết kế đơn
giản do vậy chi phí giảm, rút ngắn thời gian đưa sản phẩm vào sử dụng.
Kiến trúc của FPGA cho phép nó có khả năng chứa khối lượng lớn cổng logic
so với các vi mạch bán dẫn lập trình được có trước nó và phát huy tối đa khả năng lập
trình của các phần tử logic và hệ thống mạch kết nối.
Ngoài khả năng tái cấu trúc vi mạch toàn cục, một số FPGA hiện đại còn hỗ trợ
tái cấu trúc cục bộ, tức là khả năng tái cấu trúc một bộ phận riêng lẻ trong khi vẫn đảm
bảo hoạt động bình thường cho các bộ phận khác.
Thiết kế hay lập trình cho FPGA được thực hiện chủ yếu bằng các ngôn ngữ mô
tả phần cứng HDL như VHDL, Veriloga, AHDL. Các hãng sản xuất FPGA lớn như
Xilinx, Altera thường cung cấp các gói phần mềm và thiết bị phụ trợ cho quá trình thiết
kế.
2.1.3 Phần cứng có khả năng cấu hình
Phần cứng cấu hình được là nhóm các mạch tích hợp được biết đến với cái tên
mảng các cổng lập trình được FPGA. Các linh kiện này cho phép người thiết kế cấu
hình nó chỉ trong vài giây, và mỗi FPGA có thể thiết kế để thực hiện các chức năng
hoàn toàn khác nhau.
Số lần cấu hình lại của FPGA cũng là không giới hạn, do đó có thể nghiên cứu,
phát triển và ứng dụng hệ thống ngay trên chính chip đó. Linh kiện FPGA cho phép
cấu hình lại để thay đổi chức năng logic trong khi vẫn đang nằm trong hệ thống. Khả
năng cho phép cấu hình lại chức năng logic có thể ứng dụng trong nhiều kiểu hệ thống
để cài đặt hệ thống tự khắc phục lỗi, tạo hệ thống có thể được cấu hình cho nhiều môi
trường hoạt động, hoặc cài đặt thành phần cứng đa mục đích cho các ứng dụng khác
nhau.
Sử dụng FPGA làm cho dễ thiết kế và kiểm tra phần cứng cũng như khả năng
nhanh chóng tung sản phẩm ra thị trường. Bên cạnh thời gian để thiết kế và phát triển
ngắn hơn, linh kiện FPGA còn cho phép khả năng chế tạo các bảng mạch mẫu cũng
như các giải pháp giá rẻ.
2.1.4 Hệ thống nhúng trên các KIT phát triển của Alteral.
Altera cung cấp một bộ công cụ giúp người dùng có thể xây dựng được một hệ

thống nhúng hoàn chỉnh.
 Phần mềm Quartus: tổng hợp các thiết kế phần cứng (dưới dạng các file
dùng ngôn ngữ phần cứng để mô tả) thành các bit stream. Phần mềm có
chức năng load file bit stream này xuống, cấu hình lên các dòng chip trên
KIT phát triển.


Hình 2.1.4.1
Quartus II là công cụ phần mềm phát triển của hãng Altera, cung cấp
môi trường thiết kế toàn diện cho các thiết kế SOPC (hệ thống trên 1 chip
khả trình - system on a programmable chip). Đây là phần mềm đóng gói
tích hợp đầy đủ phục vụ cho thiết kế logic với các linh kiện logic khả trình
PLD của Altera, gồm các dòng APEX, Cyclone, FLEX, MAX, Stratix
Quartus II cho phép làm việc với nhiều file ở cùng thời điểm, soạn
thảo file thiết kế trong khi vẫn có thể biên dịch hay chạy mô phỏng các dự án
khác. Công cụ biên dịch Quartus II nằm ở trung tâm hệ thống, cung cấp quy
trình thiết kế mạnh cho phép tùy biến để đạt được thiết kế tối ưu trong dự
án. Công cụ định vị lỗi tự động và các bản tin cảnh báo khiến việc phát hiện
và sửa lỗi trở nên đơn giản hơn.



 Công cụ SOPC Building (được tích hợp trên Quartus): Giúp người dùng
có thể xây dựng được một hệ thống hoàn chỉnh. Bao gồm vi xử lí Nios II,
các khối giao tiếp ngoại vi.
Về giao diện của phần mềm:


Hình 2.1.4.2 ol SOPC
Để sử dụng được công cụ, ta có thể thực hiện các bước sau:

- Mở chương trình QUATUS II File>New Project Wizard… đặt tên
đường dẫn, tên project. Sau đó nhấn Next.
- Thêm các file cần thiết vào project (nếu có), sau đó nhấn Next.
- Chọn lựa thiết bị FPGA cần thiết. trong trường hợp là kit DE1 thì mã
hiệu là EP2C20F484C7 (nếu dùng KIT DE2 thì mã hiệu của FPGA là
EP2C35F672C6), sau đó bấm next.
Khi giao diện hiện ra, người sử dụng có thể xây dựng hệ thống theo ý
muốn. Các nhóm module khác nhau được hiển thị phía trái màn hình.
Ngoài ra, còn có thể thêm các module theo tự xây dựng của người dùng.



 Công cụ Nios II Software Building: Sau khi sử dụng SOPC Building, ta
đã có một hệ thống phần cứng hoàn chỉnh, NIOS II giúp người dùng có
thể viết ứng dụng cho nền tảng phần cứng đã được xây dựng và nạp nó
lên bộ vi xử lí Nios II đã được cấu hình. NIOS 2 IDE (NIOS 2 Integrated
development environment) cung cấp môi trường phát triển ứng dụng cho
các hệ thống sử dụng nhân vi xử lí NIOS 2. Với một máy tính chạy NIOS
2 EDS, một con chip FPGA của Altera, cáp kết nối JTAG, ta có thể phát
triển phần mềm bất kì có thể nạp xuống và chạy trên con chip NIOS 2 đã
được cấu hình trên chip FPGA đó.
Giao diện làm việc của phần mềm tương đối đơn giản:

Hình 2.1.4.3 
Các bước để thiết kế một hệ thống nhúng trên KIT DE của Altera:
 Sử dụng Quartus để xây dựng một Project mới.
 Xây dựng một hệ thống hoàn chỉnh gồm các bộ xử lí trung tâm,
các khối giao tiếp với thiết bị ngoại vi bằng công cụ SOPC Builder.
 Tạo ra các file mô tả phần cứng bằng SOPC Builder, tổng hợp
chúng lại bằng Quartus

 Xây dựng phần mềm cho hệ thống (sử dụng bộ công cụ NIOS II
IDE), build phần mềm này và nạp xuống processor đã được tạo.
Như vậy, chúng ta đã có một hệ thống hoàn chỉnh.
2.2 Thiết kế hệ thống nhúng – Trò chơi Flappy Bird
2.2.1 Tổng quan hệ thống
Là một trò chơi được phát triển trên nền tảng hệ điều hành Android, người
chơi điều khiển đối tượng trên màn hình bằng cách sử dụng cảm ứng của smart
phone.


Hình 2.2.1.1 
Trên màn hình chơi xuất hiện 2 đối tượng, bird di chuyển theo hình parbol khi
được điều khiển di chuyển. Trong khi đó các ống nước (pipe) di chuyển theo chiều
ngang với một tốc độ nhất định. Người chơi sẽ ghi điểm nếu vượt qua một ổng nước,
điểm được hiển thị lên màn hình chơi. Nếu va chạm với ổng nước hoặc để chim (bird)
rơi xuống mặt đất, trò chơi dừng lại và hiển thị điểm của người chơi.
Nguyên mẫu của trò chơi chạy trên hệ điều hành Android, em cùng nhóm
(nhóm 3 người) đã chuyển qua thiết kế trò chơi trên nền tảng một hệ thống nhúng, sử
dụng các ngôn ngữ mô tả phần cứng như Verilog, và ngôn ngữ lập trình phần mềm như
C để xử lí được bài toán. Hệ thống bao gồm bộ điều khiển trung tâm và các thiết bị
ngoại vi, chi tiết các thành phần trong hệ thống như sau:
 KIT DE1 ca Alteral: Đây là bộ xử lí trung tâm của hệ thống, các thiết
kế về phần cứng cũng như phần mềm sẽ được thực hiện trên KIT này.
DE1 là KIT phát triển được cung cấp bởi hang Altera. DE1 được dùng cho việc
học tập, nghiên cứu và phát triển các sản phẩm lien quan đến FPGA. Các thông số cơ
bản của kit DE1 như sau:
o Bộ nhớ:
 8MB SDRAM
 512KB SRAM
 4MB Flash

o Âm thanh: Hỗ trợ bộ codec 24 bit
o Giao diện tương tác
 nút bấm (KEY)
 10 Led đỏ và 8 Led xanh
 led bảy thanh
 10 công tắc chuyển mạch (SWITCH)
o Kết nối ngoại vi:
 VGA, RS-232, PS2
 2 cổng mở rộng 40 chân
 SD/MMC
o Nguồn: từ cáp USB hoặc thông qua cáp nguồn riêng
 Màn hình VGA (VGA Screen): là màn hình có chân giao tiếp VGA
RGB, hiển thị toàn bộ màn hình chơi, giao diện người chơi. Màn hình sẽ là nơi hiện ra
các đối tượng của trò chơi: con chim, ống nước, hình nền, điểm, thời gian chơi.


Hình 2.2.1.2 

 Bàn phím PS2 (PS2 Keyboard): bàn phím với giao tiếp PS2 nhận tín
hiệu điều khiển của người chơi.

Hình 2.2.1.3 
 Loa (Speaker): Âm thanh cho trò chơi.

Hình 2.2.1.4 
2.2.2 Phân tích
Như vậy, từ nhận định tổng quan về các yêu cầu của hệ thống, các thiết
bị ngoại vi được sử dụng. Nhóm đã phân tích và đưa ra các phương án khả thi và tối
ưu nhất để thực hiện hệ thống.
Về các thiết bị ngoại vi, màn hình sẽ trực tiếp sử dụng kĩ thuật quét, khối

VGA
Controller sẽ đảm nhận nhiệm vụ này. Các tín hiệu quét ngang, quét dọc
(vertical and horizontal) cũng như tín hiệu màu RGB sẽ được khối này trực tiếp kết
nối với màn hình, điều khiển hiện thị màn hình. Khối VGA Controller sẽ nhận tín
hiệu điều khiển từ SOPC Sytems (Nơi có phần nhúng mềm để thực hiện các chức
năng của hệ thống).
Nhận thấy việc sử dụng phần mềm để tính toán các tọa độ của các vật thể được
hiển thị trên màn hình sẽ linh hoạt hơn rất nhiều so với việc sử dụng thuần túy phần
cứng để tính toán, nhóm đi đến quyết định tất cả các vật được hiển thị trên màn hình sẽ
được tính toán bằng chương trình C được nhúng xuống NIOS II Processor.
Bàn phím PS2 sẽ được giao tiếp thông qua một khối PS2 Controller trong
SOPC System. Khối này sẽ bắt sự kiện, nhận diện phím được bấm và gửi tín hiệu
nhận được đến bộ điều khiển trung tâm.
Về phần âm thanh của hệ thống, để tạo thêm phần sinh động và hấp dẫn
cho trò chơi, nhóm quyết định đi xây dựng thêm các khối phục vụ phát âm thanh
của trò chơi qua loa (speaker). Trên KIT DE1 có tích hợp chip wolfson WM 8731
xử lí âm thanh. Các file âm thanh có dung lượng khá lớn (so với dung lượng bộ nhớ
trong của KIT) nên cần tìm ra một giải pháp thích hợp cho việc lưu trữ các file âm
thanh. Nhóm đi đến quyết định sử dụng SD Card để lưu trữ các file âm thanh dưới
dạng .wav. SD Card linh hoạt trong việc ghi các file âm thanh.
Như vậy, hệ thống sẽ có các khối đảm nhận các chức năng khác nhau, bộ
xử lí trung tâm, bộ giao tiếp với các thiết bị ngoại vi. Sơ đồ khối của hệ thống sẽ
giúp chúng ta hình dung rõ hơn về hệ thống được thiết kế.

Hình 2.2.2.1 
Hệ thống với bộ điều khiển và xử lí trung tâm là Nios II Processor, nhận tín hiệu
từ các khối khác và thực hiện tính toán, gửi tín hiệu điều khiển phản hồi. Sử linh hoạt
giữa phần cứng và phần mềm được thể hiện trong hệ thống.
2.2.3 Thiết kế
2.2.3.1 Khối điều khiển VGA.

Ở hình bên dưới, sơ đồ khối của khối điều khiển giao tiếp VGA. Khối VGA
Synchronous có chức năng tạo ra các tín hiệu quét ngang (horizontal scan) và quét dọc
(virtical scan) ra màn hình VGA, đồng thời tạo ra tín hiệu pixel_x, pixel_y thể hiện
được tọa độ của pixel đang được quét trên màn hình. Tín hiệu này quan trọng cho viêc
vẽ một hình lên màn hình. Tần số quét của khối này là 60Hz, với màn hình phân giải
640*480 pixel.
Khối Image Processing là khối có chức năng xử lí hình ảnh và đưa hình ảnh ra
màn hình. Khối này nhận tín hiệu tọa độ pixel đang được quét từ khối VGA
Synchronous, tương ứng với mỗi tọa độ một bộ tín hiệu màu RGB (12 bit, 4 bit cho
mỗi màu) sẽ được đưa ra màn hình. Như vậy, tương ứng với mỗi pixel sẽ có một màu
được vẽ lên, tùy thuộc vào khối này đưa ra màu gì thì hình vẽ sẽ tương ứng với màu đó
được hiện lên.
Để có thể có dữ liệu màu cho khối IP hiển thị ra màn hình, nhiều hình phức tạp
cần được lưu trữ dữ liệu trước trong ROM. Dữ liệu này là 12 bit màu tương ứng với
12bit màu đã được nhắc đến ở phần trên, khối IP sẽ đọc 12 bit màu này và đưa ra màn
hình.
Như vậy, vấn đề vẽ được một hình lên màn hình VGA có thể hiểu đơn giản như
là khối IP nhận dữ liệu là tọa độ của các vật thể, tính toán và đồng bộ với tín hiệu
pixel_x, pixel_y có thể hiển thị lên màn hình.
Khối IP có chức năng nhận thông tin điều khiển từ phần mềm xử lí, bao gồm
các tín hiệu sau:
 Vị trí của 4 cặp cọc chướng ngại vật
 Vị trí của chim
 Giá trị điểm hiện tại
Sau số khối IP sẽ đọc các bit dữ liệu ảnh được lưu trong ROM của hệ thống để
đưa hình ảnh ra màn hình hiển thị.

Hình 2.2.3.1  Controller

Hình ảnh được lưu trong ROM trên kit DE1 dưới dạng ảnh bitmap (BMP). Mỗi

điểm ảnh được mã hóa bởi 12 bit màu: 4 bit R (red), 4 bit G (Green) và 4 bit B (Blue).
Được lưu trữ dưới dạng các từ 12 bit cách nhau bằng một dấu cách. Có thể nhận được
file này bằng cách sử dụng các phần mềm phân tích ảnh. Ảnh được phân tích thành
một tập hợp các bit màu
Có 2 phương án để thiết kế khối GPU, phương án thứ nhất là sử dụng các
module có sẵn trong SOPC Tool và viết phần mềm điều khiển cho module này.
Phương án thứ 2 là module hoàn toàn được xây dựng trên phần cứng bằng ngôn ngữ
verilog hoặc VHDL. Trong hệ thống của nhóm em, do giới hạn tốc độ của Kit DE1 nên
khối GPU được thiết kế thủ công và hoàn toàn bằng Verilog để tối ưu phân cứng.


2.2.3.2 Thuật toán di chuyển, tính toán va chạm, tính điểm người chơi.


Hình 2.2.3.2 

a. Thuật toán di chuyển:
Chuyển động trên màn hình chơi có thể được chia làm 2 phần chính:
 Chuyển động theo chiều ngang của “Ống nước” (pipe) với một vận tốc
cố đinh.
 Chuyển động lên xuống của “Con chim” (bird) với vận tốc thay đổi theo
một hàm bậc hai.
Như vây, khi kết hợp 2 chuyển động này lại với nhau, gắn hệ quy chiếu với ống
nước (các ống nước chuyển động cùng một vận tốc) thì ta có được chuyển động theo
hình parabol của Con chim (tạo cảm giác con chim đang nhảy qua các ống nước).
Phương trình chuyển động theo hai chiều x và y có dạng:


X = a1 + b1*t;
Y = a2 + b2*t + c2*t^2;


Trước tiên ta xét đến chuyển động của ống nước, vị trí và hình dạng của ống
nước được quyết định bởi hai giá trị pipe_pixel_x, pipe_pixel_y. Chuyển động của ống
nước là chuyển động đều, theo chiều từ phải sang trái theo trục x, như vậy khi thay đổi
giá trị pipe_pixel_x sẽ làm ống nước chuyển động. Được điều khiển bởi một hàm ngắt
30Hz, như vậy cứ 1/30 giây, ống nước sẽ được di chuyển sang bên trái 1 pixel. Tức là
tọa độ của ống nước được giảm đi một đơn vị mỗi khi gọi hàm ngắt.

void timer0_ISR (unsigned int id)
{

Pipe1_pixel_x ;

}

Về hình dạng của ống nước (độ cao), giá trị pipe_pixel_y sẽ quyết định điều
này. Hệ số này được lưu vào một mảng cố định, và được lấy ra khi cần thiết. Như vậy,
chuyển động của ống nước được thực hiện một cách đơn giản bằng cách lại thay đổi
tọa độ một các hợp lí, hiệu ứng chuyển động đều sẽ được hiển thị lên màn hình.
Chuyển động của “Con chim” là một chuyển động phức tạp hơn. Khi nhận được
một tín hiệu điều khiển từ bàn phím, “Con chim” sẽ thực hiện một chuyển động có
dạng hàm bậc hai theo chiều y (tọa độ chiều x được giữ cố định, khác với ống nước,
chim sẽ chỉ chuyển động theo hướng trục y).
Trước tiên, một mảng jump[40] chứa các giá trị của một hàm bậc hai được tạo
và lưu cố định, đây chính là tọa độ y cho “Con chim” trong quá trình chuyển động.
for(t=0; t<JUMP_SIZE; t++)
{
jump[t] = 0 + 20 *(t/5.0) - 2.5 *t*t/(25.0);
}


Lúc này tọa độ của “Con chim” sẽ được tính theo công thức sau:

bird_y =jump_y - jump[t];

trong đó jump_y là tọa độ hiện tại của “Con chim” Tọa độ này sẽ được cập nhật
khi có tín hiệu từ bàn phím.
Như vậy, về cơ bản, tọa độ của các thành phần trên màn hình đã được tính ra.
Bộ tọa độ này sẽ được cập nhật sang bộ VGA Controller xử lí và đưa ra màn hình.
Các tín hiệu về tọa độ của chim, tọa độ của ống nước cũng như tín hiệu điểm và
thời gian sẽ được đưa xuống phần cứng thông qua các thanh ghi bằng các câu lệnh.
IOWR(BIRD_Y_BASE, 0, bird_y);
IOWR(PIPE_1_X_BASE, 0, pipe_1_x);
IOWR(PIPE_2_X_BASE, 0, pipe_2_x);
IOWR(PIPE_3_X_BASE, 0, pipe_3_x);
IOWR(PIPE_4_X_BASE, 0, pipe_4_x);
IOWR(PIPE_1_Y_BASE, 0, pipe_1_y);
IOWR(PIPE_2_Y_BASE, 0, pipe_2_y);
IOWR(PIPE_3_Y_BASE, 0, pipe_3_y);
IOWR(PIPE_4_Y_BASE, 0, pipe_4_y);
(IOWR() – Input output writing – là một macro cơ bản trong thư viện của NIOS
II dùng để giao tiếp với phần cứng, ghi dữ liệu lênh một vùng nhớ có địa chỉ nhất định,
ngoài ra có thêm macro IORD() – đọc dữ liệu từ một vùng nhớ nhất định)
Tín hiệu này sẽ được đưa đến khối xử lí ảnh (qua các input output của NIOS II
processor) như đã được nhắc đến ở phần trước.

b. Tính toán va cham và tính điểm.
Vấn đề di chuyển của “Con chim” và “Ống nước” đã được tính toán, hai đối
tượng đã di chuyển được độc lập với nhau. Để có thể chơi được, cần tính toán được va
chạm của con chim với ống nước, nếu va chạm thì chuyển sang màn hình game over,
khi con chim bay qua được một ống nước, điểm sẽ được ghi cho người chơi.

Va chạm và tính điểm hoàn toàn được xây dựng trong phần mềm của hệ nhúng.

Hình 2.2.3.3 
Flow chart diển tả thuật toán tính toán va chạm và tính điểm cho người chơi.
(Di chuyển của hai vật thể trên thực tế phức tạp hơn, nhưng để diễn đạt một
cách dễ hiểu nên em chon phương án đơn giản nhất)
c. Khối xử lí hiện thị kí tự lên màn hình VGA:
Để hiển thị được text lên màn hình VGA, có 2 kĩ thuật cơ bản:
 Sử dụng hình ảnh (image) có sẵn.
Mỗi kí tự sẽ được xem như là một ảnh, mỗi khi cần hiển thị một cụm từ lên màn
hình, hình ảnh của các kí tự sẽ được đọc trong bộ nhớ và đưa lên màn hình.
Ưu điểm của phương pháp này là kí tự đẹp, nhìn bắt mắt hơn các phương pháp
khác (do mỗi kí tự là một ảnh nên dễ nhìn hơn).
Nhược điểm, chính do vấn đề mỗi một kí tự được đại diện bởi một ảnh nên càng
nhiều kí tự khác nhau thì càng cần đến nhiều ảnh khác nhau, vấn đề này ảnh hưởng lớn
đến dung lượng bộ nhớ có sẵn trên KIT.
 Sử dụng một bộ ROM có sẵn được lưu trong bộ nhớ KIT:
Ví dụ như kí tự H sẽ được lưu thành một dòng bit có dạng như

01100110
01100110
01100110
01111110
01100110
01100110
01100110
Hình 2.2.3.4 

Mã bit tương ứng của một kí tự sẽ được đọc ra màn hình và hiển thị.
Ưu điểm của phương pháp này là tiết kiệm bộ nhớ, linh động trong việc sử dụng

kí tự (file Rom chưa tất cả các kí tự trong bảng mã ASCII), tiết kiệm bộ nhớ trong của
KIT.
Nhược điểm của phương pháp này là kí tự được hiển thị ra màn hình thô, trong
nhiều trường hợp làm giảm sự hấp dẫn của game đang thiết kế.

Do dung lượng của KIT DE1 là có hạn nên em đã chọn phương án thứ 2 để có
thể hiển thị được kí tự trên màn hình. Trong đề tài này, kí tự sẽ được sử dụng để hiển
thị điểm và thời gian chơi của người chơi. Để có thể thực hiện được phương án này,
cần phải thiết kế một khối Character Controller, khối này có nhiệm vụ nhận tín hiệu từ
SOPC System và điều khiển kí tự hiện ra trên màn hình.

×