Daftar Isi:

Permainan Pong: 6 Langkah
Permainan Pong: 6 Langkah

Video: Permainan Pong: 6 Langkah

Video: Permainan Pong: 6 Langkah
Video: Permainan Pong-Pong Balong 2024, Juli
Anonim
Permainan Pong
Permainan Pong

Bahan:

Papan FPGA Basys3

kabel VGA

hidup

Tujuan dari instruksi ini adalah untuk mengembangkan permainan Pong yang akan ditampilkan di monitor. Proyek ini akan menggunakan VHDL untuk memprogram dan menggunakan Basys3 FPGA untuk menjalankan kode dan mentransfer gambar menggunakan antarmuka VGA. Tutorial ini ditujukan untuk orang-orang yang memiliki sedikit pengetahuan sebelumnya tentang VHDL. Tutorial akan dibagi menjadi 6 bagian yang berbeda: Gambaran Umum, Proses, Pengendali Skor, Pembuatan Gambar, Game Pong, dan VGA.

Langkah 1: Ikhtisar

Gambaran
Gambaran

Gambar di atas adalah desain skema keseluruhan proyek

Tujuan Permainan:

Permainan ini terdiri dari tampilan dengan dayung geser yang dapat dikendalikan oleh pengguna, dan dinding tetap yang bertindak sebagai batas atas. Ketika pengguna menekan tombol start, yang merupakan tombol atas, bola akan mulai memantul ke atas, dan akan memantul dari dinding dan mencoba untuk memukul dayung. Jika bola mengenai dayung, bola akan memantul lagi dan terus memantul sampai meleset dari dayung. Permainan berakhir ketika bola gagal mengenai dayung. Pengguna akan dapat menggunakan tombol tekan kiri dan kanan untuk menentukan pergerakan dayung. Untuk mengatur ulang permainan, pengguna harus menekan tombol tengah. Waktu lari akan direkam pada layar 7 segmen. Ada lima level, dan setiap sepuluh detik levelnya meningkat, sampai Anda mencapai level 5 di mana ia tetap sampai pengguna kalah. Level ditentukan oleh kecepatan bola; ini berarti bahwa setiap sepuluh detik, kecepatan bola meningkat, sehingga meningkatkan kesulitan permainan.

Sistem arsitektur:

Diagram di bawah ini adalah diagram blok tingkat atas dasar keseluruhan untuk sistem. Sistem memiliki empat input: Tombol R, Tombol L, Mulai, dan Atur Ulang, dan Jam. Ini memiliki output sinkronisasi horizontal dan vertikal, RBG (yang mengacu pada warna piksel di lokasi tertentu), dan Skor (yang bertindak sebagai bus ke tampilan 7-Segmen). Tombol atas akan digunakan sebagai awal tombol, dan tombol tekan kiri dan kanan akan digunakan untuk menggerakkan dayung ke arah masing-masing. Tampilan 7-Segmen akan digunakan untuk mencatat skor, yaitu jumlah detik yang telah dimainkan pengguna tanpa kehilangan permainan. Angka tersebut akan ditampilkan sebagai angka desimal.

Arsitektur Sirkuit: Kami akan membangun alat kami menggunakan satu FSM yang berisi FSM yang lebih kecil, sub-FSM akan mengontrol kesulitan permainan sedangkan FSM utama akan mengontrol keseluruhan aliran permainan. Alat kami juga akan menggunakan setidaknya tiga pembagi jam, satu untuk skor (waktu), satu untuk kecepatan refresh tampilan dan satu lagi yang terhubung ke output DeMux sehingga kami dapat mengontrol seberapa cepat permainan akan melanjutkan dengan meningkatnya jumlah kesulitan. Permainan akan bergerak lebih cepat semakin lama Anda bermain. Kami akan memiliki input kontrol dari DeMux menjadi status sub-FSM sehingga kami dapat mengontrol seberapa cepat permainan akan berjalan dengan berapa lama Anda memainkannya. Kami akan menggunakan beberapa penghitung, satu untuk menyegarkan tampilan dan satu untuk menghitung skor saat Anda terus bermain. Proyek ini memiliki dua modul utama dan larik submodul yang akan memanipulasi data masukan. Dua submodul utama adalah Driver VGA, serta modul logika tombol. Driver VGA akan terdiri dari memori yang dapat diprogram, pembagi jam, dan logika yang akan memanipulasi output untuk warna. Modul logika tombol juga akan terdiri dari pembagi jam, dan memori yang dapat diprogram, serta konverter biner ke desimal untuk Tampilan 7-Segmen dengan pembagi jam masing-masing.

Langkah 2: Proses Gambar

Untuk bagian Proses Gambar proyek, kami akan menentukan pergerakan bola dan dayung. Program ini memiliki port yang mencakup tombol tekan kiri, kanan, atas dan tengah, status saat ini, jam, posisi bola X dan Y, tepi kiri dan kanan dayung, dan gagal. Status saat ini digunakan untuk menentukan sinyal yang diaktifkan. Kode tersebut mencakup beberapa kasus yang bola dapat bergerak, dan telah menetapkan kondisi untuk menentukan jalur bola. Blok proses selanjutnya menentukan arah gerakan dayung berdasarkan tombol mana yang ditekan oleh pengguna. Kode untuk bagian proyek ini dilampirkan dengan komentar terperinci yang menjelaskan apa yang dilakukan setiap bagian.

Langkah 3: Pengendali Skor

Pengendali Skor
Pengendali Skor

Bagian ini terdiri dari file yang berhubungan dengan menampilkan skor dalam hitungan detik pada Tampilan 7 Segmen di Basys3 Board. Ini termasuk pembagi jam yang digunakan untuk menghitung detik, penghitung skor menghitung detik yang dimainkan pengguna, pengemudi segmen mengambil skor dan mengubahnya menjadi anoda dan katoda untuk ditampilkan di layar dan juga menentukan posisi yang nomor akan ditampilkan dan terakhir, handler segmen mengubah angka biner menjadi angka desimal untuk ditampilkan di layar. Pengendali skor mengumpulkan semua bagian dan memetakan sinyal. Kode untuk kelima file terlampir di bawah ini.

Pembagi jam:

Pembagi jam memiliki masukan Clk(jam), CEN(aktifkan masuk), dan Div(pembagi) dan keluaran Clk_out. Jika sinyal pengaktifan menyala, maka jam akan menghitung sisi naik.

Penghitung Skor

Penghitung skor memiliki input Clk(Clock) dan RST(Reset) dan output Clk_Out dan Q yang pada dasarnya bertindak sebagai output skor.

Penggerak Segmen

Driver segmen memiliki input D1, D10, D100, D1000, dan Clock. Angka setelah "D" mengacu pada tempat desimal pada tampilan 7 segmen. Outputnya adalah anoda dan digit. Jam menghitung dan menetapkan angka dan posisinya. Misalnya, "9" akan ditampilkan di tempat satuan dengan "0" di tempat ribuan, ratusan dan puluhan. Ketika beralih ke "10", nomor tersebut sekarang akan memiliki "1" di tempat puluhan dan "0" di tempat ribuan, ratusan dan satuan.

Pengendali Segmen

Handler segmen memiliki digit sebagai inputnya dan katoda sebagai outputnya. Ini pada dasarnya angka biner ke layar katoda untuk menampilkan angka desimal di layar.

Pengendali Skor

Score Handler terdiri dari empat entitas sebelumnya dan menyatukan semuanya dan memetakan sinyal. Ini juga mengaktifkan dan menonaktifkan penghitung berdasarkan status saat ini.

Langkah 4: Pembuatan Gambar

Pembuatan gambar terdiri dari empat komponen: Animation, Fail Counter, Refresh Image dan Start Counter. File-file ini merujuk pada cara menghasilkan gambar pada monitor tampilan.

Animasi

File Animasi memiliki input Clk(Sinyal Jam), CEN(pengaktifan hitungan), RST(Sinyal Reset), B_X(posisi X bola), B_Y(posisi Y Bola), P_L(posisi dayung kiri), dan P_R (posisi dayung kanan). Outputnya adalah WA (alamat kita menulis warna), dan WD (warna yang ditulis di alamat yang ditentukan). File tersebut memiliki Play_Counter yaitu penghitung yang akan digunakan sebagai input kontrol untuk MUX, encoder yang dapat mengeluarkan warna yang benar di tempat yang tepat, dan terakhir adalah multiplexer yang menampilkan warna yang benar berdasarkan posisi dayung dan bola.

Segarkan Gambar

File Refresh Image digunakan untuk me-refresh gambar saat posisi bola dan dayung berubah. File tersebut mencakup komponen dari file Animation, Start Counter dan Fail Counter. Ini memetakan sinyal dari setiap komponen dan menggunakan logika keadaan untuk menentukan sinyal dan alamat keluaran.

Mulai Penghitung

Start Counter menggunakan input Clk, RS, dan CEN dan output WA dan WD. Ini menggunakan penghitung dan konversi untuk menentukan input kontrol untuk MUX. Multiplexer kemudian menggunakan input untuk menentukan alamat warna yang benar dan mengirimkan data ini ke driver VGA. Ini digunakan untuk menampilkan "Pong" saat pengguna memulai permainan.

Penghitung Gagal

Penghitung gagal digunakan untuk menampilkan "Game Over" ketika pengguna kalah dalam permainan. Ini memiliki sinyal Clk, RST, dan CEN. Ini menggunakan penghitung dan formula konversi untuk menentukan input kontrol untuk MUX. Multiplexer kemudian menggunakan input untuk menentukan alamat warna yang benar dan mengirimkan data ini ke driver VGA.

Langkah 5: Permainan Pong

Permainan Pong
Permainan Pong

Bagian proyek ini mencakup file Pong Master, Finite State Machine (FSM), Timer, dan Start Debounce.

pengatur waktu

Timer memiliki input Clk(Clock) dan PS(Present State) dan Timer dan Clk_out sebagai output. Timer digunakan untuk mengubah kecepatan permainan setiap lima detik.

Aliran FSM

Aliran FSM memiliki input Clk, Fail, Timer, Bttn_S(Start Button) dan Buttn_RST(Reset Button) dan output Pres_S(Present State Output). FSM menggunakan timer untuk memperbarui Status Sekarang ke Status Berikutnya dan terus memperbarui Status Berikutnya hingga permainan mencapai level 5 di mana ia tetap sampai permainan selesai.

Mulai Debounce

Start Debounce adalah pantulan awal bola. Ini memiliki input S_in dan Clk, dan output S_out.

Pong Master File ini menggunakan semua komponen sebelumnya dan membuat semua komponen menjadi instan. Ini adalah file master yang menyatukan semua komponen sebelumnya yang telah kita buat bersama.

Langkah 6: Driver VGA

Driver VGA (Visual Graphics Array) adalah perangkat lunak yang digunakan untuk menerima perintah atau data yang dikirim ke layar tampilan. Sopir diberikan kepada kami oleh profesor kami. Gunakan driver dan kabel VGA untuk menyambungkan papan Basys3 ke monitor.

Anda sekarang harus siap untuk membuat Game Pong Anda sendiri menggunakan VHDL!

Direkomendasikan: