INHOUDSOPGAWE:

Mynveër: 5 stappe (met foto's)
Mynveër: 5 stappe (met foto's)

Video: Mynveër: 5 stappe (met foto's)

Video: Mynveër: 5 stappe (met foto's)
Video: Montagevideo Installatie Sectionaaldeur ProLine Garagepoort HBopeners 2024, Julie
Anonim
Mynveër
Mynveër

Vir ons finale CPE 133-projek het ek en Chase besluit om 'n 'Minesweeper'-speletjie te skep wat gebruik maak van knoppies en wissel-insette vanaf 'n Basys-3-bord sowel as VHDL-kode. 'N Beter naam vir die spel kan heel moontlik' Russian Roulette 'wees, maar ons wou 'n meer gesinsvriendelike naam hê. Die spel behels dat die gebruiker op die middelste knoppie op die Basys -bord druk om een van die 16 skakelaars lukraak toe te ken om 'aktief' te wees met 'n bom. Twee spelers draai dan om die beurt die skakelaars een vir een om, totdat een van die spelers die skakelaar met die 'bom' omdraai. As dit gebeur, waarsku die spelers met sewe segmente dat die speler pas die wedstryd verloor het.

Stap 1: Oorsig

Die projek het baie van die VHDL -modules gebruik wat ons gedurende hierdie kwartaal gebruik het. 'N Vierbiteller is saam met die klokrand gebruik om 'n ewekansige vierbitgetal te simuleer om een van die skakelaars te aktiveer. 'N Toestanddiagram is ook gebruik om verskillende woorde na die sewe segment vertoning uit te voer, wat wissel van' SPEEL 'wanneer die spelers in die middel van hul spel is, tot' VERLOOR 'as een van die spelers die aktiewe skakelaar omgedraai het.

Stap 2: materiaal

  • Basys3 Development Board van Digilent, Inc.
  • Vivado Design Suite BC_DEC.vhd (hierdie lêer is aan ons verskaf op Polylearn en is geskryf deur Bryan Mealy)
  • 'N 4 -bits toonbank gemaak van T -slippers
  • 'N FSM

Stap 3: Maak die spel

Die maak van die spel
Die maak van die spel
Die maak van die spel
Die maak van die spel

Die eerste stap in die rigting van die maak van hierdie speletjie was om 'n stroombaandiagram te teken met al die komponente wat ons gaan gebruik. Insette vir hierdie stelsel was knoppie 1, die 16 skakelaars en die klok. Uitsette was die sewe segment vertoning en die anodes. Nadat ons die kringdiagram geteken het, het ons individuele bronlêers vir elke komponent in Vivado geskryf en saamgestel met behulp van poortkaarte onder die hoofbronlêer.

Die hele spelbasis draai om die toevallige toewysing van een van die 16 skakelaars met 'n bom, en dat die spelers nie weet watter skakelaar aktief is totdat die aktiewe skakelaar aangeskakel is nie. Ons het aanlyn na willekeurige en pseudo-ewekansige genereerders gekyk, maar uiteindelik het ons besluit dat die gebruik van 'n 4-bis teller en die toewysing van die ooreenstemmende skakelaar aktief genoeg willekeurig is vir wat ons soek. Ons kon ons 4-bis teller wat ons in 'n vorige projek geskep het, hergebruik om vir hierdie opdrag te kan werk. Ons het die toonbank gebruik om 'n ewekansige getal tussen 0-15 te skep; dan het ons in die hoof 1 -komponent die desimale ekwivalent van die ewekansige getal aan die ooreenstemmende skakelaar op die bord toegeken. Soos gesien in die skematiese weergawe, gaan beide die uitset X ('aktiewe bom') van die hoof 1 -komponent en die skakelaars wat die spelers aanskakel na FSM1. Die staatsmasjien gee 'n Z -waarde van een bis uit, wat dan deur BC_DEC1 gelees word. Die Finite State -masjien wat ons gebruik het, het twee verskillende toestande: in toestand A lewer die sewe segment -vertonings 'PLAY' uit en die masjien bly in daardie toestand totdat dit besef dat die geaktiveerde skakelaar omgedraai is. Sodra dit gebeur, gaan die FSM na staat B, waar dit 'LOSE' na die sewesegmentweergawe stuur en in daardie toestand bly totdat al 16 skakelaars na '0' gedraai word. As aan hierdie voorwaarde voldoen is, gaan die FSM weer na staat A en wag die spelers om 'n ander wedstryd te begin. 'N Moore -diagram om hierdie FSM te help verstaan, word hierbo getoon.

Stap 4: Toekomstige wysigings

'N Paar wysigings wat ons oorweeg het om ons spel aan te bring, sluit in die toevoeging van meer bomme op die veld (moontlik van een na drie), 'n tellingteller en verskeie rondes. Ons het uiteindelik teen hierdie verbeterings besluit, aangesien ons gevind het dat 'n langer, uitgebreide wedstryd gewoonlik meer gespanne en uiteindelik lekkerder was as 'n wedstryd wat gewoonlik geëindig het na drie of vier skakelings.

Stap 5: Gevolgtrekking

Ons was baie tevrede met die eindresultaat van hierdie projek; nie net omdat die finale weergawe van die speletjie lekker was om te speel nie, maar ook omdat die ontwerp en programmering van die projek ons vereis het om die meeste te gebruik, indien nie alles wat ons hierdie kwartaal geleer het nie. Ons gebruik flip -flops, tellers, FSM's, die klok, gebruikersinvoer van die bord en uitvoer na die sewe segment -skerm.

Ons het ook geleer hoe 'n paar sintaksisfoute die program heeltemal kan breek (selfs al sou dit in ander programmeertale soos Python of Java as goed geag word), en dit slegs nadat verskeie simulasies en verskeie herhalings van die kode opgelaai en getoets is op die bord, sal u uiteindelik al die foute uit u kode kan uitwerk?

Aanbeveel: