Daftar Isi:

FPGA Asteroid Game: 7 Langkah (dengan Gambar)
FPGA Asteroid Game: 7 Langkah (dengan Gambar)

Video: FPGA Asteroid Game: 7 Langkah (dengan Gambar)

Video: FPGA Asteroid Game: 7 Langkah (dengan Gambar)
Video: Apa Itu FPGA!? Ambisi AMD Untuk Melawan Intel dan NVIDIA | AMD x Xilinx 2024, Oktober
Anonim
Game Asteroid FPGA
Game Asteroid FPGA

Untuk Proyek Akhir CPE 133 kami, kami memutuskan untuk membuat game asteroid di FPGA kami menggunakan dua sakelar tombol tekan dan tampilan 7-segmen. Gim ini bekerja sehingga asteroid muncul di salah satu dari tiga baris yang dipilih secara acak, dan meluncur ke arah kapal di sisi lain layar 7 segmen. Tombol atas dan tombol bawah dapat digunakan untuk memindahkan kapal Anda keluar dari asteroid. Setelah gagal melakukannya, tampilan membaca 'BAnG' sejenak dan kemudian dengan cepat memulai ulang game sehingga pengguna dapat mencoba lagi. Berikut ini adalah deskripsi singkat tentang bagaimana proyek dibuat sehingga setiap pengguna dapat mereplikasi atau meningkatkan desain kami.

Langkah 1: Ikhtisar

Gambaran
Gambaran
Gambaran
Gambaran

Proyek ini sebagian besar terdiri dari Finite State Machines (FSM), yang menggunakan logika untuk mentransfer FPGA antara negara bagian yang menyimpan dan menampilkan nilai posisi kapal dan batuan yang berbeda. Dua modul utama adalah FSM permainan untuk rock and ship, dan FSM dekoder tampilan biner ke 7-segmen, yang diintegrasikan bersama menggunakan model struktural yang sangat sederhana di VHDL.

FSM dibuat untuk posisi kapal, posisi batu, dan untuk dekoder 7 segmen. Tujuan dari FSM kapal adalah agar kapal dapat bergerak ke posisi yang benar ketika pemain menekan tombol atas atau bawah. FSM diperlukan karena perlu mengingat posisi mana yang terakhir untuk pindah ke posisi yang benar.

Tujuan dari FSM batu adalah untuk memindahkan batu ke posisi yang benar berdasarkan baris mana ia berada dan posisi terakhir di baris itu. Selain itu, ia melacak posisi modul yang akan menampilkannya dan secara acak memilih baris baru untuk muncul berikutnya.

FSM untuk dekoder tampilan 7-segmen digunakan untuk tidak hanya menampilkan kapal dan batu tetapi juga untuk menampilkan "BAnG" ketika posisi kapal dan posisi batu sama.

Langkah 2: Bahan

Bahan-bahan yang digunakan dalam proyek ini adalah:

  • Dewan Pengembangan Basys3 dari Digilent, Inc.
  • Suite Desain Vivado
  • sseg_dec.vhd (File ini diberikan kepada kami di Polylearn dan ditulis oleh Bryan Mealy)
  • Clk_div.vhd (File ini diberikan kepada kami di Polylearn dan ditulis oleh Bryan Mealy)
  • Tiga Mesin Negara Hingga (FSM)

Langkah 3: Membuat Game

Membuat Game
Membuat Game
Membuat Game
Membuat Game
Membuat Game
Membuat Game
Membuat Game
Membuat Game

Modul permainan dibuat dengan menggunakan pemodelan perilaku untuk menggambarkan keadaan kapal dan batu untuk FSM masing-masing. Keuntungannya adalah jauh lebih mudah untuk memodelkan rangkaian secara perilaku dengan menjelaskan apa yang dilakukannya daripada mencari tahu semua komponen yang diperlukan untuk merancang perangkat keras.

Status batuan dilakukan dengan menggunakan generator angka acak semu untuk posisi pertama batuan. Untuk mencapai ini, kami memberikan generator jamnya sendiri yang sangat cepat dibandingkan dengan kecepatan permainan. Pada setiap tepi naik, nomor tiga bit bertambah, dan semua nilainya sesuai dengan salah satu dari tiga status awal kapal. Oleh karena itu, tiga nilai sesuai dengan posisi 3 (kanan atas), tiga sesuai dengan posisi 7 (tengah), dan dua sesuai dengan posisi 11 (kanan bawah).

Setelah generasi acak telah terjadi dan asteroid telah diberikan keadaan awal, ia mengalir secara horizontal menuju kapal tanpa gangguan.

