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 - Pdf 25

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:
……………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………

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

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)

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:

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ý

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:

 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

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.

đ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;

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.

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.

Trích đoạn Khối bàn phím PS2
Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status