Thiết kế thiết bị game “Đánh bóng bàn” trên FPGA

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

pdf6 trang | Chia sẻ: thanhle95 | Lượt xem: 717 | Lượt tải: 1download
Bạn đang xem nội dung tài liệu Thiết kế thiết bị game “Đánh bóng bàn” trên FPGA, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
ISSN 2354-0575 Journal of Science and Technology70 Khoa học & Công nghệ - Số 15/Tháng 9 - 2017 THIẾ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 ISSN 2354-0575 Khoa học & Công nghệ - Số 15/Tháng 9 - 2017 Journal of Science and Technology 71 dụ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. ISSN 2354-0575 Journal of Science and Technology72 Khoa học & Công nghệ - Số 15/Tháng 9 - 2017 Hì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 ISSN 2354-0575 Khoa học & Công nghệ - Số 15/Tháng 9 - 2017 Journal of Science and Technology 73 Hì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 ISSN 2354-0575 Journal of Science and Technology74 Khoa học & Công nghệ - Số 15/Tháng 9 - 2017 *. 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 ISSN 2354-0575 Khoa học & Công nghệ - Số 15/Tháng 9 - 2017 Journal of Science and Technology 75 Bố 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]. 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.