Mục lục:

Trò chơi Pong: 6 bước
Trò chơi Pong: 6 bước

Video: Trò chơi Pong: 6 bước

Video: Trò chơi Pong: 6 bước
Video: Nhảy Mẫu 6 BƯỚC CHA CHA CƠ BẢN - Cho người mới bắt đầu (Bài hướng dẫn Bấm 🔽) 2024, Tháng bảy
Anonim
Trò chơi Pong
Trò chơi Pong

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

Tổng quat
Tổng quat

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

Xử lý điểm
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

Trò chơi Pong
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: