Mundarija:

Mina qidiruvchi: 5 qadam (rasmlar bilan)
Mina qidiruvchi: 5 qadam (rasmlar bilan)

Video: Mina qidiruvchi: 5 qadam (rasmlar bilan)

Video: Mina qidiruvchi: 5 qadam (rasmlar bilan)
Video: Nilufar Hamidova || Nilufar Xamidova || Nilufar Hamidova rasmlari 2024, Iyul
Anonim
Mina qidiruvchi
Mina qidiruvchi

CPE 133 yakuniy loyihasi uchun, biz va biz VHDL kodini, Basys-3 taxtasidan kirishni o'zgartirish va tugmachani ishlatadigan "mina qidiruvchi" o'yinini yaratishga qaror qildik. O'yinning yaxshi nomi "ruscha ruletka" bo'lishi mumkin, lekin biz oilaviy nomga ega bo'lishni xohladik. O'yin foydalanuvchini tasodifiy ravishda bomba bilan "faol" bo'lgan 16 ta kalitdan birini tanlash uchun Basys doskasidagi o'rta tugmani bosishni o'z ichiga oladi. Keyin ikkita o'yinchi navbatma -navbat kalitlarni birma -bir aylantiradilar, shunda o'yinchilardan biri "bomba" bilan kalitni ag'daradi. Bu sodir bo'lganda, etti segmentli displey o'yinchilarni o'yinchi o'yinni yutqazgani haqida ogohlantiradi.

1 -qadam: umumiy nuqtai

Loyihada biz ushbu chorak davomida ishlatgan ko'plab VHDL modullari ishlatilgan. Kalitlardan birini faollashtirish uchun tasodifiy to'rt bitli raqamni simulyatsiya qilish uchun soat qirrasi bilan birgalikda to'rt bitli hisoblagich ishlatilgan. Etti segmentli displeyga turli xil so'zlarni chiqarish uchun holat sxemasi ham ishlatilgan, o'yinchilar o'rtasida "PLAY" dan tortib, o'yinchilarning biri faol kalitni aylantirganda "LOSE" ga qadar.

2 -qadam: materiallar

  • Digilent, Inc.dan Basys3 ishlab chiqish kengashi.
  • Vivado Design Suite BC_DEC.vhd (Bu fayl bizga Polylearn -da taqdim etilgan va Bryan Meali tomonidan yozilgan)
  • T flip floplardan tayyorlangan 4 bitli hisoblagich
  • FSM

3 -qadam: O'yinni yaratish

O'yin yaratish
O'yin yaratish
O'yin yaratish
O'yin yaratish

O'yinni boshlashdagi birinchi qadam biz foydalanadigan barcha komponentlar bilan sxemani chizish edi. Ushbu tizim uchun kirishlar 1 -tugma, 16 ta kalit va Soat edi. Chiqish etti segmentli displey va anodlar edi. O'chirish sxemasini tuzgandan so'ng, biz Vivadodagi har bir komponent uchun alohida manba fayllarini yozdik va ularni asosiy manba fayli ostidagi port xaritalari yordamida birlashtirdik.

O'yinning asosi tasodifiy ravishda 16 ta kalitdan bomba bilan faol bo'lishni tayinlashdan iborat bo'lib, o'yinchilar bu kalit yoqilmaguncha qaysi kalit faol ekanligini bilishmaydi. Biz tasodifiy va soxta tasodifiy sonlar generatorlarini Internetda ko'rib chiqdik, lekin oxir-oqibat biz 4-bitli hisoblagichni ishlatish va tegishli kalitni faolligini belgilash biz qidirayotgan narsaga etarlicha tasodifiy deb qaror qildik. Biz bu topshiriqni bajarish uchun avvalgi loyihada yaratgan 4-bitli hisoblagichimizni o'zgartira oldik. Biz hisoblagich yordamida 0-15 oralig'ida tasodifiy sonni yaratdik; keyin main1 komponentasida biz tasodifiy sonning kasrli ekvivalentini bortdagi mos keladigan kalitga tayinladik. Sxemada ko'rinib turibdiki, main1 komponentidan X chiqishi ("faol bomba") ham, o'yinchilar yoqadigan kalitlar ham FSM1 ga o'tadi. Davlat mashinasi bir bitli Z qiymatini chiqaradi, keyin BC_DEC1 tomonidan o'qiladi. Biz foydalangan Cheklangan holat mashinasi ikki xil holatga ega: A holatida etti segmentli displey "PLAY" ni chiqaradi va mashina yoqilgan tugma aylantirilishini tan olmaguncha shu holatda qoladi. Bu sodir bo'lgach, FSM B holatiga o'tadi, u erda "LOSE" ni etti segmentli displeyga chiqaradi va barcha 16 kalit "0" ga o'tkazilguncha shu holatda qoladi. Bu shart bajarilganda, FSM yana A holatiga o'tadi va o'yinchilarni boshqa o'yin boshlanishini kutadi. Ushbu FSMni tushunishga yordam beradigan Mur diagrammasi yuqorida ko'rsatilgan.

4 -qadam: kelajakdagi o'zgarishlar

O'yinga kiritmoqchi bo'lgan bir nechta o'zgartirishlar, maydonga ko'proq bomba qo'shish (ehtimol birdan uchtaga ko'payishi), hisoblagich va bir nechta raund qo'shishni o'z ichiga oladi. Oxir -oqibat, biz ushbu yaxshilanishlarga qarshi qaror qabul qildik, chunki uzoq yoki kengaytirilgan o'yin odatda uch yoki to'rt marta aylanib o'tgandan keyin tugagan o'yinga qaraganda ancha keskinroq va oxirida qiziqarli bo'lganini aniqladik.

5 -qadam: Xulosa

Biz ushbu loyihaning yakuniy natijasidan juda xursand bo'ldik; O'yinning oxirgi versiyasi o'ynash qiziqarli bo'lgani uchun emas, balki loyihani yaratish va dasturlash bizni, agar biz bu chorakda o'rganganlarimizning ko'pini ishlatmasak ham, ko'pchiligidan foydalanishni talab qilgani uchun. Biz flip -floplar, hisoblagichlar, FSM -lar, soat, doskadan foydalanuvchi kiritishi va etti segmentli displeyga chiqishdan foydalandik.

Biz, shuningdek, bir nechta sintaksik xatolar qanday qilib dasturni butunlay buzishi mumkinligini bilib oldik (hatto ular Python yoki Java kabi boshqa dasturlash tillarida yaxshi deb hisoblansa ham) va faqat bir nechta simulyatsiya va kodning bir necha marta takrorlanishi yuklangan va sinovdan o'tkazilgandan keyingina. taxtasi, siz oxir -oqibat kodingizdagi barcha xatolarni bartaraf qila olasizmi?

Tavsiya: