Mündəricat:
- Addım 1: Baxış
- Addım 2: Şəkil prosesi
- Addım 3: Hesab İşləyicisi
- Addım 4: Şəkil Yaratma
- Addım 5: Pong Oyunu
- Addım 6: VGA Sürücü
Video: Pong Oyunu: 6 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:46
Materiallar:
Basys3 FPGA lövhəsi
VGA kabeli
Vivado
Bu təlimatın məqsədi bir monitorda nümayiş olunacaq bir Pong oyunu inkişaf etdirməkdir. Layihə proqramlaşdırmaq üçün VHDL -dən istifadə edəcək və kodu yerinə yetirmək üçün Basys3 FPGA -dan istifadə edir və görüntünü VGA interfeysindən istifadə edərək ötürür. Bu təlimat VHDL haqqında bir az əvvəl məlumatı olan insanlar üçün nəzərdə tutulmuşdur. Dərslik 6 fərqli hissəyə bölünəcək: Baxış, Proses, Skor İşləyicisi, Görüntü Yaratma, Pong Oyunu və VGA.
Addım 1: Baxış
Yuxarıdakı şəkil layihənin ümumi sxematik dizaynıdır
Oyunun məqsədi:
Oyun, istifadəçi tərəfindən idarə oluna bilən sürüşmə kürəkli bir ekrandan və yuxarı sərhəd rolunu oynayan sabit bir divardan ibarətdir. İstifadəçi yuxarı düymə olan başlanğıc düyməsini basdıqda, top sıçrayışla başlayacaq və divardan sıçrayacaq və avara vurmağa çalışacaq. Top avara dəysə, yenidən sıçrayır və avarçəkəni əldən verməyincə sıçrayışa davam edir. Top kürəyə dəymədikdə oyun başa çatır. İstifadəçi avarçəkənin hərəkətini təyin etmək üçün sol və sağ düymələrdən istifadə edə biləcək. Oyunu sıfırlamaq üçün istifadəçi orta düyməni basmalıdır. Qaçış vaxtı 7 seqmentli ekranda qeyd olunacaq. Beş səviyyə var və hər on saniyədə bir səviyyə istifadəçi itirənə qədər qaldığı 5 -ci səviyyəyə çatana qədər artır. Səviyyələr topun sürəti ilə müəyyən edilir; bu, hər on saniyədə topun sürətinin artması və bununla da oyunun çətinliyinin artması deməkdir.
Sistem Memarlığı:
Aşağıdakı diaqram, sistem üçün əsas ümumi üst səviyyəli blok diaqramdır. Sistemin dörd girişi var: Button R, Button L, Start və Reset və Saat. Üfüqi və şaquli sinxronizasiya çıxışları, RBG (müəyyən bir yerdəki pikselin rənginə aiddir) və Skor (7 Segmentli displeyə avtobus rolunu oynayan) var. Yuxarı düymə başlanğıc olaraq istifadə olunacaq. düyməsini basın və sol və sağ düymələri avarçəkəni öz istiqamətlərində hərəkət etdirmək üçün istifadə olunacaq. 7 Segment Ekran, istifadəçinin oyunu itirmədən oynadığı saniyə sayını hesaba yazmaq üçün istifadə ediləcək. Nömrə ondalık rəqəm olaraq göstəriləcək.
Dövrə Memarlığı: Gizmomuzu daha kiçik bir FSM olan bir FSM istifadə edərək quracağıq, alt FSM oyunun çətinliyini idarə edəcək, əsas FSM isə oyunun ümumi axını idarə edəcək. Gizmomuz eyni zamanda oyunun nə qədər sürətli olduğunu idarə edə bilməyimiz üçün biri hesab (vaxt), biri ekranın təzələnmə sürəti və bir DeMux çıxışına bağlanan ən azı üç saat ayırıcıdan istifadə edəcək. artan çətinliklərlə davam edəcək. Oynadıqca oyun daha sürətli hərəkət edəcək. Oyunun nə qədər oynadığınıza görə nə qədər sürətli gedəcəyini idarə edə bilmək üçün DeMux-un FSM alt vəziyyətinin nəzarət girişinə sahib olacağıq. Bir neçə sayğacdan istifadə edəcəyik, biri ekranı təzələmək üçün, biri də oyuna davam edərkən hesabınızı saymaq üçün. Bu layihədə iki əsas modul və giriş məlumatlarını manipulyasiya edəcək bir sıra submodullar var. İki əsas alt modul VGA Sürücüsü və düymə məntiq moduludur. VGA Sürücüsü, proqramlaşdırıla bilən yaddaşdan, saat bölücüdən və rəng üçün çıxışı idarə edəcək məntiqdən ibarət olacaq. Düymə məntiqi modulu, eyni zamanda saat bölücü və proqramlaşdırıla bilən bir yaddaşdan, eyni zamanda saat bölücü ilə 7 Segment Ekran üçün ikili-onlu çeviricidən ibarət olacaq.
Addım 2: Şəkil prosesi
Layihənin Image Process bölməsi üçün topun və avarçəkənin hərəkətini təyin edəcəyik. Proqramda sol, sağ, yuxarı və mərkəzi düymələri, indiki vəziyyəti, bir saat, topun X və Y mövqeləri, avarçəkmənin sol və sağ kənarı və bir uğursuzluq olan limanlar var. Mövcud vəziyyət, aktivləşdirmə siqnalını təyin etmək üçün istifadə olunur. Kod, topun hərəkət edə biləcəyi bir çox halları əhatə edir və topun yolunu təyin etmək üçün şərtlər qoyur. Növbəti proses bloku, istifadəçinin hansı düyməni basdığına əsaslanaraq avarçəkənin hərəkət istiqamətini təyin edir. Layihənin bu hissəsinin kodu hər hissənin nə etdiyini izah edən ətraflı şərhlərlə əlavə olunur.
Addım 3: Hesab İşləyicisi
Bu bölmə, Basys3 lövhəsindəki 7 Segment Ekranda hesabın saniyələrdə göstərilməsi ilə əlaqəli sənədlərdən ibarətdir. Saniyələri saymaq üçün istifadə olunan bir saat bölücü, bir hesab sayğacı istifadəçinin oynadığı saniyələri sayır, seqment sürücüsü hesabı götürür və ekranda görünəcək anodlara və katotlara çevirir və eyni zamanda mövqeyi təyin edir. nömrə göstəriləcək və son olaraq, seqment işçisi ikili rəqəmləri ekranda göstəriləcək ondalık rəqəmlərə çevirir. Hesab işçisi bütün parçaları bir araya gətirir və siqnalları xəritələyir. Bütün beş faylın kodu aşağıda əlavə edilmişdir.
Saat Bölücü:
Saat bölücünün Clk (saat), CEN (aktivləşdir) və Div (bölücü) girişləri və Clk_out çıxışı var. Aktivləşdirmə siqnalı yanarsa, saat yüksələn kənarda sayılacaq.
Puan Sayacı
Qiymət sayğacında Clk (Saat) və RST (Sıfırlama) girişləri və Clk_Out və Q çıxışları var ki, bu da mahiyyətcə hesab çıxışı rolunu oynayır.
Segment Sürücü
Segment sürücüsündə D1, D10, D100, D1000 və Saat girişləri var. "D" hərfindən sonrakı rəqəmlər 7 seqmentli ekrandakı onluğa aiddir. Çıxışlar anod və rəqəmdir. Saat sayar və nömrələri və mövqeyini təyin edir. Məsələn, minlərlə, yüzlərlə və onluq yerlərdə "0" işarələri olan bir yerdə "9" göstəriləcək. "10" a keçdikdə, ədədin onluğunda "1", minlərdə, yüzlərdə və bir yerlərdə "0" lar olacaq.
Segment idarəçisi
Segment işləyicisinin girişi rəqəm, çıxışı olaraq katodları var. Ekranda ondalık ədəd çıxarmaq üçün mahiyyət etibarilə katodun ikili ədədləridir.
Xal idarəçisi
Score Handler əvvəlki dörd varlıqdan ibarətdir və hamısını bir araya gətirir və siqnalları xəritələyir. Həm də mövcud vəziyyətə əsaslanaraq sayğacı işə salır və söndürür.
Addım 4: Şəkil Yaratma
Şəkil istehsalı dörd komponentdən ibarətdir: Animasiya, Fail Counter, Refresh Image və Start Counter. Bu fayllar görüntülərin monitorda necə yaradılacağını göstərir.
Animasiya
Animasiya faylında Clk (Saat Siqnalı), CEN (saymağa imkan verir), RST (Siqnal Sıfırla), B_X (Topun X mövqeyi), B_Y (Topun Y mövqeyi), P_L (sol avar mövqeyi) və P_R girişləri var. (sağ avarçəkmə mövqeyi). Çıxışlar WA (rəngi yazdığımız ünvan) və WD (müəyyən edilmiş ünvanda yazılan rəng) dir. Fayl MUX üçün nəzarət girişi olaraq istifadə ediləcək bir sayğac olan Play_Counter, doğru yerlərdə doğru rəngləri çıxara bilən bir kodlayıcı və son olaraq avarçağın mövqeyinə və top.
Şəkli Yenilə
Şəkil Yeniləmə faylı, topun və avarların mövqeyi dəyişdikcə görüntünü yeniləmək üçün istifadə olunur. Fayl, Animasiya, Başlatıcı Sayma və Başarısız Sayıcı fayllarından olan komponentləri ehtiva edir. Hər bir komponentdən gələn siqnalları xəritələyir və siqnalları və çıxış ünvanlarını təyin etmək üçün dövlət məntiqindən istifadə edir.
Sayğacı Başlat
Başlanğıc Sayğacı Clk, RS və CEN girişlərindən və WA və WD çıxışlarından istifadə edir. MUX üçün nəzarət girişini təyin etmək üçün bir sayğac və çevrilmədən istifadə edir. Daha sonra Multiplexer, düzgün rəng ünvanlarını təyin etmək üçün girişdən istifadə edir və bu məlumatları VGA sürücüsünə göndərir. İstifadəçi oyuna başlayanda "Pong" u göstərmək üçün istifadə olunur.
Fail Counter
İstifadəçi oyunu itirdiyində uğursuz sayğacı "Oyun bitdi" ni göstərmək üçün istifadə olunur. Clk, RST və CEN siqnalları var. MUX üçün nəzarət girişini təyin etmək üçün bir sayğac və bir dönüşüm formulundan istifadə edir. Daha sonra Multiplexer, düzgün rəng ünvanlarını təyin etmək üçün girişdən istifadə edir və bu məlumatları VGA sürücüsünə göndərir.
Addım 5: Pong Oyunu
Layihənin bu bölməsinə Pong Master, Finite State Machine (FSM), Timer və Start Debounce faylları daxildir.
Taymer
Taymeri Clk (Clock) və PS (Present State) və Timer və Clk_out kimi çıxışlar daxil edir. Taymer hər beş saniyədə bir oyunun sürətini dəyişdirmək üçün istifadə olunur.
FSM axını
Flow FSM Clk, Fail, Timer, Bttn_S (Start Button) və Buttn_RST (Reset Button) və Pres_S (Present State Output) çıxışlarına malikdir. FSM, Hazırkı Vəziyyəti Sonrakı Vəziyyətə yeniləmək üçün taymeri istifadə edir və oyun, oyun bitənə qədər qaldığı 5 -ci səviyyəyə çatana qədər Növbəti Vəziyyəti yeniləməyə davam edir.
Debounce başlayın
Start Debounce topun başlanğıc sıçrayışıdır. S_in və Clk girişləri və S_out çıxışı var.
Pong Master Bu fayl bütün əvvəlki komponentləri istifadə edir və bütün komponentlərin ani olmasını təmin edir. Birlikdə qurduğumuz bütün əvvəlki komponentləri bir araya gətirən ana sənəddir.
Addım 6: VGA Sürücü
VGA (Visual Graphics Array) Sürücü, ekrana göndərilən əmrləri və ya məlumatları qəbul etmək üçün istifadə olunan bir proqramdır. Sürücünü bizə professorumuz verdi. Basys3 lövhəsini monitöre bağlamaq üçün sürücü və VGA kabelindən istifadə edin.
İndi VHDL istifadə edərək öz Pong Oyununuzu hazırlamalısınız!
Tövsiyə:
Andrea tərəfindən Pong Oyunu: 4 addım
Andrea tərəfindən Pong Oyunu: Bu, əslində buradan gələn bir oyundur. Oyunu etdim, sonra buna əsaslanaraq bəzi dəyişikliklər etdim. Bu oyunu necə edəcəyimi sizə göstərəcəyəm, sonra dəyişdirdiyim kodu verəcəyəm. Orijinal koda bəzi dəyişikliklər əlavə etdim, məsələn
Aruduino LED Oyunu İki Oyunçu Oyunu Sürətli Tıklayır: 8 Addım
Aruduino LED Oyunu İki Oyunçu Oyunu Sürətli Tıklayaraq: Bu layihə @HassonAlkeim -dən ilhamlanıb. Bura dərindən baxmaq istəsəniz https://www.instructables.com/id/Arduino-Two-Player-Fast-Button-Clicking-Game/ yoxlaya biləcəyiniz bir linkdir. Bu oyun Alkeim -in təkmilləşdirilmiş bir versiyasıdır. Bu bir
8x8 Colorduino Pong Oyunu: 3 addım
8x8 Colorduino Pong Oyunu: Bu təlimatda sizə 8 x 8 RGB LED matris lövhəsi modulu istifadə edərək bir tennis oyunu necə qurduğumu göstərəcəyəm. Bu modula Colorduino deyilir. Daxili mikrokontrolör və digər Colorduino lövhələrinə qoşulmaq üçün bir interfeysə malikdir. Bacarığı var
Autodesk Tinkercad Arduino UNO Ping Pong Oyunu V2.0 Simulyasiyası :: 5 Addım
Autodesk Tinkercad Simulation of Arduino UNO Ping Pong Game V2.0 :: Salam uşaqlar, bu təlimatda Arduino UNO inkişaf lövhəsindən istifadə edərək Autodesk Tikercad saytında stolüstü tennisin simulyasiyasını öyrənəcəksiniz. Simulyasiya videosuna baxmaq üçün bu YouTube linkini vurun
8x16 LED Matrix Pong Oyunu (Oyunçu Versiyasına 2 Kürek): 3 addım
8x16 LED Matrix Pong Oyunu (Oyunçu Versiyasına 2 Kürek): 8x8 LED matrisindən istifadə edərək Arduinoda tətbiq olunan klassik Pong oyununun bir çox variantından ilham aldım. Bu təlimatda sizə oyunçu başına iki avarçəkən - hücumçu və qapıçı olan ən sevimli Pong versiyamın necə qurulacağını göstərəcəyəm