Mündəricat:

FPGA Asteroid Oyunu: 7 Adım (Şəkillərlə birlikdə)
FPGA Asteroid Oyunu: 7 Adım (Şəkillərlə birlikdə)

Video: FPGA Asteroid Oyunu: 7 Adım (Şəkillərlə birlikdə)

Video: FPGA Asteroid Oyunu: 7 Adım (Şəkillərlə birlikdə)
Video: Intel'e Sorduk: 13. Nesil İşlemciler, Arc Ekran Kartları ve Şirketin Planları 2024, Oktyabr
Anonim
FPGA Asteroid Oyunu
FPGA Asteroid Oyunu

CPE 133 Final Layihəmiz üçün FPGA-da iki düymə açarı və 7 seqmentli ekran istifadə edərək bir asteroid oyunu yaratmağa qərar verdik. Oyun, bir asteroidin təsadüfi seçilmiş üç cərgədən birində meydana gəlməsi və 7 seqmentli ekranın digər tərəfindəki gəmiyə doğru irəliləməsi üçün işləyir. Gəminizi asteroid yolundan çıxarmaq üçün yuxarı və aşağı düymələrdən istifadə etmək olar. Bunu etmədikdə, ekran bir an üçün 'BAnG' yazır və sonra istifadəçi yenidən cəhd edə bilməsi üçün oyunu tez bir zamanda yenidən başlatır. Aşağıdakılar, hər hansı bir istifadəçinin dizaynımızı təkrarlaya və ya təkmilləşdirə bilməsi üçün layihənin necə edildiyinin qısa təsviridir.

Addım 1: Baxış

Baxış
Baxış
Baxış
Baxış

Layihə, əsasən gəmi və qaya mövqelərinin fərqli dəyərlərini saxlayan və göstərən dövlətlər arasında FPGA ötürmək üçün məntiqdən istifadə edən Sonlu Dövlət Maşınlarından (FSM) ibarətdir. İki əsas modul, rock və gəmi üçün oyun FSM'ləri və VHDL-də çox sadə bir quruluş modeli istifadə edərək bir araya gətirilən ikili 7 seqmentli ekran dekoder FSM-dir.

FSM-lər gəminin mövqeyi, qaya mövqeyi və 7 seqmentli dekoder üçün yaradılmışdır. Gəminin FSM -nin məqsədi, oyunçu yuxarı və ya aşağı düyməni basdıqda gəminin düzgün mövqeyə keçə bilməsidir. FSM lazımdır, çünki düzgün mövqeyə keçmək üçün hansı mövqedə sonuncu yerdə olduğunu xatırlamalıdır.

Rokun FSM -nin məqsədi, qaya hansı cərgədə olduğuna və bu cərgədəki son mövqeyinə görə düzgün mövqeyə keçməkdir. Əlavə olaraq, onu nümayiş etdirəcək modulun mövqeyini izləyir və yalançı təsadüfi olaraq sonrakıda görünəcək yeni bir sıra seçir.

7 seqmentli ekran deşifratoru üçün FSM yalnız gəmi və qayanı göstərmək üçün deyil, həm də gəmi mövqeyi və qaya mövqeyi eyni olduqda "BAnG" göstərmək üçün istifadə edilmişdir.

Addım 2: Materiallar

Layihədə istifadə olunan materiallar:

  • Digilent, Inc -dən Basys3 İnkişaf Şurası
  • Vivado Design Suite
  • sseg_dec.vhd (Bu fayl bizə Polylearn -da verilmiş və Bryan Mealy tərəfindən yazılmışdır)
  • Clk_div.vhd (Bu fayl bizə Polylearn -da verilmiş və Bryan Mealy tərəfindən yazılmışdır)
  • Üç Sonlu Maşın (FSM)

Addım 3: Oyunun hazırlanması

Oyunun hazırlanması
Oyunun hazırlanması
Oyunun hazırlanması
Oyunun hazırlanması
Oyunun hazırlanması
Oyunun hazırlanması
Oyunun hazırlanması
Oyunun hazırlanması

Oyun modulu, öz FSM -ləri üçün gəminin və rokun vəziyyətini təsvir etmək üçün davranış modelləşdirməsindən istifadə etməklə yaradılmışdır. Bunun üstünlüyü ondan ibarətdir ki, aparatın dizaynı üçün lazım olan bütün komponentləri anlamaqdansa, nə etdiyini təsvir edərək davranışı davranış qaydasında modelləşdirmək daha asandır.

Qaya vəziyyətləri, qaya ilk mövqeyi üçün yalançı təsadüfi ədədlər generatoru istifadə edərək edildi. Bunu həyata keçirmək üçün generatora oyunun sürətinə nisbətən son dərəcə sürətli olan öz saatını verdik. Hər yüksələn kənarda üç bitlik bir rəqəm artırılır və bütün dəyərləri gəmi üçün üç başlanğıc vəziyyətindən birinə uyğundur. Buna görə üç dəyər 3 mövqeyə (sağ üst), üçü 7 mövqeyə (ortada) və ikisi 11 mövqeyə (aşağı sağda) uyğundur.

