Daftar Isi:

Game Pencocokan Biner ke Desimal: 10 Langkah
Game Pencocokan Biner ke Desimal: 10 Langkah

Video: Game Pencocokan Biner ke Desimal: 10 Langkah

Video: Game Pencocokan Biner ke Desimal: 10 Langkah
Video: Konsep Mudah bilangan biner ke desimal 2024, November
Anonim
Image
Image
Menyiapkan Pembagi Jam
Menyiapkan Pembagi Jam

Instruksi ini akan menunjukkan proses dan modul yang diperlukan untuk membuat game Pencocokan Biner ke Desimal kami. Dalam 60 detik, pengguna akan menerjemahkan dan memasukkan sebanyak mungkin angka desimal yang dihasilkan secara acak pada tampilan tujuh segmen ke dalam biner dengan mengaktifkan sakelar dan mengirimkannya dengan tombol tebak. Setelah selesai, skor akhir akan ditampilkan dan kemudian diatur ulang untuk bermain lagi.

Memahami refleks biner dan cepat bermanfaat untuk dilakukan dengan baik, tetapi tombol reset disediakan jika seseorang ingin segera mencoba lagi.

Langkah 1: Menyiapkan Pembagi Jam

Tulang punggung seluruh proyek ini berasal dari sinkronisasi yang benar dari semua bagian dalam alat ini. Mesin Finite State kami menggunakan jam internal, tetapi tampilan dan pengatur waktu tujuh segmen harus menggunakan versi jam yang diubah.

"Jam baru" ini berasal dari membagi jam internal dengan periode yang diinginkan untuk mencapai frekuensi tertentu yang diperlukan untuk setiap komponen tertentu. Ini telah dilakukan di lab sebelumnya dan dari pengalaman, kita tahu timer memiliki digit "satu" yang disetel ke 0,1 Hz, dan digit "puluhan" menjadi 1 Hz

Input: ClkIn, pembagi (32 bit)

Keluaran: ClkOut

Langkah 2: Membuat Mesin Finite-State (FSM)

Membuat Mesin Finite-State (FSM)
Membuat Mesin Finite-State (FSM)
Membuat Mesin Finite-State (FSM)
Membuat Mesin Finite-State (FSM)
Membuat Mesin Finite-State (FSM)
Membuat Mesin Finite-State (FSM)

Di Mesin Finite-State kami, kami memutuskan bahwa lima status (Mulai, Tampilan, Periksa, Skor, dan Akhir) akan diperlukan dengan lima input (mulai, setel ulang, tebak, sama, batas waktu). Satu-satunya output di State Machine kami adalah angka 3 bit yang mewakili status pengguna (000, 001, 011, 101, 100) sehubungan dengan status di bawah ini.

Ingat bahwa Finite State Machine tidak benar-benar membentuk fungsi di bawah ini, melainkan hanya memberi tahu status program dan apa. Apa yang sebenarnya terjadi ditentukan oleh modul teratas yang dijelaskan di bawah ini.

Status Awal (000)

Start State adalah dimana pengguna akan memulai hingga input start tinggi, ini juga merupakan state yang akan dicapai setiap kali tombol reset ditekan.

Status Permainan (001)

Status Game adalah awal permainan, di mana nomor acak dihasilkan dan pengguna mengaktifkan sakelar untuk membuat input. Setelah tombol tebak ditekan, permainan dipindahkan ke Status Periksa.

Periksa Status (011)

Keadaan ini adalah tempat komparator digunakan, yang akan membandingkan nilai input pengguna dan angka yang dihasilkan secara acak. Jika pengajuan benar, nilai yang sama tinggi dan FSM masuk ke Status Skor; namun, jika pengiriman salah, FSM kembali ke Status Tampilan hingga pengiriman benar.

Kondisi Periksa ini terjadi relatif cepat dibandingkan dengan yang lain, karena hanya terjadi selama tombol centang ditekan

Status Skor (101)

Karena nilai yang sama tinggi, pengajuan itu benar. Dalam keadaan ini, nilai skor akan meningkat satu dan nomor baru akan dibuat untuk dimasukkan pengguna. Nomor baru ini membawa kita kembali ke Status Awal di mana pengguna akan sekali lagi mengaktifkan sakelar.

Status Akhir (100)

Setelah penghitung waktu 60 detik habis, input batas waktu akan tinggi dan pengguna mencapai Status Akhir di mana skor akhir ditampilkan. Input reset kemudian akan ditekan dan FSM memulai kembali pada Start State lagi.

Input: Clk, pertama, mulai, tebak, sama, batas waktu

Keluaran: keadaan (3 bit)

Langkah 3: Memetakan Tampilan Tujuh Segmen

Memetakan Tampilan Tujuh Segmen
Memetakan Tampilan Tujuh Segmen
Memetakan Tampilan Tujuh Segmen
Memetakan Tampilan Tujuh Segmen
Memetakan Tampilan Tujuh Segmen
Memetakan Tampilan Tujuh Segmen

Tampilan Tujuh Segmen adalah bagian penting dari keseluruhan proyek karena dua digit pertama di layar digunakan sebagai output dari generator angka acak, sedangkan dua digit terakhir adalah pengatur waktu. Meskipun kami telah menerapkan contoh ini di lab terakhir dalam hal memiliki angka di layar, itu ditampilkan dalam heksadesimal. Untuk memperbaiki masalah ini, kami menggunakan konverter dan pembagi jam yang dijelaskan lebih lanjut di bawah ini.

Layar menampilkan semua 0 sampai FSM memasuki status permainan; namun, pada kondisi akhir, tampilan seharusnya hanya menampilkan skor pengguna.

Karena kita menggunakan keempat digit tampilan tujuh segmen, kita perlu menggilir setiap anoda cukup cepat pada 300 Hz agar dianggap selalu menyala.

Masukan: Clk, sevensegment

Output: katoda (7 bit), anoda (4 bit)

Langkah 4: Membuat Komparator

Membuat Komparator
Membuat Komparator

Submodul ini digunakan dalam Check State dalam hal bagaimana membandingkan tebakan biner 7 bit yang dimasukkan versus nilai desimal yang sebenarnya.

Kami memiliki pernyataan if yang mengevaluasi input dan dua output tergantung pada apakah nilai yang sama tinggi atau rendah. Sama pentingnya dengan modul ini, sejauh ini merupakan salah satu program yang lebih sederhana untuk dirancang dalam proyek ini.

Input: sakelar (8 bit), angka (8 bit)

Keluaran: EQ

Langkah 5: Menyiapkan Timer

Menyiapkan Timer
Menyiapkan Timer
Menyiapkan Timer
Menyiapkan Timer

Timer kami pada dasarnya adalah dua penghitung berbeda yang meningkat pada tingkat yang berbeda. Satu penghitung dalam nilai "satu", (tampilan tujuh segmen pertama) dan satu penghitung untuk nilai "sepuluh" (digit kedua pada tampilan tujuh segmen). Setiap digit didasarkan dari tepi naik jam, dan setelah penghitung mencapai 60 detik, time_out akan tinggi dan permainan akan berakhir dan kembali ke keadaan awal.

Input: Clk, status (3 bit), mulai

Output: Saat ini (8 bit), batas waktu

Langkah 6: Mendesain Generator Angka Acak Pseudo

Merancang Generator Angka Acak Pseudo
Merancang Generator Angka Acak Pseudo

Metode alternatif lain untuk generator angka khusus untuk kasus ini adalah memiliki penghitung berulang dari 0-99 (dalam biner) yang mengeluarkan angka yang dihitung ketika inputnya tinggi, karena ini akan menghilangkan kebutuhan untuk menggunakan LFSR.

Angka berubah setiap tepi naik jam internal (10 nano-detik) dan berputar melalui semua 100 angka dalam satu mikrodetik. Setiap kali pengguna menginginkan nomor baru dari pembuat nomor, itu menampilkan nomor itu, Meskipun proses ini tidak sepenuhnya acak, kemungkinan menemukan keluaran terkait dari proses ini cukup rendah untuk menjadi pseudo-acak.

Input: Clk, changenum, sama

Keluaran: angka (8 bit)

Langkah 7: Membuat Konverter

Membuat Konverter
Membuat Konverter

Komponen yang diperlukan adalah Konverter, yang kami gunakan untuk menampilkan angka desimal pada tampilan tujuh segmen alih-alih heksadesimal asli. Meskipun kedua angka didasarkan pada angka Biner 7 bit, kami membuat seluruh modul yang dirancang untuk mengubah heksadesimal ke desimal.

Misalnya, jika hasil akhir kami untuk skor adalah 0010001 (tujuh belas), tampilan tujuh segmen akan menampilkan nilai heksadesimal 11, bukan angka desimal 17.

Masukan: Numin(8 bit)

Keluaran: Jumlah (8 bit)

Langkah 8: Menyatukan Semuanya dalam Modul Game

Menyatukan Semuanya dalam Modul Game
Menyatukan Semuanya dalam Modul Game
Menyatukan Semuanya dalam Modul Game
Menyatukan Semuanya dalam Modul Game
Menyatukan Semuanya dalam Modul Game
Menyatukan Semuanya dalam Modul Game
Menyatukan Semuanya dalam Modul Game
Menyatukan Semuanya dalam Modul Game

Untuk komponen kami, kami menggunakan sakelar 0-6 yang diperlukan bagi pengguna untuk beralih, dengan tiga tombol untuk bertindak sebagai input pengguna untuk memulai, mengatur ulang, dan menebak. Tampilan tujuh segmen dan komponen jam juga merupakan komponen yang telah kami kerjakan dari lab sebelumnya tetapi harus diubah agar sesuai dengan proyek ini.

Kami membagi proyek ini menjadi enam modul yang ditunjukkan di atas untuk memecah seluruh alat menjadi banyak bagian kerja, namun cara mereka terhubung cukup rumit dan ditunjukkan dari gambar kotak hitam terlampir.

Saat permainan sedang berlangsung, 7 LED menyala untuk memberi tahu pengguna mana yang beralih untuk digunakan, dan saat permainan berakhir, kami juga memprogram LED untuk berkedip

Input: sakelar (8 bit), Clk, reset, start, tebak

Output: katoda (7 bit), anoda (4 bit), LED (7 bit)

Langkah 9: Masalah Ekstra Dihadapi

Meskipun hanya tujuh sakelar yang digunakan dalam game ini, kode tersebut menetapkannya sebagai angka 8 bit. Kami melakukan ini untuk memiliki pembanding yang lebih nyaman yang akan membandingkan 8 bit ini dengan angka 8 bit yang kami hasilkan dari generator angka acak.

Skor tersebut juga membuat kami sedikit kesulitan pada awalnya karena kami mengaturnya untuk menambah satu poin ketika FSM dalam keadaan skor; namun yang terjadi adalah bahwa skor terus meningkat selama keadaan aktif, memberi kami skor tinggi yang tidak masuk akal yang tidak dapat kami tangani. Kami memperbaikinya dengan menambahkan sinyal pulsa yang disinkronkan dengan tepi naik jam, seperti yang terlihat pada kode pada langkah 8.

Akhirnya, penghitung waktu membutuhkan banyak waktu untuk debug karena akan mendistorsi tampilan tujuh segmen kami saat menghitung mundur, jadi kami harus mengubahnya dari menghitung mundur dari 60 menjadi menghitung naik dari 0.

Langkah 10: File Sumber dan Batasan

Jika Anda lebih suka menarik dari file sumber kami daripada membuatnya sendiri, ini dia. Juga, file kendala disertakan.

Direkomendasikan: