Isi kandungan:
- Langkah 1: Gambaran keseluruhan
- Langkah 2: Proses Imej
- Langkah 3: Penangan Skor
- Langkah 4: Penjanaan Imej
- Langkah 5: Permainan Pong
- Langkah 6: Pemacu VGA
Video: Permainan Pong: 6 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:10
Bahan:
Papan FPGA Basys3
Kabel VGA
Vivado
Tujuan pengajaran ini adalah untuk mengembangkan permainan Pong yang akan dipaparkan di monitor. Projek ini akan menggunakan VHDL untuk memprogram dan menggunakan Basys3 FPGA untuk menjalankan kod dan memindahkan gambar menggunakan antara muka VGA. Tutorial ini bertujuan untuk orang yang mempunyai sedikit pengetahuan mengenai VHDL. Tutorial akan dibahagikan kepada 6 bahagian yang berbeza: Gambaran Keseluruhan, Proses, Penangan Skor, Penjanaan Imej, Permainan Pong, dan VGA.
Langkah 1: Gambaran keseluruhan
Gambar di atas adalah reka bentuk skematik keseluruhan projek
Objektif Permainan:
Permainan ini terdiri daripada paparan dengan gelangsar yang dapat dikendalikan oleh pengguna, dan dinding tetap yang berfungsi sebagai batas atas. Ketika pengguna menekan butang mulai, yang merupakan tombol atas, bola akan mulai melambung, dan akan memantul dari dinding dan berusaha memukul dayung. Sekiranya bola memukul dayung, bola akan melambung lagi dan terus melambung sehingga terlepas dayung. Permainan berakhir apabila bola gagal memukul dayung. Pengguna akan dapat menggunakan tombol tekan kiri dan kanan untuk menentukan pergerakan dayung. Untuk menetapkan semula permainan, pengguna mesti menekan butang tengah. Masa larian akan dirakam pada paparan 7 segmen. Terdapat lima tahap, dan setiap sepuluh saat tahapnya meningkat, sehingga anda mencapai tahap 5 di mana ia kekal sehingga pengguna kalah. Tahap ditentukan oleh kelajuan bola; ini bermaksud bahawa setiap sepuluh saat, kelajuan bola meningkat, sehingga meningkatkan kesukaran permainan.
Senibina Sistem:
Gambarajah di bawah adalah gambarajah blok tingkat atas asas keseluruhan untuk sistem. Sistem ini mempunyai empat input: Butang R, Button L, Start, dan Reset, dan Jam. Ia memiliki output sinkronisasi mendatar dan menegak, RBG (yang merujuk pada warna piksel di lokasi tertentu), dan Skor (yang berfungsi sebagai bas ke paparan 7-Segmen). Butang atas akan digunakan sebagai permulaan butang, dan tombol tekan kiri dan kanan akan digunakan untuk menggerakkan dayung mengikut arah masing-masing. Paparan 7-Segmen akan digunakan untuk mencatat skor, iaitu jumlah detik yang dimainkan oleh pengguna tanpa kehilangan permainan. Nombor tersebut akan dipaparkan sebagai nombor perpuluhan.
Litar Senibina: Kami akan membina alat kami menggunakan satu FSM yang mengandungi FSM yang lebih kecil, sub-FSM akan mengawal kesukaran permainan sedangkan FSM utama akan mengawal aliran keseluruhan permainan. Alat kami juga akan menggunakan sekurang-kurangnya tiga pembahagi jam, satu untuk skor (masa), satu untuk kadar penyegaran paparan dan satu yang disambungkan ke output dari DeMux sehingga kita dapat mengawal seberapa cepat permainan akan terus bertambah dengan jumlah kesukaran. Permainan akan bergerak lebih pantas lebih lama anda bermain. Kami akan mempunyai input kawalan dari keadaan DeMux dari sub-FSM sehingga kami dapat mengawal seberapa cepat permainan akan berlangsung selama anda memainkannya. Kami akan menggunakan beberapa pembilang, satu untuk menyegarkan paparan dan satu lagi untuk menghitung skor semasa anda terus bermain. Projek ini mempunyai dua modul utama dan pelbagai submodul yang akan memanipulasi data input. Dua submodul utama adalah Pemacu VGA, serta modul logik butang. Pemacu VGA akan terdiri daripada memori yang dapat diprogramkan, pembahagi jam, dan logik yang akan memanipulasi output untuk warna. Modul logik butang juga akan terdiri daripada pembahagi jam, dan memori yang dapat diprogramkan, serta penukar binari hingga perpuluhan untuk Paparan 7-Segmen dengan pembahagi jam masing-masing.
Langkah 2: Proses Imej
Untuk bahagian Proses Imej projek, kami akan menentukan pergerakan bola dan dayung. Program ini mempunyai port yang merangkumi tombol tekan kiri, kanan, atas dan tengah, keadaan sekarang, jam, kedudukan bola X dan Y, tepi kiri dan kanan dayung dan gagal. Keadaan sekarang digunakan untuk menentukan isyarat aktif. Kod tersebut merangkumi beberapa kes yang dapat digerakkan oleh bola, dan telah menetapkan syarat untuk menentukan jalan bola. Blok proses seterusnya menentukan arah pergerakan dayung berdasarkan butang mana yang ditekan oleh pengguna. Kod untuk bahagian projek ini dilampirkan dengan komen terperinci yang menerangkan apa yang dilakukan oleh setiap bahagian.
Langkah 3: Penangan Skor
Bahagian ini terdiri daripada fail yang berkaitan dengan memaparkan skor dalam beberapa saat pada Paparan 7 Segmen di Papan Basys3. Ini termasuk pembahagi jam yang digunakan untuk menghitung detik, penghitung skor mengira detik yang dimainkan oleh pengguna, pemacu segmen mengambil skor dan mengubahnya menjadi anod dan katod untuk ditampilkan di layar dan juga menentukan kedudukan yang nombor akan dipaparkan dan terakhir, pengendali segmen menukar digit binari menjadi digit perpuluhan untuk dipaparkan di skrin. Pengendali skor mengumpulkan semua bahagian dan memetakan isyarat. Kod untuk kelima-lima fail dilampirkan di bawah.
Pembahagi Jam:
Pembahagi jam mempunyai input Clk (jam), CEN (aktifkan masuk), dan Div (pembahagi) dan output Clk_out. Sekiranya isyarat aktif dihidupkan, maka jam akan bergantung pada tepi yang naik.
Pembilang Markah
Penghitung skor mempunyai input Clk (Clock) dan RST (Reset) dan output Clk_Out dan Q yang pada dasarnya bertindak sebagai output skor.
Pemacu Segmen
Pemacu segmen mempunyai input D1, D10, D100, D1000, dan Jam. Nombor selepas "D" merujuk kepada tempat perpuluhan pada paparan 7 segmen. Keluarannya adalah anod dan digit. Jam mengira dan memberikan nombor dan kedudukannya. Sebagai contoh, "9" akan dipaparkan di tempat yang satu dengan "0" di tempat yang beribu-ribu, ratusan dan puluhan. Apabila beralih ke "10", angka sekarang akan menjadi "1" di tempat berpuluh dan "0" di tempat beribu-ribu, ratusan dan satu.
Pengendali Segmen
Pengendali segmen mempunyai digit sebagai input dan katod sebagai outputnya. Ini pada dasarnya nombor binari ke paparan katod untuk mengeluarkan nombor perpuluhan di skrin.
Penangan Skor
Pengendali Skor terdiri daripada empat entiti sebelumnya dan menggabungkan semuanya dan memetakan isyarat. Ia juga membolehkan dan mematikan kaunter berdasarkan keadaan sekarang.
Langkah 4: Penjanaan Imej
Penjanaan gambar terdiri daripada empat komponen: Animasi, Fail Counter, Refresh Image dan Start Counter. Fail-fail ini merujuk bagaimana menghasilkan gambar pada monitor paparan.
Animasi
Fail Animasi mempunyai input Clk (Clock Signal), CEN (hitung mengaktifkan), RST (Reset Signal), B_X (posisi X bola), B_Y (posisi Y bola), P_L (posisi dayung kiri), dan P_R (kedudukan dayung kanan). Keluarannya adalah WA (alamat tempat kami menuliskan warna), dan WD (warna ditulis pada alamat yang ditentukan). Fail ini mempunyai Play_Counter yang merupakan penghitung yang akan digunakan sebagai input kawalan untuk MUX, pengekod yang dapat mengeluarkan warna yang tepat di tempat yang tepat, dan terakhir multiplexer yang menampilkan warna yang betul berdasarkan kedudukan dayung dan bola.
Muat semula Imej
Fail Refresh Image digunakan untuk menyegarkan gambar apabila kedudukan bola dan dayung berubah. Fail tersebut merangkumi komponen dari fail Animasi, Start Counter dan Fail Counter. Ia memetakan isyarat dari setiap komponen dan menggunakan logik keadaan untuk menentukan isyarat dan alamat output.
Mulakan Kaunter
Kaunter Mula menggunakan input Clk, RS, dan CEN dan mengeluarkan WA dan WD. Ia menggunakan pembilang dan penukaran untuk menentukan input kawalan untuk MUX. Multiplexer kemudian menggunakan input untuk menentukan alamat warna yang betul dan menghantar data ini ke pemacu VGA. Ini digunakan untuk menampilkan "Pong" ketika pengguna memulakan permainan.
Kaunter Gagal
Kaunter gagal digunakan untuk menampilkan "Game Over" ketika pengguna kehilangan permainan. Ia mempunyai isyarat Clk, RST, dan CEN. Ia menggunakan pembilang dan formula penukaran untuk menentukan input kawalan untuk MUX. Multiplexer kemudian menggunakan input untuk menentukan alamat warna yang betul dan menghantar data ini ke pemacu VGA.
Langkah 5: Permainan Pong
Bahagian projek ini merangkumi fail Pong Master, Finite State Machine (FSM), Timer, dan Start Debounce.
Pemasa
Pemasa mempunyai input Clk (Jam) dan PS (Keadaan Sekarang) dan Pemasa dan Clk_out sebagai output. Pemasa digunakan untuk mengubah kelajuan permainan setiap lima saat.
Aliran FSM
Flow FSM mempunyai input Clk, Fail, Timer, Bttn_S (Start Button) dan Buttn_RST (Reset Button) dan output Pres_S (Present State Output). FSM menggunakan pemasa untuk mengemas kini keadaan sekarang ke keadaan seterusnya dan terus mengemas kini keadaan seterusnya sehingga permainan mencapai tahap 5 di mana ia kekal sehingga permainan selesai.
Mulakan Tolak
Mula Melantun adalah pantulan permulaan bola. Ia mempunyai input S_in dan Clk, dan output S_out.
Pong MasterFile ini menggunakan semua komponen sebelumnya dan menjadikannya semua komponen seketika. Ini adalah fail utama yang mengumpulkan semua komponen sebelumnya yang telah kita bina bersama.
Langkah 6: Pemacu VGA
Pemacu VGA (Visual Graphics Array) adalah perisian yang digunakan untuk menerima arahan atau data yang dikirim ke layar paparan. Pemandu itu diberikan kepada kami oleh profesor kami. Gunakan pemacu dan kabel VGA untuk menyambungkan papan Basys3 ke monitor.
Anda sekarang harus bersedia untuk membuat Permainan Pong anda sendiri menggunakan VHDL!
Disyorkan:
Permainan Dinosaur Hack Permainan Google Chrome: 9 Langkah
Permainan Dinosaur Hack Google Chrome Games: chrome t-rex run adalah permainan yang sangat menyeronokkan. Di sini kita akan menjadikannya lebih menghiburkan dengan menggunakan Arduino. Permainan dino ini tidak akan muncul di laman sambungan internet. Anda juga boleh melakukannya dengan menggunakan raspberry pi di sini kita membandingkan kedua papan secara terperinci Arduino
Pengawal Permainan DIY Berasaskan Arduino - Pengawal Permainan Arduino PS2 - Bermain Tekken Dengan Gamepad Arduino DIY: 7 Langkah
Pengawal Permainan DIY Berasaskan Arduino | Pengawal Permainan Arduino PS2 | Bermain Tekken Dengan Gamepad Arduino DIY: Hai kawan-kawan, bermain permainan selalu menyeronokkan tetapi bermain dengan permainan peribadi DIY Controller anda lebih menggembirakan. Oleh itu, kami akan menjadikan Pengawal permainan menggunakan arduino pro micro dalam arahan ini
Cara Memuat Naik Permainan ke Arduboy dan 500 Permainan ke Flash-cart: 8 Langkah
Cara Memuat naik Permainan ke Arduboy dan 500 Permainan ke Flash-cart: Saya membuat beberapa Arduboy buatan sendiri dengan memori Serial Flash yang dapat menyimpan maksimum 500 permainan untuk dimainkan di jalan raya. Saya berharap dapat berkongsi cara memuat permainan ke dalamnya, termasuk bagaimana menyimpan permainan ke dalam memori kilat bersiri dan membuat pakej permainan gabungan anda sendiri
Konsol Permainan Mini Ardubaby Dengan 500 Permainan: 10 Langkah
Ardubaby Mini Game Console Dengan 500 Permainan: Kredit kepada pencipta (Kevin Bates), Arduboy adalah konsol permainan 8 bit yang sangat berjaya. Terdapat beribu-ribu permainan yang ditulis oleh penggemar yang membagikannya secara bebas di forum komuniti Arduboy sehingga lebih banyak orang dapat belajar bagaimana membuat kod. Perisian
Cara Memeriksa Jika Permainan Akan Berjalan di Komputer Anda Sebelum Anda Membeli Permainan .: 4 Langkah
Cara Memeriksa Jika Permainan Akan Berjalan di Komputer Anda Sebelum Anda Membeli Permainan: Saya baru-baru ini memperoleh Call of Duty 4 dari seorang rakan (secara percuma saya mungkin menambah) kerana tidak akan berjalan di komputernya. Komputernya agak baru, dan membingungkan saya mengapa ia tidak dapat dijalankan. Oleh itu, setelah beberapa jam mencari di internet, saya terjumpa