Mündəricat:
- Addım 1: Baxış
- Addım 2: Materiallar
- Addım 3: Oyunun hazırlanması
- Addım 4: Gələcək dəyişikliklər
- Addım 5: Nəticə
Video: Mayın tarama gəmisi: 5 addım (şəkillərlə)
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:48
CPE 133 son layihəmiz üçün, Chase və mən düyməni istifadə edərək Basys-3 lövhəsindən girişi və VHDL kodunu istifadə edən 'Minesweeper' oyunu yaratmağa qərar verdik. Oyun üçün daha yaxşı bir ad 'Rus ruleti' ola bilər, amma daha çox ailə dostu bir adla getmək istədik. Oyun, istifadəçinin Basys lövhəsindəki orta düyməni basaraq təsadüfi olaraq 16 açardan birini bomba ilə 'aktiv' təyin etməsini nəzərdə tutur. Daha sonra iki oyunçu növbə ilə açarları çevirir, oyunçulardan biri "bomba" ilə açarı çevirənə qədər. Bu baş verdikdə, yeddi seqmentli ekran oyunçulara o oyunçunun oyunu yenicə uduzduğunu bildirir.
Addım 1: Baxış
Layihə, bu rüb ərzində istifadə etdiyimiz bir çox VHDL modulundan istifadə etdi. Açarlardan birini aktivləşdirmək üçün təsadüfi dörd bitli bir rəqəmi simulyasiya etmək üçün saat kənarları ilə birlikdə dörd bit sayğacı istifadə edilmişdir. Yeddi seqmentli ekrana fərqli sözlər çıxarmaq üçün bir vəziyyət diaqramı da istifadə edildi, oyunçular oyunun ortasında 'PLAY' dan oyunçulardan biri aktiv açarı çevirdikdə 'LOSE' ə qədər.
Addım 2: Materiallar
- Digilent, Inc -dən Basys3 İnkişaf Şurası
- Vivado Design Suite BC_DEC.vhd (Bu fayl bizə Polylearn -da verilmiş və Bryan Mealy tərəfindən yazılmışdır)
- T flip floplardan hazırlanmış 4 bitlik sayğac
- Bir FSM
Addım 3: Oyunun hazırlanması
Bu oyunu etmək üçün ilk addım, istifadə edəcəyimiz bütün komponentləri olan bir dövrə diaqramı çəkmək idi. Bu sistemin girişləri düymə 1, 16 açar və Saat idi. Çıxışlar yeddi seqmentli ekran və anodlar idi. Dövrə diaqramını çəkdikdən sonra Vivadoda hər bir komponent üçün fərdi mənbə faylları yazdıq və əsas mənbə faylının altından liman xəritələri istifadə edərək bir araya gətirdik.
Oyunun bütün əsası təsadüfi olaraq 16 açarlardan birinə bomba ilə aktiv olmaq və oyunçuların bu açar açılana qədər hansı açarın aktiv olduğunu bilməməsi ilə bağlıdır. Təsadüfi və yalançı təsadüfi ədəd generatorlarına baxdıq, amma nəticədə qərar verdik ki, 4 bitlik sayğacdan istifadə edərək müvafiq açarın aktiv olmasını təyin etdiyimiz şey üçün kifayət qədər təsadüfi olur. Bu tapşırıq üçün işləyə bilmək üçün əvvəlki bir layihədə yaratdığımız 4 bitlik sayğacımızı yenidən təyin edə bildik. 0-15 arasında təsadüfi bir ədəd yaratmaq üçün sayğacdan istifadə etdik; sonra main1 komponentində, lövhədəki müvafiq açarına təsadüfi ədədin ondalık ekvivalentini təyin etdik. Şemada göründüyü kimi, main1 komponentindən həm X çıxışı ("aktiv bomba"), həm də oyunçuların açarları FSM1 -ə keçir. Dövlət maşını bir az Z dəyəri çıxarır, sonra BC_DEC1 tərəfindən oxunur. İstifadə etdiyimiz sonlu vəziyyət maşınının iki fərqli vəziyyəti var: A vəziyyətində yeddi seqmentli ekran 'PLAY' çıxır və maşın aktivləşdirilmiş açarın çevrildiyini qəbul edənə qədər həmin vəziyyətdə qalır. Bu baş verdikdən sonra, FSM yeddi seqment ekranına 'LOSE' çıxardığı B vəziyyətinə keçir və bütün 16 açar '0' a çevrilənə qədər bu vəziyyətdə qalır. Bu şərt yerinə yetirildikdə, FSM daha sonra A vəziyyətinə keçir və oyunçuların başqa bir oyuna başlamasını gözləyir. Bu FSM -ni anlamağa kömək edəcək bir Moore diaqramı yuxarıda göstərilmişdir.
Addım 4: Gələcək dəyişikliklər
Oyununuzu etməyi düşündüyümüz bir neçə dəyişiklik, sahəyə daha çox bomba əlavə etmək (ehtimal ki, birdən üçə artırmaq), bir hesab sayğacı və birdən çox tur əlavə etməkdir. Nəticədə bu inkişaflara qarşı qərar verdik, çünki daha uzun, uzun bir oyun oynamağın ümumiyyətlə daha gərgin və sonunda üç və ya dörd keçiddən sonra bitən bir oyundan daha əyləncəli olduğunu gördük.
Addım 5: Nəticə
Bu layihənin son nəticəsindən çox məmnun olduq; yalnız oyunun son versiyasının oynamaq çox əyləncəli olduğu üçün deyil, həm də layihənin yaradılması və proqramlaşdırılması bizdən bu rübdə öyrəndiklərimizin hamısı olmasa da ən çox istifadə etməyimizi tələb etdiyi üçün. Flip Floplardan, sayğaclardan, FSM -lərdən, saatdan, lövhədən istifadəçi girişindən və yeddi seqmentli ekrana çıxışdan istifadə etdik.
Bir neçə sintaksis səhvinin proqramı necə tamamilə poza biləcəyini (Python və ya Java kimi digər proqramlaşdırma dillərində yaxşı sayılsalar belə) və yalnız birdən çox simulyasiyadan və kodun çoxlu təkrarlanmasından sonra yüklənib test edildiyini öyrəndik. board, nəhayət kodunuzdakı bütün səhvləri işlədə biləcəksiniz.
Tövsiyə:
[2020] Gecə Tarama üçün LEDlərin Yandırılması: 9 Addım (Şəkillərlə)
[2020] Gecə Sürüşməsi üçün LEDlərin Yandırılması: Valenta Off-Roader Lego Technic uyğun gəlir və arxa təkərlərdə iki (x2) mikro dişli mühərriki və Roberval qol mexanizminə əsaslanan (x1) sükan servosu ilə təchiz olunmuşdur. Humming Works MMC və
Sonsuzluq güzgü sahil gəmisi: 8 addım (şəkillərlə birlikdə)
Sonsuzluq güzgü sahil gəmisi: Bu layihədə sizə xüsusi 3D çaplı korpus ilə sonsuz güzgü sahil gəmisinin necə qurulacağını göstərəcəyəm
LEGO Delta Robot Tarama və Rəsm: 7 Addım (Şəkillərlə birlikdə)
LEGO Delta Robot Tarama və Çizim: Delta Robotu qurmaq üçün LEGO NXT -dən istifadə. Birləşdirilmiş tarama və rəsm
EMIREN ™ (Radio İdarə Edilən Tarama Robotu): 9 Addım (Şəkillərlə birlikdə)
EMIREN ™ (Radio İdarə Edilən Tarama Robotu): Robotlara həddindən artıq aludə olmusunuz? Yaxşı, sadə və sadə sürünən robotumu göstərmək və söyləmək üçün burdayam. Buna EMIREN Robotu dedim. Niyə EMIREN? Sadə, Emily və Waren iki adının birləşməsidir [Emi (ly) + (wa) Ren = EmiRen = EMIREN] Bu proyektdə
Barkod Tarama üçün Ucuz Iphone Makro Lens: 6 Addım (Şəkillərlə)
Barkod Tarama üçün Ucuz Iphone Makro Lensi: IPhone -un kamerası ilə bağlı gözə çarpan bir problem, ~ 1 fut uzaqdan daha yaxına fokuslana bilməməsidir. Bəzi satış sonrası həllər, Griffin Technology tərəfindən iClarifi kimi bu problemi həll etməyə kömək edir. IPhone 3G üçün bu çanta bir az sürüşməyə imkan verir