Mundarija:

Ikkilikdan o'nli kasrga teng o'yin: 10 qadam
Ikkilikdan o'nli kasrga teng o'yin: 10 qadam

Video: Ikkilikdan o'nli kasrga teng o'yin: 10 qadam

Video: Ikkilikdan o'nli kasrga teng o'yin: 10 qadam
Video: Xotirani kuchaytiruvchi 10 ta SIR. Hamma uchun birdek to'gri keladi! 10 daqiqada 2024, Noyabr
Anonim
Image
Image
Soat ajratgichni sozlash
Soat ajratgichni sozlash

Bu ko'rsatma bizning ikkilikdan o'nli raqamli o'yinni yaratish uchun zarur bo'lgan jarayon va modullarni ko'rsatadi. 60 soniya ichida foydalanuvchilar etti qismli displeyda tasodifiy hosil qilingan o'nlab sonlarni kalitlarni almashtirish va taxmin qilish tugmachasi yordamida ikkilikka tarjima qiladi va kiritadi. Tugatganingizdan so'ng, yakuniy ball ko'rsatiladi va keyin yana o'ynashga qaytariladi.

Ikkilik va tezkor reflekslarni tushunish yaxshi ishlash uchun foydalidir, lekin agar siz qayta urinib ko'rishni xohlasangiz, tiklash tugmasi mavjud.

1 -qadam: Soat ajratgichni sozlash

Butun loyihaning asosi, bu gizmodagi barcha qismlarni to'g'ri sinxronlashdan kelib chiqadi. Bizning cheklangan holat mashinamiz ichki soatdan foydalanadi, lekin etti segmentli displey va taymer soatning o'zgartirilgan versiyasidan foydalanishi kerak.

Bu "yangi soat" har bir aniq komponent uchun zarur bo'lgan ma'lum bir chastotaga erishish uchun ichki soatni kerakli vaqtga bo'lishidan kelib chiqadi. Bu avvalgi laboratoriyalarda qilingan va tajribadan ma'lumki, taymerda "bitta" raqam 0,1 Gts, "o'nlab" raqamlar esa 1 Gts bo'ladi.

Kirish: ClkIn, bo'luvchi (32 bit)

Chiqish: ClkOut

2-qadam: Cheklangan holat mashinasini (FSM) yaratish

Cheklangan holat mashinasini (FSM) yaratish
Cheklangan holat mashinasini (FSM) yaratish
Cheklangan holat mashinasini (FSM) yaratish
Cheklangan holat mashinasini (FSM) yaratish
Cheklangan holat mashinasini (FSM) yaratish
Cheklangan holat mashinasini (FSM) yaratish

Cheklangan holat mashinasida biz beshta kirish (ishga tushirish, qayta o'rnatish, taxmin qilish, tenglashtirish, tugash) bilan beshta holat (Boshlash, Ko'rish, Tekshirish, Baholash va Oxir) zarur deb qaror qildik. Bizning Davlat mashinamizdagi yagona chiqish - bu 3 bitli raqam bo'lib, foydalanuvchi quyidagi holatlarga nisbatan qanday holatda ekanligini ko'rsatadi (000, 001, 011, 101, 100).

Esda tutingki, Cheklangan holat mashinasi aslida quyidagi funktsiyalarni bajarmaydi, aksincha u faqat dastur qanday holatda va nima ekanligini ko'rsatadi. Haqiqatan ham nima bo'lishini quyida tavsiflangan yuqori modul aniqlaydi.

Boshlanish holati (000)

Ishga tushirish holati - bu foydalanuvchi boshlang'ich kiritish baland bo'lguncha boshlanadi, shuningdek, bu tugmani bosish tugmachasini bosilganda ham bo'ladi.

O'yin holati (001)

O'yin holati - bu o'yinning boshlanishi, bu erda tasodifiy son ishlab chiqariladi va foydalanuvchi kirish uchun kalitlarni almashtiradi. Tahmin tugmasi bosilgach, o'yin Tekshirish holatiga o'tkaziladi.

Tekshirish holati (011)

Bu holat taqqoslagich ishlatiladi, bu erda foydalanuvchi kiritgan qiymatlar va tasodifiy hosil qilingan raqamlar solishtiriladi. Agar topshirish to'g'ri bo'lsa, teng qiymat yuqori bo'ladi va FSM Ballar holatiga o'tadi; ammo, agar yuborish noto'g'ri bo'lsa, FSM yuborish to'g'ri bo'lmaguncha ko'rsatish holatiga qaytadi.

Bu tekshirish holati boshqalarga nisbatan nisbatan tez sodir bo'ladi, chunki bu faqat tekshirish tugmasi bosilganda sodir bo'ladi

Ballar holati (101)

Teng qiymat yuqori bo'lganligi sababli, topshirish to'g'ri edi. Bu holatda, ballar qiymati bittaga oshadi va foydalanuvchi kiritishi uchun yangi raqam paydo bo'ladi. Bu yangi raqam bizni boshlang'ich holatiga qaytaradi, u erda foydalanuvchi yana kalitlarni almashtiradi.

Yakuniy holat (100)

60 soniya taymeri tugagandan so'ng, kutish vaqti yuqori bo'ladi va foydalanuvchi yakuniy ball ko'rsatiladigan oxirgi holatiga etadi. Qayta tiklash tugmasi bosiladi va FSM yana boshlang'ich holatida boshlanadi.

Kirish: Clk, birinchi, boshlash, taxmin qilish, teng, tanaffus

Chiqish: holat (3 bit)

3 -qadam: Etti segmentli displeyni xaritalash

Etti segmentli displeyni xaritalash
Etti segmentli displeyni xaritalash
Etti segmentli displeyni xaritalash
Etti segmentli displeyni xaritalash
Etti segmentli displeyni xaritalash
Etti segmentli displeyni xaritalash

Etti segmentli displey butun loyihaning asosiy qismidir, chunki ekrandagi birinchi ikkita raqam tasodifiy sonlar generatorining chiqishi sifatida ishlatiladi, oxirgi ikkita raqam esa taymerdir. Oxirgi laboratoriyada bunga misolni ekranda raqamlar borligi bilan amalga oshirgan bo'lsak -da, u o'n oltilikda ko'rsatildi. Ushbu muammoni hal qilish uchun biz quyida batafsilroq tasvirlangan konvertor va soat ajratgichdan foydalanganmiz.

FSM o'yin holatiga o'tguncha displeyda 0 belgisi ko'rsatiladi; ammo, oxirgi holatda, displeyda faqat foydalanuvchi bahosi ko'rsatilishi kerak.

Biz etti segmentli displeyning to'rtta raqamini ishlatganimiz uchun, har doim yonib turganidek, har bir anodni 300 Gts tezlikda aylantirishimiz kerak.

Kirish: Clk, segensiya

Chiqish: katodlar (7 bit), anodlar (4 bit)

4 -qadam: Komparatorni yaratish

Taqqoslagich yaratish
Taqqoslagich yaratish

Ushbu submodul Check holatida 7 bitli ikkilik kiritilgan taxminni haqiqiy kasrli qiymat bilan solishtirish nuqtai nazaridan ishlatiladi.

Bizda if ifodasi bor edi, u ham kirishni, ham ikkita chiqishni teng qiymat yuqori yoki past bo'lishiga qarab baholadi. Ushbu modul qanchalik muhim bo'lsa ham, bu loyihada loyihalashtirishning eng oddiy dasturlaridan biri hisoblanadi.

Kirish: kalitlar (8 bit), raqam (8 bit)

Chiqish: EQ

5 -qadam: Taymerni sozlash

Taymerni sozlash
Taymerni sozlash
Taymerni sozlash
Taymerni sozlash

Bizning taymerimiz, asosan, har xil tezlik bilan ortib borayotgan ikki xil hisoblagich. "Birining" qiymatidagi bitta hisoblagich (birinchi etti segmentli displey) va "o'nlik" qiymatining bitta hisoblagichi (etti segmentli displeyda ikkinchi raqam). Har bir raqam soatning ko'tarilgan chetiga asoslangan va hisoblagich 60 soniyaga yetganda, vaqt tugashi yuqori bo'ladi va o'yin tugaydi va boshlang'ich holatiga qaytadi.

Kirish: Clk, holati (3 bit), boshlash

Chiqish: joriy (8 bit), tanaffus

6 -qadam: Psevdo tasodifiy sonlar generatorini loyihalash

Psevdo tasodifiy sonlar generatorini loyihalash
Psevdo tasodifiy sonlar generatorini loyihalash

Bu holat uchun maxsus raqamlar generatori uchun boshqa alternativ usul-bu 0-99 (ikkilik) da takrorlanadigan hisoblagichga ega bo'lish, bu kirish yuqori bo'lganida hisoblangan sonni chiqaradi, chunki bu LFSRdan foydalanish zarurligini olib tashlaydi.

Raqam ichki soatning har bir ko'tarilgan qirrasini o'zgartiradi (10 nano-soniya) va bitta mikrosaniyada 100 ta raqamni aylanib o'tadi. Qachonki foydalanuvchi raqamlar generatoridan yangi raqamni xohlasa, u o'z raqamini chiqaradi, Garchi bu jarayon umuman tasodifiy bo'lmasa-da, bu jarayondan tegishli natijalarni topish ehtimoli psevdo-tasodifiy darajada past.

Kirish: Clk, changenum, teng

Chiqish: raqam (8 bit)

7 -qadam: Konverter yaratish

Konverter yaratish
Konverter yaratish

Kerakli komponent - bu o'n oltinchi raqamli displeyda o'n oltilik raqamlar o'rniga o'n oltilik raqamlarni ko'rsatish uchun ishlatiladigan Konverter. Garchi ikkala raqam ham 7 bitli ikkilik raqamga asoslangan bo'lsa -da, biz o'n oltilikni o'nli kasrga aylantirish uchun mo'ljallangan butun modulni yaratdik.

Misol uchun, agar bizning yakuniy natijamiz 0010001 (o'n etti) bo'lsa, etti segmentli displeyda o'nli o'nli 17 o'rniga o'n oltilik raqam ko'rsatiladi.

Kirish: Numin (8 bit)

Chiqish: raqam (8 bit)

8 -qadam: O'yin modulida hamma narsani birlashtirish

O'yin modulida hamma narsani birlashtirish
O'yin modulida hamma narsani birlashtirish
O'yin modulida hamma narsani birlashtirish
O'yin modulida hamma narsani birlashtirish
O'yin modulida hamma narsani birlashtirish
O'yin modulida hamma narsani birlashtirish
O'yin modulida hamma narsani birlashtirish
O'yin modulida hamma narsani birlashtirish

Komponentlarimiz uchun biz foydalanuvchini almashtirish uchun 0-6 kerakli kalitlardan foydalanganmiz, uchta tugmachani ishga tushirish, qayta o'rnatish va taxmin qilish uchun foydalanuvchi kiritish vazifasini bajaradi. Etti segmentli displey va soat komponentlari, shuningdek, biz oldingi laboratoriyalarda qilingan, lekin bu loyihaga mos kelish uchun o'zgartirishimiz kerak bo'lgan komponentlardir.

Biz ushbu loyihani oltita modulga ajratdik, bu butun sirni ko'plab ishchi qismlarga ajratish uchun, lekin ularni ulash usuli juda murakkab va biriktirilgan qora qutidagi rasmda ko'rsatilgan.

O'yin davom etayotgan paytda, foydalanuvchini ishlatishni bildirish uchun 7 ta LED yonadi va o'yin tugagach, biz ham LEDlarning miltillashini dasturlashtirdik.

Kirishlar: kalitlar (8 bit), Clk, qayta o'rnatish, boshlash, taxmin qilish

Chiqish: katodlar (7 bit), anotlar (4 bit), LEDlar (7 bit)

9 -qadam: Qo'shimcha muammolar yuzaga keldi

Bu o'yinda faqat etti kalit ishlatilgan bo'lsa -da, kodda 8 bitli raqam o'rnatilgan. Biz bu 8 bitni tasodifiy sonlar generatoridan ishlab chiqarilgan 8 bitli raqam bilan solishtiradigan qulayroq taqqoslagichga ega bo'lish uchun qildik.

Hisob bizga avvaliga biroz muammo tug'dirdi, chunki biz FSM ballar holatida bo'lganida biz uni bir ochkoga oshirdik. lekin buning o'rniga nima bo'ldi, shtat davom etar ekan, hisob bizda asossiz yuqori ballni berib turdi. Biz buni 8 -qadamdagi kodda ko'rinib turganidek, soatning ko'tarilgan qirrasi bilan sinxronlangan puls signalini qo'shish orqali aniqladik.

Nihoyat, taymer disk raskadrovka qilish uchun ko'p vaqt talab qildi, chunki u hisobni etti segmentli displeyni buzadi, shuning uchun biz uni 60 dan pastga 0 dan 0 ga qadar o'zgartirishga majbur bo'ldik.

10 -qadam: Manba fayllari va cheklovlar

Agar siz o'z fayllaringizni yaratishni emas, balki manba fayllarimizdan olishni xohlasangiz, mana ular. Bundan tashqari, cheklash fayli kiritilgan.

Tavsiya: