Đăng ký Đăng nhập
Trang chủ Giáo dục - Đào tạo Cao đẳng - Đại học Xây dựng snake game trên nền tảng phần cứng de1 từ altera ...

Tài liệu Xây dựng snake game trên nền tảng phần cứng de1 từ altera

.DOCX
51
832
99

Mô tả:

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN TỬ VIỄN THÔNG PHÒNG THÍ NGHIỆM HỆ THỐNG NHÚNG VÀ VI MẠCH KHẢ TRÌNH Xây dựng snake game trên nền tảng phần cứng DE1 từ Altera BÁO CÁO Hà Nội, tháng 09 năm 2011 Snake Game Group3 – K53 Thông tin đề tài Tên viết tắt SGOFP Mã số (ID) 10/07/2011 Ngày kết thúc Nội dung đề tài Ngày bắt đầu 13/08/2011 Hướng dẫn đề tài Nhóm tác giả Phan Đình Long Trần Hữu Thụ Nguyễn Duy Phương Thông tin liên hệ Phan Đình Long Email: [email protected] Điện thoại:0973785654 Địa chỉ Web NA Thông tin tài liệu Tiêu đề tài liệu Báo cáo cuối cùng về snake game trên DE1 Ngày báo cáo 17/09/2011 Ngày nộp 16/09/2011 URL NA Snake game – Group3–K53 Tên tài liệu Page 2 Snake_final_report. docx Bảng nội dung 1 Lời cảm ơn.....................................................................................................................6 2 Tổng quan đề tài............................................................................................................6 2.1 Mục tiêu...................................................................................................................6 2.2 Nền tảng cơ bản.......................................................................................................6 2.3 Yêu cầu hệ thống.....................................................................................................6 2.3.1 Yêu cầu chức năng............................................................................................6 2.3.2 Yêu cầu phi chức năng......................................................................................6 2.4 2.5 3 Công việc cụ thể......................................................................................................6 Kết quả đạt được......................................................................................................7 Giới thiệu công nghệ sử dụng.......................................................................................7 3.1 Phần cứng.................................................................................................................7 3.1.1 3.2 Phần mềm Quartus II...............................................................................................9 3.2.1 4 Kit DE1.............................................................................................................7 Quy trình thiết kế FPGA với Quartus II...........................................................9 Sơ đồ khối hệ thống.....................................................................................................10 4.1 4.2 Màn hình................................................................................................................11 4.3 ROM.......................................................................................................................11 4.4 5 Bàn phím................................................................................................................11 Khối xử lý ( CU )...................................................................................................11 PS2 Keyboard..............................................................................................................12 5.1 Khối nhận dữ liệu PS2...........................................................................................12 5.1.1 Giao tiếp vật lý cổng PS2...............................................................................12 Snake game – Group3–K53 Page 3 5.1.2 5.2 Khối nhận dữ liệu PS2....................................................................................13 Mạch giao tiếp với PS2 Keyboard........................................................................15 5.2.1 5.2.2 6 Tổng quan về mã hóa bàn phím.....................................................................15 Mạch giao tiếp PS2 keyboard.........................................................................16 VGA.............................................................................................................................19 6.1 Đồ họa....................................................................................................................19 6.1.1 Giới thiê u........................................................................................................19 ê 6.1.2 Cổng VGA......................................................................................................19 6.2 Bô ê điều khiển video...............................................................................................19 6.2.1 Mạch đồng bô ê VGA........................................................................................20 6.2.2 Mạch tạo pixel.................................................................................................22 6.3 VGA text................................................................................................................24 6.3.1 6.3.2 Tạo text...........................................................................................................24 6.3.3 Font ROM.......................................................................................................25 6.3.4 Mạch tạo text cơ bản.......................................................................................26 6.3.5 7 Giới thiê u........................................................................................................24 ê Tỉ lê ê của Font..................................................................................................27 Các bước xây dựng game............................................................................................27 7.1 Xây dựng màn hình new game..............................................................................29 7.1.1 Layer nền.........................................................................................................31 7.1.2 Text layer.........................................................................................................32 7.2 Xây dựng màn chơi chính......................................................................................33 7.2.1 Text..................................................................................................................35 7.2.2 Header.............................................................................................................37 7.2.3 Bức tường........................................................................................................37 Snake game – Group3–K53 Page 4 7.2.4 Bóng mồi.........................................................................................................38 7.2.5 Rắn..................................................................................................................39 7.3 Khi nào kết thúc trò chơi?.....................................................................................45 7.4 Xây dựng phần kết thúc trò chơi...........................................................................45 7.4.1 Màn hình tính điểm.........................................................................................45 7.4.2 Màn lưu điểm và tên người chơi....................................................................47 8 Kết luận........................................................................................................................49 9 Các tài liệu tham khảo.................................................................................................49 Snake game – Group3–K53 Page 5 1 Lời cảm ơn Chúng tôi xin bày tỏ sự cảm ơn tới những thành viên trong ESRCLab đã nhiệt tình hướng dẫn, giúp đỡ chúng tôi hoàn thành đề tài này. 2 Tổng quan đềề tài 2.1 Mục tều - Thiết kế và hoàn thiện snake game trên kit DE1. Giao tiếp tốt với chuẩn VGA. Hoàn thiện kĩ năng lập trình VHDL. Hiểu rõ hơn về kit DE1. 2.2 Nềền tảng cơ bản - Kiến thức cơ bản về FPGA. Biết lập trình FPGA bằng ngôn ngữ VHDL. Có kĩ năng đọc tài liệu ( cả tiếng anh và tiếng việt). Kĩ năng tìm kiếm tài liệu trên mạng. 2.3 Yều cầều hệ thốống 2.3.1 Yêu cầu chức năng - Tần số làm việc 50MHz. Màn hình hiển thị 8 màu cơ bản. Tần số quét màn hình lớn hơn 24 fps. Nhận phím từ bàn phím nhanh, kịp thời, đủ nút. 2.3.2 Yêu cầu phi chức năng - Giao diện đơn giản, dễ chơi. 2.4 Cống việc cụ thể  Giao tiếp giữa Kit DE1 với bàn phím thông qua chuẩn giao tiếp PS2.  Xây dựng phần cứng xử lý game trên Kit DE1.  Giao tiếp và hiển thị game lên màn hình. Snake game – Group3–K53 Page 6 2.5 Kềốt quả đạt được Hoàn thành game. Giao tiếp tốt với bàn phím, có khả năng gõ text từ bàn phím. Hiển thị game lên màn hình với khung hình trên giây cao. Di chuyển của rắn mượt mà. Xử lý tốt việc rắn ăn mồi, tăng chiều dài… 3 Giới thiệu cống nghệ sử dụng 3.1 Phầền cứng 3.1.1 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. 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. Snake game – Group3–K53 Page 7 Hình 3.1 Kit DE1 Snake game – Group3–K53 Page 8 3.2 Phầền mềềm Quartus II 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. 3.2.1 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: Snake game – Group3–K53 Page 9 Hình 3.2 Design Flow 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. Snake game – Group3–K53 Page 10  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. 4 Sơ đốề khốối hệ thốống Hình 4.1 Sơ đồ khối hệ thống 4.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. 4.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. Snake game – Group3–K53 Page 11 4.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. 4.4 Khốối xử lý ( CU ) Khối chịu trách nhiệm điều khiển toàn bộ hệ thống. 5 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. 5.1 Khốối nhận dữ liệu PS2 5.1.1 Giao tiếp vật lý cổng PS2 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 Hình 5.1 Cổng PS2 bit stop Hình 5.2 Mô tả một khối dữ liệu Snake game – Group3–K53 Page 12 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ẽ : Hình 5.3 5.1.2 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 : Hình 5.4 Sơ đồ khối mạch nhận dữ liệu Snake game – Group3–K53 Page 13 Sơ đồ ASM của khối nhận dữ liệu: Hình 5.5 ASM của mạch nhận Về cơ bản, mạch hoạt động như sau: - 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. Snake game – Group3–K53 Page 14 - Cuối cùng xuất ra 8 bit dữ liệu và chuyển về trạng thái chờ. 5.2 Mạch giao tềố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. 5.2.1 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 : Hình 5.6 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 Snake game – Group3–K53 Page 15 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 5.2.2 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 : Hình 5.7 Snake game – Group3–K53 Page 16 Đ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ý. Sơ đồ FSM để bắt make code : Hình 5.8 FSM được thiết kế để thu scan code thay vì break code của tất cả các phím được nhấn kể cả các phím mở rộng. Ưu điểm là có thể nhận được phím ngay khi phím được nhấn xuống nhưng đổi lại là mạch sẽ phức tạp hơn. FSM này khi đọc được E0 sẽ bỏ qua code Snake game – Group3–K53 Page 17 này; Khi nhận được F0 thì sẽ bỏ qua F0 và đồng thời bỏ qua đoạn code nhận ngay tiếp sau nó. Như vậy, FSM hoàn thành nhiệm vụ nhận scan code. FSM thực hiện công việc trên như sau: - Ban đầu cho tín hiệu got_key và brk_flag bằng 0. Khi nhận được một mã từ bộ thu, nó sẽ kiểm tra có phải là mã mở rộng E0 hay - không, nếu phải sẽ bỏ qua ( got_key <= 0) và trơ vệ trạng thái chờ. Nếu không phải là E0, kiểm tra xem có phải là F0 hay. Nếu là F0 thì set cờ - brk_flag lên 1 và bỏ qua mã này và chuyển về trạng thái chờ. Nếu không phải là E0 và F0, lúc này sẽ kiểm tra cờ brk_flag, nếu là 1 thì sẽ bỏ qua đoạn mã, đồng thời xóa cờ brk_flag về 0. Nếu là 0 thì nhận đoạn mã này. Sau đó chuyển về trạng thái chờ. Ví dụ: khi ta nhấn và thả phím mũi tên lên ta sẽ có đoạn mã sau được truyền lần lượt: E0 75 E0 F0 75 - Khi nhận giá trị E0 đầu tiên, đây là mã mở rộng nên bỏ qua. Khi nhận giá trị 75 tiếp theo, đây không phải E0 hay F0, đồng thời kiểm tra cờ - brk_flag cho giá trị 0 => nhận giá trị này => ta thu dược scan code. E0 tiếp theo bỏ qua. F0 tiếp theo bỏ qua và set cờ brk_flag lên 1. Giá trị 75 cuối cùng, kiểm tra cờ brk_flag cho giá trị 1 => bỏ qua đồng thời xóa cờ này về 0. 6 VGA 6.1 Đốề hoa 6.1.1 Giới thiê êu - 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 IBM cùng loại máy tính PS/2 .Trong các phần sau, Snake game – Group3–K53 Page 18 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: Đỏ(R) 0 0 0 0 1 1 1 1 Xanh (G) 0 0 1 1 0 0 1 1 Xanh dương (B) 0 1 0 1 0 1 0 1 Màu Đen Xanh dương Xanh Lục lam Đỏ Đỏ tươi Vàng Trắng 6.1.2 Cổng VGA - 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 ê N 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 2 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 ê 3 chúng ta sẽ thu được 2 =8 màu cơ bản như được liê t kê trong bảng trên. ê 6.2 Bôô đ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: Snake game – Group3–K53 Page 19 Hình 6.1: Sơ đồ khối của bô ê điều khiển VGA - 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 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. 6.2.1 Mạch đồng bô ê VGA - Mạch này tạo ra các tín hiê u đồng bô ê theo phương ngangh_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: Snake game – Group3–K53 Page 20
- Xem thêm -

Tài liệu liên quan