Təsadüfi nəsil meydana gəldikdən və asteroidə ilkin vəziyyət verildikdən sonra heç bir fasilə vermədən gəmiyə doğru üfüqi olaraq axır.

0 ← 1 ← 2 ← 3

4 ← 5 ← 6 ← 7

11 ← 10 ← 9 ← 8

Rokun növbəti vəziyyət məntiqi üçün istifadə olunan saat oyunun sürətini idarə edir; sınaq və səhv nəticəsində 9999999 -un maksimum sayı üçün yaxşı bir dəyər olduğunu gördük.

Gəminin məntiqi, sol tərəfdəki mərkəz mövqeyinə (mövqe 4) başlayaraq işləyir. Yuxarı və ya aşağı düyməyə basıldığı təqdirdə, gəmi basılan düyməyə uyğun olaraq 0 və 11 mövqeyinə yuxarı və aşağı hərəkət edəcək.

Gəmi hərəkətinin istifadəçi üçün yaxşı olmasını təmin etmək üçün onun hərəkətini asenkron etmədik. Vəziyyət dəyişiklikləri üçün bir saat istifadə etdik və maksimum 5555555 sayından istifadə etdik.

Addım 4: Nəticənin göstərilməsi

İkili 7-seqmentli dekoder gəmi və asteroid üçün 4 bitlik mövqe dəyişənlərini qəbul edir və uyğun görüntünü (gəmi və qaya və ya "BAnG" mesajı) göstərir.

Bunu əvvəlcə hər ikisinin bərabər olub olmadığını yoxlamaqla və sonra çek doğru olarsa "BAnG" mesajını göstərməklə həyata keçirir.

Düzgün qayıtmazsa, dekoder gəmi və qaya arasında çox yüksək bir saat tezliyində keçərək və eyni anda nümayiş etdirildiyi kimi gözlə aldadaraq onları göstərəcək.

Addım 5: Hamısını bir yerə yığın

Hamısını bir araya gətirmək
Hamısını bir araya gətirmək

Gəminin və rokun FSM -ni FSM ekranına bağladığımız böyük bir FSM -də əhatə etdik. Oyuna girişlər BASYS3 lövhəsindəki yuxarı və aşağı düymələr və sistem saatlarıdır. Çıxışlar yeddi seqmentli displey və anod vektorlarıdır.

Bu girişlər və çıxışlar liman xəritələndiyi məhdudiyyətlər sənədində görünəcək.

Addım 6: Gələcək dəyişikliklər

Gələcəkdə, layihəyə daha çox gəmi hərəkəti funksiyası əlavə etmək bir inkişaf olardı. Bu, daha 2 düymə girişi verərək və gəminin 0, 4 və 8 -dən başqa mövqelər (vəziyyətlər) almasına icazə verməklə həyata keçirilə bilər. Başqa bir mümkün dəyişiklik, asteroidin yavaş -yavaş başlaması və sürəti artırması üçün növbəti vəziyyət zamanlamasına nəzarət etmək ola bilər. Gəmini vurduqdan sonra hər dəfə 1,5 dəfə qaçır və yenidən yavaşlayacaq. Bu, oyunun çətinliyini artırar və tətbiq olunarsa istifadəçi üçün daha əyləncəli olardı və hər dəfə asteroid düşməyəndə bu dəyişəni 1,5 ilə vuraraq rokun növbəti vəziyyət saatının maksimum sayına görə bir dəyişən yaradaraq edilə bilərdi. vurmayın və qaya hər dəfə vuranda onu ilkin dəyərinə qaytarın.

Addım 7: Nəticə

Bu layihə, sonlu maşınları, saatları və interaktiv olaraq yeddi seqmentli displeylərdə göstərilməsini daha yaxşı başa düşməyimizə kömək etdi.

Sonlu vəziyyət maşınları haqqında ən böyük şey, istədiyiniz vəziyyətə keçmək üçün hazırda hansı vəziyyətdə olduğunuzu bilməyinizin (xatırlamağın) vacib olmasıdır. Qəribədir, yaxşı həyat məsləhətləri; hara getdiyini bilmək üçün hara getdiyini bilməlisən.

Fərqli saat nümunələrini manipulyasiya edərək, təsadüfi olaraq rəqəmlər yarada, qayanı növbəti mövqeyə keçirə və gəminin, qaya və oyun sonu mesajının göstərilməsini idarə edə bildik.

Öyrəndik ki, birdən çox anod eyni vaxtda göstərilə bilməz. Bizə verilən modul, insan gözünün fərqi yalnız müəyyən bir tezliyə qədər görə biləcəyindən istifadə etdi. Buna görə daha yüksək keçid anodları seçildi. Eyni zamanda görünən gəmi və qaya əslində bir işarədir, çünki hər biri ayrı -ayrılıqda, lakin çox tez nümayiş olunur. Bu konsepsiya gəminin, qayanın hərəkətini və "BAnG" mesajını göstərmək üçün tətbiq edilmişdir.

Tövsiyə: