LED Timer Game: 6 Steps

LED Timer Game: 6 Steps

Isi kandungan:

Anonim

Oleh: Jonathan Flores dan Colton Petiprin

Projek ini adalah mudah dan mudah membuat permainan yang diprogramkan menggunakan Lembaga FPGA Baysis 3 Artix-7. Main permainan permainan ini mempunyai satu LED pada yang bergerak bolak-balik pada baris 5. Objektifnya adalah untuk menekan butang tepat pada masanya LED tengah beralih kepada peningkatan skor anda. Kami menggunakan warna LED yang berbeza untuk menjadikan objektif ini jelas. Menekan butang terlalu awal atau terlambat mencetuskan kerugian dan skor anda akan ditetapkan semula kepada sifar. Untuk mencipta semula projek ini sendiri, pengalaman sebelumnya dengan reka bentuk digital dan pengekodan VHDL akan sangat disyorkan.

Semua fail yang kami gunakan dilampirkan dan boleh dimuat turun untuk kegunaan anda sendiri. Tutorial ini berstruktur merujuk kepada fail dan modul ini.

Bekalan:

Langkah 1: Layout

Susun atur tahap tinggi dan reka bentuk projek ini terdiri daripada 5 modul dan ditulis menggunakan pemodelan struktur VHDL. Dua daripada modul ini adalah reka bentuk asal kami. Input tahap tertinggi kami ialah dua port std_logic: satu untuk papan papan baysis, dan satu untuk input butang. Output output ialah 5 bit std_logic_vector sepadan dengan LED, std_logic_vector 8 bit untuk papan tujuh katoda segmen, dan akhirnya std_logic_vector 4 bit untuk papan tujuh anod segmen. Pelabuhan-pelabuhan ini ditetapkan dalam fail kekangan kami dan tersedia untuk rujukan.

Langkah 2: Posisi Posisi Mesin Negeri

Dalam modul ini, kami memodenkan mesin negeri yang matlamat utama adalah untuk memberi isyarat apa yang LED akan dihidupkan berasaskan apa keadaannya dan akan mengeluarkan isyarat apabila pendahulu tengah dihidupkan. Mesin negara ini terdiri daripada 8 negeri. Bermula dari satu negara di bahagian paling kiri LED untuk menyatakan 5 pada bahagian paling kanan LED dan kemudian kembali ke arah yang lain sehingga keadaan 8 di kedua dari kiri LED Apabila LED berada di negeri tengah (Negeri 3 atau negeri 7) ia akan mengeluarkan '1' kepada modul yang berbeza yang akan mengambil maklumat itu untuk menentukan sama ada anda menjaringkan sesuatu atau tidak. (Jika butang ditekan manakala output adalah '1' yang bermaksud keadaan tengah, maka anda mendapat satu titik)

Langkah 3: Modul Logik Permainan

Modul ini pada dasarnya adalah peringkat pertengahan antara mesin kedudukan kedudukan dan tujuh penyahkod seg. Ia akan mengambil output dari mesin kedudukan kedudukan sebagai input (boardSIn = '1' setiap kali LED tengah menyala dan '0' sebaliknya) dan kemudian, berdasarkan butang butang, memutuskan sama ada untuk meningkatkan skor atau menetapkan semula skor kepada sifar. Jika boardSIn (papan lembaga masuk) adalah '1' dan butang itu ditekan, skornya meningkat, jika butang ditekan pada bila-bila masa apabila boardSin = '0' maka ia akan menetapkan semula skor kepada sifar. Apabila kami membuat kod ini, VHDL secara automatik mencipta skor yang mencukupi supaya skor akan disimpan (diingati) dan kemudian berubah dengan sewajarnya.

Langkah 4: Modul Lain

Tiga komponen seterusnya bukanlah rekaan kami dan semua kredit pergi kepada pengarang asal. Kami membuat pengubahsuaian kecil untuk menyesuaikan masa.

Modul SSEG_DEC disediakan oleh profesor kami. Modul ini mengambil dalam vektor 8 bit sebagai nombor dan mendekodkannya untuk dipaparkan pada papan FPGA tujuh paparan segmen. Di samping itu kerana reka bentuk lembaga FGPA, bila-bila masa digit dipaparkan, ia memaparkan pada semua segmen yang diaktifkan. Ini adalah masalah apabila anda mahu memaparkan nombor berbilang digit. Modul ini mendapat sekitar ini dengan berbasikal melalui digit yang berbeza di lokasi yang berbeza lebih cepat daripada yang dapat dilihat oleh manusia. Ini membetulkan masalah yang disebutkan.

Mod pembahagi jam adalah satu yang mudah yang mengambil isyarat jam dan melambatkan frekuensi sebagai outputnya membolehkan kitaran jam lebih perlahan daripada papan lalai. Ini diperlukan agar LED berkelip pada kelajuan yang munasabah.

Modul terakhir menangani masalah yang dipanggil butang melantun. Ini berlaku apabila butang ditekan kerana terdapat sedikit penurunan tinggi dan rendah sebelum isyarat stabil, di samping itu butang apabila ditekan untuk beberapa milisaat, dibaca sebagai aliran berterusan yang tinggi. Masalah-masalah ini perlu untuk menyelesaikan projek ini untuk berfungsi sebagai masa yang penting dan dengan sewajarnya menetapkannya, skor tidak akan meningkat dengan betul.

Modul debounce mengendalikannya dengan memegang isyarat butang untuk beberapa mikrosecond dan memeriksa sama ada isyarat berubah pada masa itu. Modul ini hanya akan mengeluarkan satu contoh yang tinggi berbanding isyarat berterusan yang menyelesaikan masalah kita hampir keseluruhannya. Semua kredit untuk modul ini pergi kepada pengarang artikel ini: http: //www.nandland.com/goboard/debounce-switch-p …

Untuk penjelasan lanjut kami mengesyorkan menyemak artikel tersebut.

Langkah 5: Fail

Langkah 6: Projek Kerja

Mudah-mudahan sekarang permainan anda berjalan dan berjalan. Terima kasih kerana menyemak projek kami!