Bài viết trên cơ sở thực hiện hệ thống nhúng trên nền FPGA, nghiên cứu này thực hiện thiết kế phần cứng thực hiện trò chơi đánh bóng bàn (Game-PingPong) đơn giản trên chip Xilinx FPGA bằng giải pháp lập trình trên ngôn ngữ chuyên dùng để thiết kế phần cứng, đó là ngôn ngữ VHDL (Very High Speed Hardware Desription Luaguage).
Trang 1THIẾT KẾ THIẾT BỊ GAME “ĐÁNH BÓNG BÀN” TRÊN FPGA
Hoàng Thị Thanh Ngần1, 2, Hồ Khánh Lâm2
1 Trường Phổ thông Dân tộc nội trú THPT huyện Điện Biên, tỉnh Điện Biên
2 Trường Đại học Sư phạm Kỹ thuật Hưng Yên
Ngày tòa soạn nhận được bài báo: 10/07/2017 Ngày phản biện đánh giá và sửa chữa: 10/08/2017 Ngày bài báo được duyệt đăng: 15/08/2017
Tóm tắt:
Trong thời đại ngày nay, hệ thống nhúng đang ngày càng phát triển và chiếm một vai trò quan trọng trong cuộc sống Các thiết bị nhúng ngày nay đang phát triển theo hướng “thông minh”, một xu hướng tất yếu của thời đại Hệ thống nhúng có nhiều tính năng nổi trội như thông minh, nhỏ gọn, giá thành thấp, ít tiêu hao năng lượng, hoạt động ổn định và có nhiều ứng dụng trong điện tử dân dụng, hệ thống điều khiển,
tự động hóa, robot, v.v…
Thiết kế hệ nhúng trên FPGA (Field Programmable Gate Array) thuận tiện cho các nghiên cứu thiết
kế thử nghiệm, cho các nghiên cứu khoa học ít tốn kém về kinh phí và thời gian Do đó, trên cơ sở thực hiện
hệ thống nhúng trên nền FPGA, nghiên cứu này thực hiện thiết kế phần cứng thực hiện trò chơi đánh bóng bàn (Game-PingPong) đơn giản trên chip Xilinx FPGA bằng giải pháp lập trình trên ngôn ngữ chuyên dùng để thiết kế phần cứng, đó là ngôn ngữ VHDL (Very High Speed Hardware Desription Luaguage).
Từ khóa: FPGA, VHDL, Game-PingPong.
1 ĐẶT VẤN ĐỀ
Trong những năm gần đây, ở Việt Nam nhiều
trường Đại học, phòng thí nghiệm cũng đã đưa vào
nghiên cứu và giảng dạy ở bậc đại học và cao học
các hệ nhúng trên FPGA bởi vì FPGA cho phép
thiết kế các hệ thống số và cả các vi xử lý bằng kỹ
thuật lập trình với ngôn ngữ mô phỏng phần cứng
Đặc biết các thiết kế trên FPGA có thể cấu hình lại
được nhờ thay đổi chương trình thiết kế Tuy nhiên,
các tài liệu, các chương trình đào tạo và các công
trình nghiên cứu hệ thống nhúng trên FPGA tại các
trường vẫn còn khá ít nên việc nghiên cứu và phát
triển lĩnh vực này vẫn còn gặp khó khăn
Trên thực tế, ở Trường Đại học Cornell (Hoa
Kỳ) đã có một nghiên cứu được thực hiện bởi hai
sinh viên Hanting Lu và Kedari Elety trên board
Al-tera DE2 với tên nghiên cứu cụ thể là “Hand
track-ing pong” (trò chơi bóng bàn dựa vào theo dõi bàn
tay); Nghiên cứu trên đã sử dụng ngôn ngữ Verilog
HDL để thiết kế phần cứng của hệ thống và áp dụng
giải pháp nhận dạng màu da để nhận dạng và theo
dõi sự di chuyển của bàn tay Ở Việt Nam, đã có
một nghiên cứu được thực hiện ở trường Đại học
Cần Thơ bởi hai sinh viên Trần Thanh Sang và Trần
Trung Hiếu trên board DE2-115 Development and
Education do hãng Terasic sản xuất với tên nghiên
cứu “Thiết kế hệ nhúng mô phỏng trò chơi đánh
bóng bàn”; Nghiên cứu trên thực hiện thiết kế hệ
thống nhúng bằng các IP core sử dụng công cụ
SOPC Builder kết hợp với các phần mềm như
Quar-tus II, Nios II Software Build Tools for Eclipse, để
lập trình cho hệ thống thông qua ngôn ngữ C tạo hệ
thống dựa trên các core được nhà sản xuất cung cấp sẵn Hệ thống sử dụng camera 5MP TRDB_D5M
để nhận diện bàn tay điều khiển trò chơi
Như vậy ở hai nghiên cứu trên thì hệ thống cần sử dụng đến các thiết bị như board Altera DE2, board DE2-115 Development and Education kết hợp với camera để nhận dạng và theo dõi bàn tay khi điều khiển trò chơi
Nghiên cứu này được thực hiện với ý tưởng tạo dựng một thiết bị trò chơi bằng một hệ thống nhúng trên FPGA sử dụng board Spartan 3E-500K kết hợp với thiết bị thông dụng hơn và giá thành thấp hơn đó là phương thức điều khiển bằng các phím trên bàn phím Đây là một vấn đề phức tạp bởi
để thiết kế được hệ thống thì người thiết kế vừa phải xây dựng kịch bản trò chơi phù hợp với thực tế vừa phải xây dựng một khối lượng chương trình nhiều
để thiết kế phần cứng trên FPGA với các giao diện màn hình (VGA), giao diện bàn phím (Keyboard) Mục đích của nghiên cứu này là để thiết kế phần cứng thực hiện trò chơi đánh bóng bàn đơn giản trên chip Xilinx FPGA bằng giải pháp lập trình trên ngôn ngữ chuyên dùng để thiết kế phần cứng,
đó là ngôn ngữ VHDL (Very High Speed Hard-ware Desription Luaguage) sử dụng board Spartan 3E-500K kết hợp với bàn phím cổng PS/2
Nhìn chung, nghiên cứu đã kế thừa và cải tiến được một số hạn chế của các nghiên cứu trước (màu sắc giao diện, độ tin cậy, độ chính xác, cách điều khiển trò chơi, ), sử dụng thiết bị thông dụng, giá thành các thiết bị trong thiết kế thấp có tính cạnh tranh cao Ngoài ra, nghiên cứu còn có ý nghĩa ứng
Trang 2dụng vào thực tiễn cuộc sống cũng như cho đào tạo
và các nghiên cứu khác
2 CƠ SỞ KHOA HỌC VÀ CƠ SỞ THỰC TIỄN
2.1 Cơ sở khoa học
Công nghệ vi mạch tích hợp chuyên dụng
ASIC (Application Specific Integrated Circuit) lập
trình được đã xuất hiện từ lâu dưới dạng các thiết
bị logic lập trình được PLD (Programmable Logic
Device) nhưng vai trò của các dạng ASIC này là
không nhiều vì số lượng cổng trên vi mạch rất ít dẫn
tới chức năng của các PLD này cũng nghèo nàn và
thường chỉ sử dụng với những nhiệm vụ rất hạn chế
trong toàn hệ thống FPGA được thiết kế đầu tiên
bởi Ross Freeman, người sáng lập công ty Xilinx
vào năm 1984 Kể từ đó đến nay, các công ty sản
xuất PLD hàng đầu đã đẩy mạnh quá trình nghiên
cứu về công nghệ vi mạch tích hợp mảng cổng lập
trình được theo trường FPGA (Field Programmable
Gate Array) và nhanh chóng cho ra các thế hệ FPGA
với số lượng cổng và tốc độ ngày càng cao Các
FPGA hiện nay, có số lượng cổng logic lớn để có
thể thay thế cả một hệ thống bao gồm lõi CPU, Bộ
điều khiển bộ nhớ (Memory Controller), các ngoại
vi như SPI, Timer, I2C, GPIO, PWM, Video/Audio
Controller, tương đương với các hệ thống trên chip
SoC (System on Chip) hiện đại
2.2 Cơ sở thực tiễn
- FPGA ngày càng được sử dụng nhiều trong
đào tạo ở các bậc đại học, cao học và cho các nghiên cứu khoa học kỹ thuật hiện nay trên thế giới và Việt Nam
- Thiết kế các hệ thống nhúng, các thiết bị điều khiển trên FPGA đang là một phương pháp thiết kế ít tốn kém được sử dụng nhiều trong thực
tế hiện nay
3 THIẾT KẾ HỆ THỐNG NHÚNG VÀ THIẾT
BỊ GAME “ĐÁNH BÓNG BÀN”
3.1 Tổng quan hệ thống
Hệ thống nhúng trong nghiên cứu này sử dụng bảng phát triển Spartan 3E-500K với các ngoại vi chính bao gồm PC, Keyboard PS/2 và màn hình hiển thị như Hình 1
- PC (Personal Computer): Được sử dụng
để xây dựng hệ thống nhúng trên bộ công cụ phần mềm Xilinx ISE Design Suite 14.1 nối với bảng Spartan 3E-500K bằng cáp UART RS-232 DTE và cáp USB
- Bảng Spartan 3E-500K: Được sử dụng để xây dựng hệ thống nhúng cho phép giao tiếp với Keyboard và xử lý tín hiệu các phím điều khiển, hiển thị trò chơi trên màn hình VGA
- Màn hình máy tính: Được sử dụng để hiển thị trò chơi nối với bảng Spartan 3E-500K bằng cáp VGA
- Bàn phím máy tính có dây: Được sử dụng
để điều khiển trò chơi đã được thiết kế sẵn nối với bảng Spartan 3E-500K bằng cổng PS/2
Hình 1 Sơ đồ hệ thống thiết kế
3.2 Thiết kế hệ nhúng với lõi mềm vi xử lý Microblaze
Hệ nhúng có đơn vị xử lý trung tâm là vi xử
lý Microblaze với các giao tiếp ngoại vi không có
hệ điều hành nhưng sẽ được cài đặt một số chương
trình ứng dụng nhỏ mà khi thiết kế thiết bị cần lập trình đưa vào hệ nhúng như: kiểm tra bộ nhớ, kiểm tra các ngoại vi để thử nghiệm vận hành của Microblaze và các giao tiếp ngoại vi
Trang 3Hình 2 Sơ đồ khối của Lõi mềm vi xử lý Microblaze
Để thiết kế lõi mềm vi xử lý, ta thực hiện
trên phần mềm XPS 14.1 (Xilinx Platform Studio)
đã tích hợp trong bộ công cụ Xilinx ISE Design
Suite14.1
Khi cài đặt lựa chọn thiết kế chip Microblaze
với một nhân và cấu hình phần cứng với bộ nhớ:
DDR_SDRAM, Flash, Instruction
Cache, Data Cache, bộ đếm thời gian XPS_
Timer và các giao tiếp ngoại vi như Ethernet,
RS-232-DTE và RS-232-DCE với tốc độ dữ liệu 9600
bps và định dạng dữ liệu 8 bits (Ascii code) 1 stop bit,
Buttons_4Bits, LEDs_8Bits, DIP_Switches_4Bits
Hình 3 Sơ đồ thiết kế lõi mềm vi xử lý Microblaze
Trong thiết kế, các bước thực hiện tạo danh
sách thiết kế Generate Netlist, và tạo file cấu hình
Generate Bitstream “system.bit” là quan trọng
vì chúng sẽ tạo ra file cấu hình system.bit cho
Microblaze trên FPGA, hạt nhân của hệ nhúng
Hình 4 Các giao tiếp của lõi mềm vi xử lý Microblaze
Kết quả thực hiện trên phần mềm XPS 14.1 đã tạo ra file thiết kế phần cứng của hệ nhúng Microblaze Phải nạp các file thiết kế phần cứng này lên FPGA nhờ công cụ SDK14.1
Hình 5 Kết quả xuất thiết kế phần cứng của hệ
nhúng Microblaze
Trang 4Hình 6 Tải file cấu hình hệ nhúng Microblaze
lên FPGA
Thực hiện tạo, biên dịch và chạy các chương trình kiểm tra thiết bị ngoại vi, kiểm tra bộ nhớ bằng ngôn ngữ C trên hệ nhúng Kết quả chạy thành công các chương trình cho thấy hệ nhúng làm việc tốt với
bộ nhớ và các giao tiếp ngoại vi
3.3 Thiết kế thiết bị Game “Đánh bóng bàn” trên Xilinx FPGA
* Chương trình chính
Chương trình chính có nhiệm vụ thực hiện tạo giao diện và điều khiển trò chơi bằng cách gọi các chương trình con thực hiện các chức năng liên quan: hiển thị các giao diện và điều khiển trò chơi Hình 7 trình bày lưu đồ mô tả cách hoạt động của chương trình này
Hình 7 Lưu đồ chương trình chính điều khiển trò chơi
Trang 5* Chương trình con Đọc dữ liệu từ bàn phím
Hệ thống được thiết kế để nhận dữ liệu liên
tục từ các phím điều khiển Các tọa độ được ghi liên
tục lên một vùng nhớ của SRAM được chọn làm
bộ nhớ đệm Pixel Buffer ở vị trí ghi Dữ liệu từ các
phím được lưu tại vùng nhớ này để phục vụ cho các
công việc xử lý
* Chương trình con theo dõi sự di chuyển
của bóng và các thanh trượt
Để theo dõi tốt quá trình di chuyển của bóng
và hai thanh trượt trong một phạm vi nhất định,
chương trình sẽ thực hiện việc gán một cửa sổ có
kích thước 16x16 pixel tạo thành hình vuông cho hình dạng của quả bóng và hai cửa sổ có kích thước 20x64 pixel tạo thành một khối hình chữ nhật cho hai thanh trượt Để xác định vị trí của bóng và hai thanh trượt giúp cho việc theo dõi bóng và hai thanh trượt khi di chuyển sẽ dễ dàng hơn mà không ảnh hưởng đến tốc độ xử lý
3.4 Kết quả thử nghiệm
Hệ thống thiết kế thiết bị game hoạt động ổn định, sử dụng ít tài nguyên trên chip FPGA (xem Hình 8)
Hình 8 Tài nguyên sử dụng thiết kế thiết bị game
Hình 9 Bố trí của hệ thống trong thử nghiệm
Trang 6Bố trí hệ thống trong thử nghiệm được trình
bày ở Hình 9 Hệ thống hoạt động ổn định, trong
ứng dụng trò chơi được thiết kế thì sự di chuyển
của các phím đối với từng người chơi sẽ điều khiển
được thanh trượt tương ứng Giao diện trò chơi được
thiết kế đơn giản, màu sắc dễ nhìn kết hợp với các
giao tiếp trao đổi tạo hứng thú cho người chơi Một
đoạn video clip trình bày kết quả của nghiên cứu
có thể xem tại đường link https://drive.google.com/
open?id=0B-RKuSapprWkdndpeWpDN2huSkk
4 KẾT LUẬN
Bài viết đã trình bày quá trình thiết kế một
thiết bị điều khiển dựa vào mã của các phím trên
nền FPGA và đã được kiểm chứng thành công bởi thiết kế thiết bị trò chơi Game – Ping Pong trực quan sinh động Bằng một số thay đổi trong code chương trình thiết kế ta có thể thay đổi các phím điều khiển như mong muốn, thay đổi màu của các thành phần trên giao diện trò chơi, tốc độ của bóng
và thay đổi được tên của hai người chơi tương ứng, đối với các thay đổi khác nhau thì thiết kế đều hoạt động tốt và đạt các yêu cầu mong muốn Dựa trên kinh nghiệm thiết kế này có thể phát triển thiết kế các thiết bị trò chơi và điều khiển phúc tạp hơn, đáp ứng cho các ứng dụng điều khiển tương tác, thân thiện với người sử dụng
Tài liệu tham khảo
[1] Hồ Khánh Lâm, (2015), “Giáo trình Thiết kế hệ thống số trên FPGA bằng VHDL”, NXB Khoa
học và kỹ thuật, Hà Nội
[2] http://xemtailieu.com/tai-lieu/thuc-hien-he-thong-nhung-mo-phong-tro-choi-bong-ban-336928 html
[3] en.wikipedia.org/wiki/Field-programmable_gate_array
[4] Digilentinc.com, (2006), “Spartan-3E Starter Kit Board User Guide”, UG230 (v1.0) March 9.
[5] www.xilinx.com/support/download.html
[6] www.xilinx.com, “Microblaze Processor Reference Guide”, UG081(v9.0).
[7] Rod Jesman, Fernando Martinez Vallina, Jafar Saniie, “Microblaze Tutorial Creating a Simple Embedded System and Adding Custom Peripherals Using Xilinx EDK Software Tools”, Illinois
Institute Of Tecnology
DESIGN DEVICE GAME “PING-PONG” ON FPGA Abstract:
In today’s age, embedded system are growing and playing an important role in life Embedded devices are now developing in the direction of “smart”, an necessary trend of the times Embedded system have many outstanding features such as intelligent, compact, low cost, low power consumption, stable operation and many applications in civil electronics, control systems, automation, robot, etc
Design embedded system on FPGA (Field Programmable Gate Array) convinient for experiment design researches, for scientific researches less costly on expense and time Therefore, on the basis of implementing embedded system on FPGA background, this study implemented a hardware design implementing simple game pingpong on chip Xilinx FPGA by programming solution on specialized language for hardware design, that’s the language VHDL (Very High Speed Hardware Description Luaguage).
Keywords: FPGA, VHDL, Game-PingPong.