Sisukord:

Miinilaev: 5 sammu (piltidega)
Miinilaev: 5 sammu (piltidega)

Video: Miinilaev: 5 sammu (piltidega)

Video: Miinilaev: 5 sammu (piltidega)
Video: Три богатыря на дальних берегах | Мультфильм для всей семьи 2024, November
Anonim
Miinilaev
Miinilaev

Meie CPE 133 lõpliku projekti jaoks otsustasime Chase'iga luua "Miinilaeva" mängu, mis kasutas nuppu ja lülitit Basys-3 plaadilt ning VHDL-koodi. Mängu parem nimi võiks väga hästi olla „vene rulett”, kuid tahtsime minna peresõbralikuma nimega. Mäng hõlmab kasutajat, kes vajutab Basys -tahvli keskmist nuppu, et määrata juhuslikult üks 16 -st lülitist pommiga aktiivseks. Seejärel keeravad kaks mängijat kordamööda lülitid üles, kuni üks mängijatest pöörab lülitit pommiga. Kui see juhtub, hoiatab seitsme segmendi ekraan mängijatele, et see mängija on mängu just kaotanud.

1. samm: ülevaade

Projektis kasutati paljusid VHDL -mooduleid, mida oleme selle kvartali jooksul kasutanud. Koos kella servaga kasutati neljabitist loendurit, et simuleerida juhuslikku neljabitist numbrit ühe lüliti aktiveerimiseks. Samuti kasutati olekudiagrammi erinevate sõnade väljastamiseks seitsme segmendi ekraanile, alates „PLAY”, kui mängijad on oma mängu keskel, kuni „LOSE”, kui üks mängijatest on lülitanud aktiivse lüliti.

2. samm: materjalid

  • Basile3 arendusnõukogu firmast Digilent, Inc.
  • Vivado Design Suite BC_DEC.vhd (See fail esitati meile saidil Polylearn ja selle kirjutas Bryan Mealy)
  • 4 -bitine loendur, mis on valmistatud T -papudest
  • FSM

3. samm: mängu loomine

Mängu tegemine
Mängu tegemine
Mängu tegemine
Mängu tegemine

Esimene samm selle mängu tegemiseks oli skeemi joonistamine kõigi komponentidega, mida me kasutame. Selle süsteemi sisendid olid nupp 1, 16 lülitit ja kell. Väljunditeks olid seitsme segmendi ekraan ja anoodid. Pärast vooluringi joonistamist kirjutasime Vivados iga komponendi jaoks eraldi lähtefailid ja panime need kokku, kasutades peamise lähtefaili all olevaid pordikaarte.

Kogu mängu alus keerleb selle ümber, et juhuslikult määratakse üks 16 lülitist pommiga aktiivseks ja et mängijad ei teaks, milline lüliti on aktiivne, kuni see aktiivne lüliti sisse lülitatakse. Vaatasime veebis juhuslike ja pseudojuhuslike numbrite generaatoreid, kuid lõpuks otsustasime, et 4-bitise loenduri kasutamine ja vastava lüliti aktiivseks määramine on otsitava jaoks piisavalt juhuslik. Selle ülesande täitmiseks saime oma eelmises projektis loodud 4-bitise loenduri uuesti kasutusele võtta. Loenduri abil koostasime juhusliku arvu vahemikus 0-15; siis komponendis main1 määrasime juhusliku numbri kümnendekvivalendi selle vastavale lülitile tahvlil. Nagu skemaatiliselt näha, lähevad nii põhivälja komponendi väljund X (aktiivne pomm) kui ka lülitid, mille mängijad sisse lülitavad, FSM1 -le. Olekumasin väljastab ühe bitise Z väärtuse, mida BC_DEC1 loeb. Lõppseisumasinal, mida me kasutasime, on kaks erinevat olekut: olekus A kuvatakse seitsme segmendi kuva „PLAY” ja masin jääb sellesse olekusse, kuni tuvastab aktiveeritud lüliti pööramise. Kui see on juhtunud, läheb FSM olekusse B, kus see väljastab seitsme segmendi ekraanile „LOSE” ja jääb sellesse olekusse, kuni kõik 16 lülitit on asendis „0”. Kui see tingimus on täidetud, läheb Mikroneesia taas osariiki A ja ootab mängijaid alustama uut mängu. Moore'i diagramm selle FSM -i mõistmiseks on näidatud ülal.

4. samm: tulevased muudatused

Mõned muudatused, mida me oma mängu tegemisel kaalusime, hõlmasid platsile rohkemate pommide lisamist (võib -olla ühelt kolmele suurendamist), tulemuste loenduri lisamist ja mitu vooru. Lõppkokkuvõttes otsustasime nende täiustuste vastu, kuna leidsime, et pikema ja pikema mängu mängimine oli tavaliselt pingelisem ja lõpuks lõbusam kui mäng, mis lõppes tavaliselt pärast kolme või nelja ümberlülitamist.

5. samm: järeldus

Olime selle projekti lõpptulemusega väga rahul; mitte ainult sellepärast, et mängu lõplikku versiooni oli lõbus mängida, vaid ka sellepärast, et projekti loomine ja programmeerimine nõudis meilt selle veerandi jooksul õpitu ärakasutamist. Kasutasime plätusid, loendureid, FSM -e, kella, kasutaja sisendit tahvlilt ja väljundit seitsme segmendi ekraanile.

Samuti saime teada, kuidas mõned süntaksivead võivad programmi täielikult katkestada (isegi kui neid peetaks heaks ka teistes programmeerimiskeeltes, näiteks Pythonis või Java -s), ja et alles pärast seda, kui kood on mitu korda simuleeritud ja kordatud, on üles laaditud ja testitud. pardal, kas saate lõpuks kõik vead oma koodist välja töötada.

Soovitan: