Isi kandungan:

Permainan Pemadan Perduaan hingga Perpuluhan: 10 Langkah
Permainan Pemadan Perduaan hingga Perpuluhan: 10 Langkah

Video: Permainan Pemadan Perduaan hingga Perpuluhan: 10 Langkah

Video: Permainan Pemadan Perduaan hingga Perpuluhan: 10 Langkah
Video: Asas Sains komputer Tingkatan 1 : sistem nombor perduaan 2024, Julai
Anonim
Image
Image
Menyiapkan Pembahagi Jam
Menyiapkan Pembahagi Jam

Instruksional ini akan menunjukkan proses dan modul yang diperlukan untuk membuat permainan Binary to Decimal Matching kami. Dalam masa 60 saat, pengguna akan menerjemahkan dan memasukkan sebilangan besar nombor perpuluhan yang dihasilkan secara rawak pada paparan tujuh segmen menjadi binari dengan menukar suis dan menghantar dengan butang tekaan. Setelah selesai, skor akhir akan dipaparkan dan kemudian diset semula untuk dimainkan semula.

Memahami refleks binari dan cepat bermanfaat untuk dilakukan dengan baik, tetapi butang set semula disediakan sekiranya seseorang ingin mencuba lagi dengan serta-merta.

Langkah 1: Menyiapkan Pembahagi Jam

Tulang belakang keseluruhan projek ini berasal dari penyegerakan yang betul dari semua bahagian dalam alat ini. Mesin Keadaan Terhingga kami menggunakan jam dalaman, tetapi paparan dan pemasa tujuh segmen mesti menggunakan versi jam yang diubah.

"Jam baru" ini berasal dari membahagi jam dalaman dengan jangka masa yang diinginkan untuk mencapai frekuensi tertentu yang diperlukan untuk setiap komponen tertentu. Ini telah dilakukan di makmal sebelumnya dan dari pengalaman, kita tahu pemasa mempunyai digit "seseorang" hingga 0.1 Hz, dan digit "puluhan" adalah 1 Hz

Input: ClkIn, pembahagi (32 bit)

Keluaran: ClkOut

Langkah 2: Membuat Mesin Keadaan Terhad (FSM)

Membuat Mesin Keadaan Terhingga (FSM)
Membuat Mesin Keadaan Terhingga (FSM)
Membuat Mesin Keadaan Terhingga (FSM)
Membuat Mesin Keadaan Terhingga (FSM)
Membuat Mesin Keadaan Terhingga (FSM)
Membuat Mesin Keadaan Terhingga (FSM)

Dalam Mesin Keadaan Terhingga, kami memutuskan bahawa lima keadaan (Mula, Paparan, Periksa, Skor dan Akhir) diperlukan dengan lima input (mula, tetapkan semula, kira, sama, habis masa). Satu-satunya output dalam Mesin Negeri kami adalah nombor 3 bit yang menunjukkan keadaan pengguna (000, 001, 011, 101, 100) berkenaan dengan keadaan di bawah.

Ingat bahawa Mesin Keadaan Terhingga sebenarnya tidak membentuk fungsi di bawah, sebaliknya hanya memberitahu keadaan program dan apa. Apa yang sebenarnya berlaku ditentukan oleh modul teratas yang dijelaskan di bawah.

Negeri Mula (000)

Status Mula adalah di mana pengguna akan bermula sehingga input mula tinggi, ini juga keadaan yang akan dicapai setiap kali butang reset ditekan.

Keadaan Permainan (001)

State Game adalah permulaan permainan, di mana nombor rawak dihasilkan dan pengguna beralih suis untuk membuat input. Setelah butang teka ditekan, permainan akan dipindahkan ke Status Pemeriksaan.

Periksa Negeri (011)

Keadaan ini adalah tempat pembanding digunakan, yang akan membandingkan nilai input pengguna dan nombor yang dihasilkan secara rawak. Sekiranya penghantaran betul, nilai yang sama tinggi dan FSM pergi ke Negeri Skor; namun, jika pengiriman tidak betul, FSM kembali ke Status Paparan sehingga penyerahannya betul.

Status Pemeriksaan ini berlaku dengan cepat berbanding yang lain, kerana ini hanya berlaku selagi butang cek ditekan

Keadaan Markah (101)

Oleh kerana nilai yang sama tinggi, pengiriman betul. Dalam keadaan ini, nilai skor akan meningkat satu dan nombor baru akan dihasilkan untuk pengguna memasukkan. Nombor baru ini membawa kita kembali ke Mula Keadaan di mana pengguna sekali lagi akan menukar suis.

Negeri Akhir (100)

Setelah pemasa 60 saat habis, masukan tamat akan menjadi tinggi dan pengguna mencapai Status Akhir di mana skor akhir dipaparkan. Input set semula kemudian akan ditekan dan FSM bermula semula di Status Mula sekali lagi.

Input: Clk, rst, mula, kira, sama, habis masa

Keluaran: keadaan (3 bit)

Langkah 3: Memetakan Paparan Tujuh Segmen

Memetakan Paparan Tujuh Segmen
Memetakan Paparan Tujuh Segmen
Memetakan Paparan Tujuh Segmen
Memetakan Paparan Tujuh Segmen
Memetakan Paparan Tujuh Segmen
Memetakan Paparan Tujuh Segmen

Paparan Tujuh Segmen adalah bahagian penting dari keseluruhan projek kerana dua digit pertama di skrin digunakan sebagai output penjana nombor rawak, sementara dua digit terakhir adalah pemasa. Walaupun kami telah menerapkan contoh ini di makmal terakhir dalam hal mempunyai digit di layar, ia dipaparkan dalam heksadesimal. Untuk menyelesaikan masalah ini, kami menggunakan penukar dan pembahagi jam yang dijelaskan lebih lanjut di bawah.

Paparan menunjukkan semua 0 sehingga FSM memasuki keadaan permainan; namun, dalam keadaan akhir, paparan harus menunjukkan skor pengguna.

Oleh kerana kita menggunakan keempat-empat digit dari paparan tujuh segmen, kita perlu menelusuri setiap anod cukup cepat pada 300 Hz agar dapat dirasakan seperti selalu menyala.

Input: Clk, sevensegment

Keluaran: katod (7 bit), anod (4 bit)

Langkah 4: Membuat Perbandingan

Membuat Perbandingan
Membuat Perbandingan

Submodul ini digunakan di State Check dari segi perbandingannya dengan teka-teki input bit 7 bit dengan nilai perpuluhan sebenar.

Kami mempunyai pernyataan if yang menilai kedua input dan dua output bergantung pada sama ada nilai yang sama tinggi atau rendah. Sama pentingnya dengan modul ini, sejauh ini merupakan salah satu program yang lebih mudah untuk dirancang dalam projek ini.

Input: suis (8 bit), nombor (8 bit)

Keluaran: EQ

Langkah 5: Menyiapkan Pemasa

Menyiapkan Pemasa
Menyiapkan Pemasa
Menyiapkan Pemasa
Menyiapkan Pemasa

Pemasa kami pada dasarnya adalah dua kaunter berbeza yang meningkat dengan kadar yang berbeza. Satu kaunter dalam nilai "one", (paparan tujuh segmen pertama) dan satu kaunter untuk nilai "sepuluh" (digit kedua pada paparan tujuh segmen). Setiap digit didasarkan pada kelebihan jam, dan setelah penghitung mencapai 60 saat, time_out akan tinggi dan permainan akan berakhir dan kembali ke keadaan permulaan.

Input: Clk, nyatakan (3 bit), mulakan

Keluaran: Semasa (8 bit), tamat masa

Langkah 6: Merancang Penjana Nombor Rawak Pseudo

Merancang Penjana Nombor Rawak Pseudo
Merancang Penjana Nombor Rawak Pseudo

Kaedah alternatif lain untuk penjana nombor khusus untuk kes ini adalah dengan memiliki pembilang berulang dari 0-99 (dalam binari) yang mengeluarkan nombor yang dihitung ketika inputnya tinggi, kerana ini akan menghilangkan keperluan untuk menggunakan LFSR.

Nombor itu berubah setiap hujung jam dalaman yang meningkat (10 nano-saat) dan memutar semua 100 nombor dalam satu mikrodetik. Setiap kali pengguna menginginkan nombor baru dari penjana nombor, ia mengeluarkan nombor yang ada, Walaupun proses ini tidak sepenuhnya rawak, kebarangkalian untuk mencari output yang berkaitan dari proses ini cukup rendah untuk menjadi pseudo-random.

Input: Clk, changenum, sama

Keluaran: nombor (8 bit)

Langkah 7: Membuat Penukar

Membuat Penukar
Membuat Penukar

Komponen yang diperlukan adalah Penukar, yang kami gunakan untuk memaparkan nombor perpuluhan pada paparan tujuh segmen dan bukannya heksadesimal asal. Walaupun kedua-dua nombor berdasarkan nombor Binari 7 bit, kami membuat keseluruhan modul yang ditunjuk untuk menukar heksadesimal hingga perpuluhan.

Sebagai contoh, jika hasil akhir kami untuk skor adalah 0010001 (tujuh belas), paparan tujuh segmen akan menunjukkan nilai heksadesimal 11, bukannya nombor perpuluhan 17.

Input: Numin (8 bit)

Keluaran: Numout (8 bit)

Langkah 8: Menggabungkan Semuanya dalam Modul Permainan

Menggabungkan Semuanya dalam Modul Permainan
Menggabungkan Semuanya dalam Modul Permainan
Menggabungkan Semuanya dalam Modul Permainan
Menggabungkan Semuanya dalam Modul Permainan
Menggabungkan Semuanya dalam Modul Permainan
Menggabungkan Semuanya dalam Modul Permainan
Menggabungkan Semuanya dalam Modul Permainan
Menggabungkan Semuanya dalam Modul Permainan

Untuk komponen kami, kami menggunakan suis 0-6 yang diperlukan agar pengguna beralih, dengan tiga butang untuk bertindak sebagai input pengguna untuk memulakan, menetapkan semula, dan meneka. Komponen paparan dan jam tujuh segmen juga merupakan komponen yang telah kita lakukan dari makmal sebelumnya tetapi terpaksa diubah agar sesuai dengan projek ini.

Kami membahagikan projek ini kepada enam modul yang ditunjukkan di atas untuk menguraikan keseluruhan alat kepada banyak bahagian yang berfungsi, namun cara penyambungannya agak rumit dan ditunjukkan dari gambar kotak hitam yang dilampirkan.

Semasa permainan sedang berlangsung, 7 LED menyala untuk memberi tahu pengguna yang beralih untuk digunakan, dan ketika permainan berakhir, kami juga memprogram LED untuk menyala

Input: suis (8 bit), Clk, set semula, mulakan, tekaan

Keluaran: katod (7 bit), anod (4 bit), LED (7 bit)

Langkah 9: Masalah Tambahan Yang Dialami

Walaupun hanya tujuh suis yang digunakan dalam permainan ini, kod itu ditetapkan sebagai nombor 8 bit. Kami melakukan ini untuk mempunyai pembanding yang lebih mudah yang akan membandingkan 8 bit ini dengan nombor 8 bit yang kami hasilkan dari penjana nombor rawak.

Skor juga memberi kami sedikit masalah pada awalnya kerana kami menetapkannya untuk meningkatkan satu mata ketika FSM berada dalam keadaan skor; namun apa yang berlaku adalah skor terus meningkat selagi keadaan berlangsung, memberi kita skor tinggi yang tidak masuk akal yang tidak dapat kita hadapi. Kami memperbaikinya dengan menambahkan isyarat denyut yang diselaraskan dengan tepi jam yang meningkat, seperti yang terlihat dalam kod pada langkah 8.

Akhirnya, pemasa memerlukan banyak masa untuk melakukan debug kerana akan memesongkan paparan tujuh segmen kami ketika ia mengira ke bawah, jadi kami harus mengubahnya dari menghitung mundur dari 60 ke menghitung dari 0.

Langkah 10: Fail Sumber dan Kekangan

Sekiranya anda lebih suka menarik dari fail sumber kami daripada membuat sendiri, inilah dia. Juga, fail kekangan disertakan.

Disyorkan: