Mundarija:
- 1 -qadam: umumiy nuqtai
- 2 -qadam: materiallar
- 3 -qadam: O'yinni yaratish
- 4 -qadam: natijani ko'rsatish
- 5 -qadam: Hammasini bir joyga to'plash
- 6 -qadam: kelajakdagi o'zgarishlar
- 7 -qadam: Xulosa
Video: FPGA asteroid o'yini: 7 qadam (rasmlar bilan)
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:28
CPE 133 yakuniy loyihasi uchun biz FPGA-da ikkita tugmachali kalit va 7 segmentli displey yordamida asteroidlar o'yinini yaratishga qaror qildik. O'yin shunday ishlaydi, asteroid tasodifiy tanlangan uchta qatordan birida paydo bo'ladi va 7 segmentli displeyning boshqa tomonidagi kemaga qarab harakatlanadi. Yuqori va pastki tugma yordamida kemangizni asteroid yo'lidan olib chiqish mumkin. Agar bu bajarilmasa, displey bir zum "BAnG" ni o'qiydi va keyin o'yinni tezda qayta boshlaydi, shunda foydalanuvchi qayta urinishi mumkin. Quyida loyiha qanday yaratilgani haqida qisqacha ma'lumot berilgan, shunda har qanday foydalanuvchi bizning dizaynimizni takrorlashi yoki takomillashtirishi mumkin.
1 -qadam: umumiy nuqtai
Loyiha, asosan, kema va rok pozitsiyalarining har xil qiymatlarini saqlaydigan va ko'rsatadigan davlatlar o'rtasida FPGAni uzatish uchun mantiqdan foydalanadigan Cheklangan holat mashinalaridan (FSM) iborat. Ikkita asosiy modul-bu rok va kema uchun FSM o'yinlari va VHDLda juda oddiy konstruktiv model yordamida birlashtirilgan 7-segmentli ekranli dekoder FSM.
FSMlar kema joylashuvi, qoyaning holati va 7 segmentli dekoder uchun yaratilgan. Kema FSM -ning maqsadi shundaki, o'yinchi yuqoriga yoki pastga tugmachasini bosganda, kema to'g'ri holatiga o'tishi mumkin. FSM kerak, chunki u to'g'ri pozitsiyaga o'tish uchun oxirgi pozitsiyasini eslab qolishi kerak.
Rokning FSM -ning maqsadi - toshni qaysi qatorda joylashganiga va bu satrdagi oxirgi pozitsiyaga qarab to'g'ri holatga o'tkazish. Bundan tashqari, u uni ko'rsatadigan modulning pozitsiyasini kuzatib boradi va psevdo-tasodifan keyingi qatorda paydo bo'ladigan yangi qatorni tanlaydi.
7-segmentli dekoder uchun FSM nafaqat kema va qoyani ko'rsatish uchun, balki kema holati va qoyaning joylashuvi bir xil bo'lganida "BAnG" ni ko'rsatish uchun ham ishlatilgan.
2 -qadam: materiallar
Loyihada quyidagi materiallar ishlatilgan:
- Digilent, Inc.dan Basys3 ishlab chiqish kengashi.
- Vivado dizayn to'plami
- sseg_dec.vhd (Bu fayl bizga Polylearn -da taqdim etilgan va Bryan Meali tomonidan yozilgan)
- Clk_div.vhd (Bu fayl bizga Polylearn -da taqdim etilgan va Bryan Meali tomonidan yozilgan)
- Uchta cheklangan davlat mashinasi (FSM)
3 -qadam: O'yinni yaratish
O'yin moduli o'z FSM -lari uchun kema va rok holatini tavsiflash uchun xulq -atvorli modellashtirish yordamida yaratilgan. Buning afzalligi shundaki, uskunani loyihalash uchun zarur bo'lgan barcha komponentlarni aniqlab olish o'rniga, nima qilayotganini tasvirlab, xulq -atvorni modellashtirish ancha oson.
Rok holatlari toshning birinchi o'rni uchun psevdo tasodifiy sonlar generatori yordamida amalga oshirilgan. Buni amalga oshirish uchun biz generatorga o'yin tezligiga nisbatan juda tez bo'lgan o'z soatini berdik. Har bir ko'tarilgan chekkada uch bitli raqam qo'shiladi va uning barcha qiymatlari kema uchun uchta boshlanish holatidan biriga to'g'ri keladi. Shunday qilib, uchta qiymat 3 -pozitsiyaga (yuqori o'ngda), uchtasi 7 -pozitsiyaga (o'rtada) va ikkitasi 11 -pozitsiyaga (pastki o'ngda) to'g'ri keladi.
Tasodifiy avlod vujudga kelganidan va asteroidga dastlabki holat berilganidan so'ng, u gorizontal ravishda kema tomon uzluksiz oqadi.
0 ← 1 ← 2 ← 3
4 ← 5 ← 6 ← 7
11 ← 10 ← 9 ← 8
Rokning keyingi holat mantig'i uchun ishlatiladigan soat o'yin tezligini boshqaradi; sinov va xato orqali biz 9999999 maksimal hisoblash uchun yaxshi qiymat ekanligini aniqladik.
Kema mantig'i chap tomonning markaziy pozitsiyasini (4 -pozitsiya) ishga tushirish orqali ishlaydi. Agar yuqori tugma yoki pastki tugma bosilsa, kema yuqoriga va pastga bosilgan tugmachaga mos keladigan 0 va 11 holatiga o'tadi.
Kema harakati foydalanuvchi uchun yaxshi bo'lishi uchun biz uning harakatini asenkron qilmadik. Biz soatning holatini o'zgartirish uchun foydalanganmiz va biz maksimal 5555555 sonini ishlatganmiz.
4 -qadam: natijani ko'rsatish
Ikkilikdan 7 segmentgacha bo'lgan dekoder kema va asteroid uchun 4-bitli joylashuv o'zgaruvchilarini oladi va tegishli tasvirni ko'rsatadi (yoki kema va tosh yoki "BAnG" xabari).
U buni birinchi navbatda ikkalasining tengligini tekshirish orqali amalga oshiradi, so'ngra "rost" qaytarsa "BAnG" xabarini ko'rsatadi.
Agar u qaytmasa, dekoder kema va toshni juda yuqori soat chastotasida almashtirib, ularni bir vaqtning o'zida ko'rsatilgandek aldaydi.
5 -qadam: Hammasini bir joyga to'plash
Biz kemaning va rokning FSM -ni FSM displeyiga ulangan bitta katta FSM -ni o'z ichiga olganmiz. O'yinga kirishlar BASYS3 kartasidagi yuqoriga va pastga va tizim soatiga tushadi. Chiqish-segment va anod vektorlari, etti segmentli displey.
Bu kirishlar va chiqishlar port xaritasi bo'lgan cheklovlar faylida ko'rinadi.
6 -qadam: kelajakdagi o'zgarishlar
Kelgusida, loyihaga kema harakati funksiyasini qo'shish yaxshilanish bo'ladi. Bunga yana 2 ta tugmachani kiritish va kema 0, 4 va 8 dan boshqa pozitsiyalarni (holatlarni) egallashiga ruxsat berish orqali erishish mumkin, asteroidning keyingi holatini nazorat qilish mumkin, shunda u asta -sekin boshlanadi va tezlikni oshiradi. Har safar kemani o'tkazib yuborganida, u zarba bo'lmaguncha, uni qayta ishga tushiradi va sekinlashadi. Bu o'yinning murakkabligini oshiradi va agar u amalga oshirilsa, foydalanuvchi uchun yanada qiziqarli bo'ladi va asteroid yoqilmaganda bu o'zgaruvchini 1,5 ga ko'paytirib, rokning keyingi holati soatining maksimal soni uchun o'zgaruvchini yaratish mumkin. zarba bermaydi va har safar rok urilganda uni dastlabki qiymatiga qaytaradi.
7 -qadam: Xulosa
Bu loyiha bizga oxirgi segmentli mashinalarni, soatlarni va interaktiv tarzda etti segmentli displeylarda ko'rsatishni yaxshiroq tushunishga yordam berdi.
Cheklangan holatdagi mashinalar haqida eng katta narsa shundaki, keyingi kerakli holatga o'tish uchun hozirda qanday holatda ekanligingizni bilish (eslab qolish) muhim. Qizig'i shundaki, hayot haqida yaxshi maslahat; qayerga ketayotganingizni bilishingiz kerak.
Soatlarning har xil holatlarini manipulyatsiya qilish orqali biz tasodifiy sonlarni ishlab chiqarishga, toshni keyingi holatga o'tkazishga, kema, tosh va o'yin tugashi haqidagi xabarni boshqarishga muvaffaq bo'ldik.
Biz bir vaqtning o'zida bir nechta anodni ko'rsatish mumkin emasligini bilib oldik. Bizga berilgan modulning afzalligi shundaki, inson ko'zi faqat ma'lum bir chastotagacha farqni ko'ra oladi. Shunday qilib, anodlarni almashtirishning yuqori chastotasi tanlandi. Bir vaqtning o'zida ko'riladigan kema va tosh - bu ishora, chunki ularning har biri alohida, lekin juda tez ko'rsatiladi. Bu tushuncha kema, qoyaning harakatini va "BAnG" xabarini ko'rsatish uchun qo'llanilgan.
Tavsiya:
DIY 37 Led Arduino ruletka o'yini: 3 qadam (rasmlar bilan)
DIY 37 Led Arduino Ruletka O'yini: Ruletka - bu g'ildirak ma'nosini anglatuvchi frantsuzcha so'z bilan atalgan kazino o'yini
BBC Micro: bit and Scratch - Rulda va haydashning interaktiv o'yini: 5 qadam (rasmlar bilan)
BBC Micro: bit and Scratch - Rulda va haydashning interaktiv o'yini: Bu hafta mening dars vazifalarimdan biri - biz yozgan Scratch dasturi bilan bog'lanish uchun BBC Micro: bitdan foydalanish. Men bu ThreadBoard -dan o'rnatilgan tizimni yaratish uchun ajoyib imkoniyat deb o'yladim! Tirilish uchun ilhomim p
Arduino yordamida 3d labirint o'yini: 8 qadam (rasmlar bilan)
Arduino yordamida 3d labirint o'yini: Salom do'stlar, bugun biz ARDUINO UNO yordamida labirint o'yinini o'tkazmoqchimiz, chunki Arduino Uno eng ko'p ishlatiladigan taxta bo'lib, u bilan o'yin qilish juda zo'r. Bu yo'riqnomada joystiklar yordamida boshqariladigan labirint o'yinini yaratishga ruxsat bering, unutmang
FPGA reaktsiyasi o'yini: 10 qadam
FPGA reaktsiyasi o'yini: Yoz Rezerford va Regita Soetandar tomonidan
QuizzPi, Python bilan Raspberry Pi trivia o'yini: 7 qadam (rasmlar bilan)
QuizzPi, Python bilan Raspberry Pi trivia o'yini: QuizzPi - arja tipidagi trivia o'yini. QuizzPi tug'ilgan, chunki men qizimga o'yin -kulgi berishim kerak edi. U 7 yoshda va u allaqachon yangi texnologiyalardan foydalanishni talab qilmoqda, g'oya ham qiziqarli, ham o'qimishli narsalarni yaratish edi