Mục lục:
- Bước 1: Tổng quan
- Bước 2: Xử lý hình ảnh
- Bước 3: Xử lý điểm
- Bước 4: Tạo hình ảnh
- Bước 5: Trò chơi Pong
- Bước 6: Trình điều khiển VGA
Video: Trò chơi Pong: 6 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:33
Vật liệu:
Ban FPGA Basys3
Cáp VGA
Vivado
Mục đích của tài liệu hướng dẫn này là phát triển trò chơi Pong sẽ được hiển thị trên màn hình. Dự án sẽ sử dụng VHDL để lập trình và sử dụng Basys3 FPGA để thực hiện mã và truyền hình ảnh bằng giao diện VGA. Hướng dẫn này dành cho những người đã có một chút kiến thức về VHDL. Hướng dẫn sẽ được chia thành 6 phần khác nhau: Tổng quan, Quy trình, Xử lý điểm, Tạo hình ảnh, Trò chơi Pong và VGA.
Bước 1: Tổng quan
Hình ảnh trên là sơ đồ thiết kế tổng thể của dự án
Mục tiêu của trò chơi:
Trò chơi bao gồm một màn hình có mái chèo trượt có thể được điều khiển bởi người dùng và một bức tường cố định đóng vai trò như giới hạn trên. Khi người dùng nhấn nút bắt đầu, là nút lên, quả bóng sẽ bắt đầu nảy lên, và sẽ bật ra khỏi tường và cố gắng đánh vào mái chèo. Nếu quả bóng chạm vào mái chèo, nó sẽ bật lên một lần nữa và tiếp tục tung lên cho đến khi nó trượt khỏi mái chèo. Trò chơi kết thúc khi bóng không chạm vào mái chèo. Người dùng sẽ có thể sử dụng các nút trái và phải để xác định chuyển động của cánh khuấy. Để thiết lập lại trò chơi, người dùng phải nhấn vào nút trung tâm. Thời gian chạy sẽ được ghi lại trên màn hình 7 đoạn. Có năm cấp độ, và cứ sau mười giây, cấp độ sẽ tăng lên, cho đến khi bạn đạt cấp độ 5, nó sẽ ở lại cho đến khi người dùng mất. Các cấp độ được xác định bởi tốc độ của quả bóng; điều này có nghĩa là cứ sau mười giây, tốc độ của quả bóng tăng lên, do đó làm tăng độ khó của trò chơi.
Kiến Trúc Hệ Thống:
Sơ đồ dưới đây là sơ đồ khối cấp cao nhất tổng thể cơ bản cho hệ thống. Hệ thống có bốn đầu vào: Nút R, Nút L, Khởi động và Đặt lại, và Đồng hồ. Nó có kết quả đầu ra đồng bộ theo chiều ngang và dọc, RBG (chỉ màu của pixel tại một vị trí nhất định) và Score (hoạt động như một xe buýt đến màn hình 7-Segment). Nút lên sẽ được sử dụng làm đầu và các nút trái và phải sẽ được sử dụng để di chuyển cánh khuấy theo các hướng tương ứng của chúng. Màn hình 7 phân đoạn sẽ được sử dụng để ghi lại điểm số, là số giây mà người dùng đã chơi mà không bị thua trò chơi. Số sẽ được hiển thị dưới dạng số thập phân.
Kiến trúc mạch: Chúng tôi sẽ xây dựng gizmo của mình bằng cách sử dụng một FSM có chứa FSM nhỏ hơn, FSM phụ sẽ kiểm soát độ khó của trò chơi trong khi FSM chính sẽ kiểm soát luồng tổng thể của trò chơi. Gizmo của chúng tôi cũng sẽ sử dụng ít nhất ba bộ chia xung nhịp, một cho điểm số (thời gian), một cho tốc độ làm tươi của màn hình và một được nối với đầu ra của DeMux để chúng tôi có thể kiểm soát tốc độ của trò chơi sẽ tiếp tục với số lượng khó khăn ngày càng tăng. Trò chơi sẽ di chuyển nhanh hơn nhiều khi bạn chơi lâu hơn. Chúng tôi sẽ có đầu vào điều khiển của DeMux ở trạng thái hiện tại của FSM phụ để chúng tôi có thể kiểm soát tốc độ của trò chơi theo thời gian bạn chơi. Chúng tôi sẽ sử dụng một vài bộ đếm, một bộ đếm để làm mới màn hình và một bộ đếm để tính điểm khi bạn tiếp tục chơi. Dự án này có hai mô-đun chính và một mảng các mô-đun con sẽ thao tác dữ liệu đầu vào. Hai mô-đun con chính là Trình điều khiển VGA, cũng như mô-đun logic nút. Trình điều khiển VGA sẽ bao gồm bộ nhớ lập trình, bộ chia xung nhịp và logic sẽ điều khiển đầu ra cho màu sắc. Mô-đun logic nút cũng sẽ bao gồm bộ chia đồng hồ và bộ nhớ có thể lập trình, cũng như bộ chuyển đổi nhị phân sang thập phân cho Màn hình 7 đoạn với bộ chia đồng hồ tương ứng.
Bước 2: Xử lý hình ảnh
Đối với phần Quy trình Hình ảnh của dự án, chúng tôi sẽ xác định chuyển động của quả bóng và mái chèo. Chương trình có các cổng bao gồm các nút trái, phải, trên và giữa, trạng thái hiện tại, đồng hồ, vị trí X và Y của quả bóng, cạnh trái và phải của mái chèo và lỗi. Trạng thái hiện tại được sử dụng để xác định tín hiệu cho phép. Mã này xem xét nhiều trường hợp mà quả bóng có thể di chuyển, và đã thiết lập các điều kiện để xác định đường đi của quả bóng. Khối quy trình tiếp theo xác định hướng di chuyển của cánh khuấy dựa trên nút nào được người dùng nhấn. Mã cho phần này của dự án được đính kèm với các nhận xét chi tiết mô tả những gì mỗi phần thực hiện.
Bước 3: Xử lý điểm
Phần này bao gồm các tệp liên quan đến việc hiển thị điểm tính bằng giây trên Màn hình 7 phân đoạn trên Bảng Basys3. Nó bao gồm một bộ chia đồng hồ được sử dụng để đếm giây, bộ đếm điểm đếm số giây mà người dùng đang chơi, trình điều khiển phân đoạn lấy điểm và chuyển nó thành cực dương và cực âm để hiển thị trên màn hình và cũng xác định vị trí số sẽ được hiển thị và cuối cùng, trình xử lý phân đoạn chuyển đổi các chữ số nhị phân thành các chữ số thập phân để được hiển thị trên màn hình. Người xử lý điểm đặt tất cả các quân cờ lại với nhau và lập bản đồ các tín hiệu. Mã cho tất cả năm tệp được đính kèm bên dưới.
Bộ chia đồng hồ:
Bộ chia xung nhịp có các đầu vào Clk (xung nhịp), CEN (bật trong), và Div (bộ chia) và đầu ra Clk_out. Nếu tín hiệu kích hoạt được bật, thì đồng hồ sẽ đếm trên cạnh tăng.
Bộ đếm điểm
Bộ đếm điểm có các đầu vào Clk (Đồng hồ) và RST (Đặt lại) và đầu ra Clk_Out và Q về cơ bản hoạt động như đầu ra điểm.
Trình điều khiển phân đoạn
Trình điều khiển phân đoạn có các đầu vào D1, D10, D100, D1000 và Đồng hồ. Các số sau "D" đề cập đến vị trí thập phân trên màn hình 7 đoạn. Đầu ra là cực dương và chữ số. Đồng hồ đếm và ấn định các con số và vị trí của nó. Ví dụ: "9" sẽ được hiển thị ở vị trí đơn vị với "0" ở vị trí hàng nghìn, hàng trăm và hàng chục. Khi nó chuyển sang "10", số bây giờ sẽ có "1" ở hàng chục và "0" ở hàng nghìn, hàng trăm và hàng đơn vị.
Trình xử lý phân đoạn
Bộ xử lý phân đoạn có chữ số làm đầu vào và cực âm là đầu ra của nó. Về cơ bản, nó là các số nhị phân đến màn hình cực âm để xuất ra các số thập phân trên màn hình.
Xử lý điểm
Trình xử lý Điểm bao gồm bốn thực thể trước đó và đặt tất cả chúng lại với nhau và lập bản đồ các tín hiệu. Nó cũng bật và tắt bộ đếm dựa trên trạng thái hiện tại.
Bước 4: Tạo hình ảnh
Việc tạo hình ảnh bao gồm bốn thành phần: Hoạt ảnh, Bộ đếm thất bại, Làm mới hình ảnh và Bộ đếm bắt đầu. Các tệp này đề cập đến cách tạo hình ảnh trên màn hình hiển thị.
Hoạt hình
Tệp Hoạt hình có các đầu vào Clk (Tín hiệu đồng hồ), CEN (cho phép đếm), RST (Tín hiệu đặt lại), B_X (vị trí X của quả bóng), B_Y (vị trí Y của quả bóng), P_L (vị trí mái chèo bên trái) và P_R (vị trí mái chèo bên phải). Các đầu ra là WA (địa chỉ mà chúng ta đang ghi màu) và WD (màu được ghi tại địa chỉ đã xác định). Tệp có Play_Counter là một bộ đếm sẽ được sử dụng làm đầu vào điều khiển cho MUX, một bộ mã hóa có thể xuất ra các màu chính xác ở đúng vị trí và cuối cùng là một bộ ghép kênh hiển thị màu chính xác dựa trên vị trí của paddle và quả bóng.
Làm mới hình ảnh
Tệp Làm mới Hình ảnh được sử dụng để làm mới hình ảnh khi vị trí của bóng và mái chèo thay đổi. Tệp này bao gồm các thành phần từ các tệp Hoạt hình, Bộ đếm bắt đầu và Bộ đếm thất bại. Nó ánh xạ các tín hiệu từ mỗi thành phần và sử dụng logic trạng thái để xác định các tín hiệu và địa chỉ đầu ra.
Bắt đầu bộ đếm
Bộ đếm Khởi động sử dụng các đầu vào Clk, RS và CEN và đầu ra WA và WD. Nó sử dụng bộ đếm và chuyển đổi để xác định đầu vào điều khiển cho MUX. Sau đó, Bộ ghép kênh sử dụng đầu vào để xác định địa chỉ màu chính xác và gửi dữ liệu này đến trình điều khiển VGA. Điều này được sử dụng để hiển thị "Pong" khi người dùng bắt đầu trò chơi.
Bộ đếm thất bại
Bộ đếm thất bại được sử dụng để hiển thị "Trò chơi Kết thúc" khi người dùng thua trò chơi. Nó có tín hiệu Clk, RST và CEN. Nó sử dụng bộ đếm và công thức chuyển đổi để xác định đầu vào điều khiển cho MUX. Sau đó, Bộ ghép kênh sử dụng đầu vào để xác định địa chỉ màu chính xác và gửi dữ liệu này đến trình điều khiển VGA.
Bước 5: Trò chơi Pong
Phần này của dự án bao gồm các tệp Pong Master, Finite State Machine (FSM), Timer và Start Debounce.
Hẹn giờ
Bộ định thời có đầu vào Clk (Đồng hồ) và PS (Trạng thái hiện tại) và Bộ định thời và Clk_out là đầu ra. Bộ đếm thời gian được sử dụng để thay đổi tốc độ của trò chơi khoảng năm giây một lần.
Dòng chảy FSM
Flow FSM có các đầu vào Clk, Fail, Timer, Bttn_S (Start Button) và Buttn_RST (Reset Button) và đầu ra Pres_S (Present State Output). FSM sử dụng bộ đếm thời gian để cập nhật Trạng thái Hiện tại thành Trạng thái Tiếp theo và tiếp tục cập nhật Trạng thái Tiếp theo cho đến khi trò chơi đạt đến cấp độ 5, nó sẽ ở lại cho đến khi trò chơi kết thúc.
Bắt đầu Debounce
Bắt đầu Debounce là độ nảy bắt đầu của quả bóng. Nó có đầu vào S_in và Clk, và đầu ra S_out.
Pong MasterTệp này sử dụng tất cả các thành phần trước đó và làm cho nó sao cho tất cả các thành phần là tức thời. Nó là tệp chính tập hợp tất cả các thành phần trước đó mà chúng ta đã xây dựng cùng nhau.
Bước 6: Trình điều khiển VGA
Trình điều khiển VGA (Visual Graphics Array) là một phần mềm được sử dụng để chấp nhận các lệnh hoặc dữ liệu được gửi đến màn hình hiển thị. Người lái xe đã được trao cho chúng tôi bởi giáo sư của chúng tôi. Sử dụng trình điều khiển và dây VGA để kết nối bo mạch Basys3 với màn hình.
Bây giờ bạn đã sẵn sàng để tạo Trò chơi Pong của riêng mình bằng VHDL!
Đề xuất:
Chạy các trò chơi Steam của bạn trên Bộ máy trò chơi cổ điển với Raspberry Pi: 7 bước
Chạy các trò chơi Steam của bạn trên Bộ máy trò chơi cổ điển với Raspberry Pi: Bạn có tài khoản Steam với tất cả các trò chơi mới nhất không? Làm thế nào về một tủ arcade? Nếu vậy, tại sao không kết hợp cả hai thành một máy chơi game Steam Streaming tuyệt vời. Cảm ơn những người ở Steam, giờ đây bạn có thể phát trực tuyến các trò chơi mới nhất từ PC hoặc Ma
Tính điểm điện tử cho trò chơi ném túi đậu Trò chơi bóng chày: 8 bước (có hình ảnh)
Tính điểm điện tử cho trò chơi ném túi đậu Trò chơi bóng chày: Tài liệu hướng dẫn này sẽ giải thích cách tự động giữ điểm số bằng phương pháp điện tử cho trò chơi bóng chày theo chủ đề Túi đậu. Tôi sẽ không trình bày cách xây dựng chi tiết của trò chơi bằng gỗ, bạn có thể tìm thấy những kế hoạch đó trên trang web của Ana White tại: https: // www
Trò chơi Aruduino LED Nhấp nhanh Trò chơi hai người chơi: 8 bước
Aruduino LED Game Fast Click Two Player Game: Dự án này được lấy cảm hứng từ @HassonAlkeim. Nếu bạn sẵn sàng tìm hiểu sâu, đây là một liên kết bạn có thể kiểm tra https://www.instructables.com/id/Arduino-Two-Player-Fast-Button-Clicking-Game/. Trò chơi này là một phiên bản cải tiến của Alkeim's. Nó là một
Bộ điều khiển trò chơi tự làm dựa trên Arduino - Bộ điều khiển trò chơi Arduino PS2 - Chơi Tekken với tự làm trò chơi Arduino: 7 bước
Bộ điều khiển trò chơi tự làm dựa trên Arduino | Bộ điều khiển trò chơi Arduino PS2 | Chơi Tekken với Bàn điều khiển Arduino tự làm: Xin chào các bạn, chơi game luôn thú vị nhưng chơi với Bộ điều khiển trò chơi tùy chỉnh tự làm của riêng bạn sẽ thú vị hơn
Trình mô phỏng trò chơi điện thoại thông minh- Chơi trò chơi Windows bằng IMU điều khiển bằng cử chỉ, Gia tốc kế, Con quay hồi chuyển, Từ kế: 5 bước
SmartPhone Game Simulator- Chơi Windows Games Sử dụng IMU Điều khiển bằng cử chỉ, Gia tốc kế, Con quay hồi chuyển, Từ kế: Hỗ trợ dự án này: https://www.paypal.me/vslcreations bằng cách quyên góp cho mã nguồn mở & hỗ trợ để phát triển hơn nữa