1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Xây dựng snake game trên nền tảng phần cứng DE1 từ altera

49 499 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 49
Dung lượng 2,76 MB

Nội dung

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 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: longfet53@gmail.com Điện thoại:0973785654 Địa Web NA Thông tin tài liệu Tiêu đề tài liệu Báo cáo cuối snake game DE1 Ngày báo cáo 17/09/2011 Ngày nộp 16/09/2011 URL NA Tên tài liệu Bảng nội dung Snake game – Group3–K53 Page Snake_final_report.doc x Snake game – Group3–K53 Page Lời cảm ơn Chúng xin bày tỏ cảm ơn tới thành viên ESRCLab nhiệt tình hướng dẫn, giúp đỡ hoàn thành đề tài Tổng quan đề tài 2.1 Mục tiêu - Thiết kế hoàn thiện snake game kit DE1 Giao tiếp tốt với chuẩn VGA Hoàn thiện kĩ lập trình VHDL Hiểu rõ kit DE1 2.2 Nền tảng - Kiến thức FPGA Biết lập trình FPGA ngôn ngữ VHDL Có kĩ đọc tài liệu ( tiếng anh tiếng việt) Kĩ tìm kiếm tài liệu mạng 2.3 Yêu cầu hệ thống 2.3.1 Yêu cầu chức - Tần số làm việc 50MHz Màn hình hiển thị màu Tần số quét hình lớ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 - Giao diện đơn giản, dễ chơi 2.4 Công việc cụ thể  Giao tiếp 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 Kit DE1  Giao tiếp hiển thị game lên hình Snake game – Group3–K53 Page 2.5 Kết đạt Hoàn thành game Giao tiếp tốt với bàn phím, có khả gõ text từ bàn phím Hiển thị game lên hình với khung hình giây cao Di chuyển rắn mượt mà Xử lý tốt việc rắn ăn mồi, tăng chiều dài… 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 ) phiên thu nhỏ Kit DE2 Nó phù hợ để học điện tử số, kĩ thuật máy tính FPGAs Con chip Cyclon II 2C20 DE1 thiết kế chyên để phục vụ cho mục đích giáo dục phòng lab trường đại học, cao đẳng Nó phù hợp để làm nhiều tập môn học điện tử số, kĩ thuật máy tính thông qua ví dụ đơn giản Thông số kit DE1:  Bộ nhớ: - 8Mb SDRAM - 512Kb SRAM - 4Mb Flash  Âm - Hỗ trợ codec 24 bit  Công tắc thị - 10 công tắc chuyển nút bấm - led - 10 LED đỏ LED xanh  Các kết nối - VGA, RS-232, PS2 - cổng mở rộng 40 chân - Khe cắm SD/MMC  Nguồn - Có thể nguồn từ cáp USB thông qua cáp nguồn riêng Snake game – Group3–K53 Page Hình 3.1 Kit DE1 Snake game – Group3–K53 Page 3.2 Phần mềm Quartus II Quartus II công cụ sử dụng trinh thực đề tài Được cung cấp cập nhật thường xuyên Altera Đây công cụ thiết kế tốt cho dòng chip FPGA Altera bao gồm Cyclon II 2C20 có DE1 Là công cụ phân tích tổng hợp thiết kế HDL, cho phép nhà phát triển thực thiết kế họ, đồng thời cho phép phân tích thời gian, kiểm tra sơ đồ RTL, mô hệ thống cấu hình sản phẩm cách phù hợp 3.2.1 Quy trình thiết kế FPGA với Quartus II Dưới quy trình thiết kế FPGA với phần mềm thiết kế FPGA nói chung Quartus II nói riêng: Snake game – Group3–K53 Page Hình 3.2 Design Flow Nó bao gồm bước sau: • Design Entry – Mạch sau thiết kế mô tả ngôn ngữ mô tả phần cứng VHDL hay Verilog, dùng sơ đồ Schematic • Synthesis – Công cụ tổ hợp tổ hợp mạch tạo file netlist có chứa phần tử logic kết nối chúng • Function Simulation – Chức mạch sau tổ hợp kiểm định • Fitting – Công cụ máy tính đặt phần tử logic định nghĩa file netlist xuống phần tử logic chip FPGA thực tế Đồng thời chọn đường dây để kết nối chúng với • Timming Analysis – Phân tích trễ truyền dẫn đường dây khác nhằm đưa thị giúp cải thiện hiệu làm việc mạch Snake game – Group3–K53 Page • Timming Simulation – Kiểm tra đồng thời mặt chức lẫn thời gian mạch • Programming and Configuration – Thực mạch chip vật lý cách cấu hình phần tử logic chip thành lập kết nối cần thiết 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 sử dụng hình máy tính CRT LCD thông dụng điều khiển thông qua khối VGA Controller Snake game – Group3–K53 Page 4.3 ROM Được sử dụng để chứa font hiển thị game Là distributed ROM - trình biên dịch tổng hợp từ phần tử logic có sẵn chip 4.4 Khối xử lý ( CU ) Khối chịu trách nhiệm điều khiển toàn hệ thống PS2 Keyboard Để điều khiển hướng di chuyển rắn, nhập mức level để bắt đầu chơi hay để lưu tên người chơi đạt điểm số cao… phải sử dụng keyboard Hiện thị trường có loại keyboard keyboard cổng usb keyboard cổng ps2.Trong snake game nhóm thực ps2 keyboard chọn để sử dụng Chúng ta tìm hiểu loại keyboard thiết kế khối cần thiết để nhận liệu gửi từ keyboard cách xác 5.1 Khối nhận 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 hai chân nguồn VCC ground chân nguồn VCC cung cấp host Dữ liệu từ keyboard tới host truyền qua chân data cách nối chuẩn UART.Quá trình truyền Hình 5.1 Cổng PS2 liệu bắt đầu với bit start ,8 bit liệu ,1 bit chẵn lẻ bit stop Hình 5.2 Mô tả khối liệu Snake game – Group3–K53 Page 10 Hình 7.12 Địa chữ số ROM giá trị chữ số cộng thêm 48 Từ việc hiển thị thực bình thường Hoàn toàn tương tự việc hiển thị level 7.2.2 Header Vùng header màu trắng tạo cách sử dụng kĩ thuật tạo đối tượng hình chữ nhật thông thường 7.2.3 Bức tường Để tạo tường có hoa văn ta cần sử dụng ROM để tạo đối tượng hình chữ nhật Sau đến vị trí muốn hiển thị tường, ta việc cho hiển cách load ROM tường Snake game – Group3–K53 Page 35 Hình 7.13 ROM tường 7.2.4 Bóng mồi Việc hiển thị bóng hoàn toàn giống với việc hiển thị tường Sau lần rắn ăn bóng mồi cần bóng mồi xuất xuất vị trí ngẫu nhiên Để tạo tọa độ ngẫu nhiên này, ta sử dụng đếm với giá trị lớn ứng với tọa độ lớn chiều hình đếm đếm quay vòng liên tục Khi rắn ăn mồi sinh tín hiệu yêu cầu sinh bóng Khi ta lấy giá trị đếm làm tọa độ cho bóng mồi sinh giá trị phụ thuộc vào thời gian lần ăn mồi liên tiếp rắn Và khoảng thời gian ngẫu nhiên nên giá trị tọa độ ngẫu nhiên Snake game – Group3–K53 Page 36 Hình 7.14 Bộ sinh tọa độ ngẫu nhiên Nếu bóng mồi sinh có tọa độ nằm phần thân hiển thị rắn bóng phải sinh để thay Snake game – Group3–K53 Page 37 Hình 7.15 Bóng nằm thân rắn Để tránh việc bóng sinh nằm tường, ta chặn toạ độ bóng từ đếm để sinh tọa độ ngẫu nhiên cho bóng 7.2.5 Rắn Việc hiển thị đốt rắn hoàn toàn giống với làm với tường, load ROM cho đốt Có điều rắn có chiều dài thay đổi Chiều dài rắn xem tham số đầu vào từ tính chiều dài rắn mà ta xét sau Chú rắn coi mảng nhiều phần tử, phần tử ứng với đốt rắn Trong phần tử có chứa tọa độ đỉnh tọa độ trái đốt tương ứng rắn Chỉ đốt có số nhỏ chiều dài rắn hiển thị: Snake game – Group3–K53 Page 38 Hình 7.16 Hiển thị rắn Ta cần mảng chiều có chiều dài tương đương để chứa tín hiệu cho biết đốt tương ứng có bật hay không: Hình 7.17 Hiển thị rắn Khi khối VGA quét hình theo pixel_x pixel_y, ta kiểm tra xem tọa độ có thuộc đốt rắn không Giả sử tọa độ quét nằm đốt rắn đó, ta kiểm tra tín hiệu snak_on tương ứng Nếu ‘1’ ta load ROM hiển thị đốt rắn đó, ngược lại không cho hiển thị đốt rắn Tùy thuộc vào ROM đốt rắn mà pixel có hiển thị hay không Nếu giá trị ROM tương ứng ‘1’ pixel gán giá trị RGB rắn Nếu ‘0’ pixel mang màu Do đó, đốt rắn ta cần tín hiệu để xác định pixel có bật hay không => Ta cần mảng chiều có chiều dài với rắn chứa tín hiệu bật pixel cho rắn: Snake game – Group3–K53 Page 39 Hình 7.18 ROM bật pixel cho đốt rắn Như hình trên, có tín hiệu Sna_on thứ i ‘1’ xuất giá trị RGB rắn Để làm điều này, ta or tất bit tín hiệu sna_on lại với để tạo tín hiệu snake_on => snake_on ‘1’ cho xuất giá trị RGB rắn cổng VGA: Hình 7.19 Điều khiển rắn di chuyển: Snake game – Group3–K53 Page 40 Một cách đơn giản để điều khiển rắn di chuyển ta việc điều khiển đầu rắn Tất đốt rắn lại tự động theo đầu rắn cách gán tọa độ đỉnh trái đốt đằng trước cho đốt đằng sau: Hình 7.20 Di chuyển rắn Ta sử dụng tín hiệu (“step_tick”) để “thông báo” dịch tọa độ đốt tín hiệu “step_tick” ‘1’ tọa độ đầu rắn đốt lại cập nhật Do đó, chu kì cao tốc độ di chuyển rắn thấp Để điều chỉnh tốc độ di chuyển rắn, ta dùng counter để sinh tín hiệu “step_tick” Giá trị cao đếm phụ thuộc vào level người chơi Level cao giá trị cao đếm thấp => chu kì tín hiệu “step_tick” thấp => rắn di chuyển nhanh: Hình 7.21 Bộ sinh tín hiệu di chuyển Snake game – Group3–K53 Page 41 Điều khiển đầu rắn: Hình 7.22 Khối điều khiển đầu rắn Đầu rắn điều khiển phím mũi tên bàn phím Khi nhận tín hiệu đổi hướng từ bàn phím đầu rắn di chuyển theo chiều mà mũi tên Để tránh tình trạng nhận vào phím mũi tên ngược lại với hướng di chuyển rắn dẫn đến đầu rắn chui vào thân ta cần biến chứa chiều di chuyển rắn để xử lý nhận phím bấm Do rắn có hướng di chuyển hình nên ta dùng biến nhị phân bit để mã hóa chiều di chuyển rắn: direc di chuyển từ trái sang phải direc di chuyển từ phải sang trái direc di chuyển từ xuống direc di chuyển từ lên Snake game – Group3–K53 Page 42 Hình 7.23 Hướng hình Khi nhận phím bấm từ bàn phím- ví dụ "01110100" ( phím di chuyển sang phải)ta kiểm tra phím Trong trường hợp ta có phím mũi tên sang phải Tiếp theo kiểm tra hướng di chuyển rắn chiều Nếu “01” – phải sang trái ngược chiều mũi tên – không cho phép đầu rắn di chuyển sang phải mà tiếp tục di chuyển sang trái Hình 7.24 Điều hướng đầu rắn Khối điều khiển đầu rắn: Snake game – Group3–K53 Page 43 7.3 Khi kết thúc trò chơi? Trò chơi kết thúc mà đầu rắn đâm vào tường đâm vào phần thân Việc xác định rắn đâm đầu tường thực đơn giản cách kiểm tra xem tọa độ đầu rắn có nằm vùng tường hay không Việc kiểm tra xem rắn có tự ăn hay không thực tương tự cách kiểm tra tọa độ đầu rắn có trùng với tọa độ đốt bật rắn hay không Hình 7.25 Đầu rắn nằm thân Do việc kiểm tra rắn đâm vào tường tự đâm thực hiên riêng rẽ, sinh hai tín hiệu riêng rẽ nên cần kết hợp lại phép or 7.4 Xây dựng phần kết thúc trò chơi 7.4.1 Màn hình tính điểm Sau rắn đâm vào tường tự đâm vào nó, trò chơi kết thúc hình tính điểm: Snake game – Group3–K53 Page 44 Hình 7.26 Màn hình tính điểm trò chơi Trên hình hiển thị số điểm người chơi Đồng thời hiển thị tên điểm số tương ứng người có số điểm cao trước Điểm tên người lưu mảng phần tử: Hình 7.27 Khối hiển thị điểm người chơi Snake game – Group3–K53 Page 45 Việc hiển thị text, điểm số giống phần hiển thị điểm level chơi 7.4.2 Màn lưu điểm tên người chơi Màn hình tín điểm hiển thị 3s Sau 3s, điểm số người chơi cao người có điểm số thấp top5 tên điểm số người chơi lưu lại vào top5, hàn hình lưu tên hiển thị: Hình 7.28 hình lưu tên Màn hình gồm phần : layer text background chứa text_box màu trắng Vấn đề hiển thị giống phần bàn trước đơn giản Ta xét vấn đề nhập tên từ bàn phím xử lý lưu trữ tên điểm số vào mảng Để lưu tên người chơi nhập từ bàn phím ta sử dụng mảng phần tử, phần tử địa chữ font_ROM Mỗi có phím nhấn, scan code phím chuyển lên host chuyển thành mã ASCII tương ứng thông qua chuyển đổi SCAN2ASCII Snake game – Group3–K53 Page 46 Hình 7.29 Chuyển Scan code sang mã ASCII Từ đó, mã ASCII lưu vào mảng Khi hiển thị việc đọc giá trị địa ROM từ mảng load kí tự tương ứng Khi nhận phím backspace, mạch xóa phần tử trước giá trị ( địa khoảng trống ROM) Khi nhận phím enter, mảng chứa tên chèn vào mảng chiều chứa tên người chơi có điểm số cao Snake game – Group3–K53 Page 47 Hình 7.30 Lưu điểm số người chơi Kết luận Sau tháng hè làm việc, hoàn thành snake game kit DE1 Thông qua đề tài học hỏi thêm nhiều kĩ thuật lập trình VHDL kinh nghiệm quý báu việc phát triển ứng dụng FPGA Mặc dù game hoàn thành nhiều việc phải làm để hoàn thiện game hiển thị ảnh dùng SDRAM, audio cho game Hy vọng sau đề tài này, nhóm sau tiếp tục phát triển để game hoàn thiện Các tài liệu tham khảo - FPGA Prototyping VHDL Examples - Xilinx Spartan-3 version PONG P.CHU Cùng nhiều nguồn tài liệu internet Snake game – Group3–K53 Page 48 Snake game – Group3–K53 Page 49 ... bước xây dựng game Sơ đồ FSM game: Snake game – Group3–K53 Page 25 HÌnh 7.1 FSM game Sơ đồ ASM game: Snake game – Group3–K53 Page 26 Hình 7.2 Sơ đồ ASM snake game 7.1 Xây dựng hình new game Màn... cứng xử lý game Kit DE1  Giao tiếp hiển thị game lên hình Snake game – Group3–K53 Page 2.5 Kết đạt Hoàn thành game Giao tiếp tốt với bàn phím, có khả gõ text từ bàn phím Hiển thị game lên hình... tài liệu Báo cáo cuối snake game DE1 Ngày báo cáo 17/09/2011 Ngày nộp 16/09/2011 URL NA Tên tài liệu Bảng nội dung Snake game – Group3–K53 Page Snake_ final_report.doc x Snake game – Group3–K53 Page

Ngày đăng: 24/09/2017, 12:51

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w