0 ← 1 ← 2 ← 3

4 ← 5 ← 6 ← 7

11 ← 10 ← 9 ← 8

Jam yang digunakan untuk logika keadaan batu berikutnya mengontrol kecepatan permainan; kami menemukan melalui coba-coba bahwa 9999999 adalah nilai yang baik untuk hitungan maksimalnya.

Logika kapal bekerja dengan menginisialisasi ke posisi tengah (posisi 4) di sisi paling kiri. Jika tombol atas atau tombol bawah ditekan, kapal akan bergerak naik turun ke posisi 0 dan 11 sesuai dengan tombol yang telah ditekan.

Agar pergerakan kapal terasa nyaman bagi pengguna, kami tidak membuat pergerakannya tidak sinkron. Kami menggunakan jam untuk perubahan statusnya, dan kami menggunakan hitungan maksimal 5555555.

Langkah 4: Menampilkan Hasil

Dekoder biner ke 7-segmen mengambil variabel posisi 4-bit untuk kapal dan asteroid dan menampilkan gambar yang sesuai (baik kapal dan batu atau pesan "BAnG").

Ini menyelesaikan ini dengan terlebih dahulu memeriksa apakah keduanya sama dan kemudian menampilkan pesan "BAnG" jika pemeriksaan kembali benar.

Jika tidak kembali benar, decoder akan menampilkan kapal dan batu dengan beralih di antara mereka pada frekuensi clock yang sangat tinggi dan menipu mata untuk melihat mereka seolah-olah sedang ditampilkan pada waktu yang sama.

Langkah 5: Menyatukan Semuanya

Menyatukan Semuanya
Menyatukan Semuanya

Kami mencakup FSM kapal dan batu dalam satu FSM besar yang kami sambungkan ke FSM layar. Input ke permainan adalah tombol atas dan tombol bawah pada papan BASYS3 dan jam sistem. Outputnya adalah segmen dan vektor anoda tujuh segmen-tampilan.

Input dan output ini akan terlihat di file constraint tempat port dipetakan.

Langkah 6: Modifikasi Masa Depan

Di masa depan, menambahkan lebih banyak fungsi pergerakan kapal ke proyek akan menjadi peningkatan. Hal ini dapat dicapai hanya dengan memberikan 2 input tombol lagi dan memungkinkan kapal untuk mengambil posisi (keadaan) selain 0, 4, dan 8. Modifikasi lain yang mungkin dapat dilakukan adalah mengendalikan waktu keadaan asteroid berikutnya sehingga mulai perlahan dan meningkatkan kecepatan dengan 1,5x setiap kali meleset dari kapal sampai terkena, dimana akan restart dan menjadi lambat lagi. Ini akan meningkatkan kesulitan permainan dan membuatnya lebih menyenangkan bagi pengguna jika diterapkan, dan dapat dilakukan dengan membuat variabel untuk hitungan maksimal jam keadaan batu berikutnya, mengalikan variabel itu dengan 1,5 setiap kali asteroid tidak melakukannya. 't hit, dan menyetel ulang ke nilai awalnya setiap kali batu itu mengenai.

Langkah 7: Kesimpulan

Proyek ini telah membantu kami untuk lebih memahami mesin keadaan hingga, jam, dan tampilan interaktif pada tampilan tujuh segmen.

Hal terbesar tentang mesin keadaan terbatas adalah penting untuk mengetahui (mengingat) keadaan Anda saat ini untuk pindah ke keadaan yang diinginkan berikutnya. Ironisnya, nasihat hidup yang baik; Anda harus tahu di mana Anda berada untuk mengetahui ke mana Anda akan pergi.

Dengan memanipulasi contoh jam yang berbeda, kami dapat menghasilkan angka secara acak, memindahkan batu ke posisi berikutnya, dan mengelola tampilan kapal, batu, dan pesan akhir permainan.

Kami belajar bahwa lebih dari satu anoda tidak dapat ditampilkan secara bersamaan. Modul yang diberikan kepada kami memanfaatkan bahwa mata manusia hanya dapat melihat perbedaan hingga frekuensi tertentu. Jadi frekuensi yang lebih tinggi dari switching anoda dipilih. Kapal dan batu yang terlihat pada saat yang sama sebenarnya merupakan kiasan karena masing-masing ditampilkan secara terpisah, tetapi sangat cepat. Konsep tersebut diterapkan untuk menampilkan pergerakan kapal, batu karang, dan pesan “BAnG”.

Direkomendasikan: