Indholdsfortegnelse:

Pongspil: 6 trin
Pongspil: 6 trin

Video: Pongspil: 6 trin

Video: Pongspil: 6 trin
Video: Как сделать файтинг в визуальной студии 2024, November
Anonim
Pong spil
Pong spil

Materialer:

Basys3 FPGA Board

VGA -kabel

Vivado

Formålet med denne instruerbare er at udvikle et Pong -spil, der vil blive vist på en skærm. Projektet vil bruge VHDL til at programmere og bruger en Basys3 FPGA til at udføre koden og overføre billedet ved hjælp af et VGA -interface. Denne vejledning er beregnet til folk, der har lidt forudgående kendskab til VHDL. Uddannelsen vil blive opdelt i 6 forskellige sektioner: Oversigt, proces, Score Handler, Image Generation, Pong Game og VGA.

Trin 1: Oversigt

Oversigt
Oversigt

Billedet ovenfor er det overordnede skematiske design af projektet

Formålet med spillet:

Spillet består af et display med en glidende padle, der kan kontrolleres af brugeren, og en fast væg, der fungerer som den øvre grænse. Når brugeren trykker på startknappen, som er op -knappen, begynder bolden at hoppe op og hoppe af væggen og forsøge at ramme padlen. Hvis bolden rammer padlen, hopper den op igen og fortsætter med at hoppe, indtil den savner padlen. Spillet er slut, når bolden ikke rammer pagajen. Brugeren vil være i stand til at bruge venstre og højre trykknapper til at bestemme skovlens bevægelse. For at nulstille spillet skal brugeren trykke på den midterste knap. Løbetiden registreres på et 7 -segment display. Der er fem niveauer, og hvert tiende sekund stiger niveauet, indtil du rammer niveau 5, hvor det bliver, indtil brugeren taber. Niveauerne bestemmes af boldens hastighed; det betyder, at hvert tiende sekund øges boldens hastighed, hvilket øger vanskeligheden ved spillet.

Systemarkitektur:

Diagrammet herunder er det grundlæggende overordnede blokdiagram på øverste niveau for systemet. Systemet har fire indgange: Knap R, knap L, Start og nulstil og et ur. Den har vandrette og lodrette synkroniseringsudgange, RBG (som refererer til pixelens farve på et bestemt sted) og Score (der fungerer som en bus til 7-segmenters display). Op-knappen bruges som start knappen, og venstre og højre trykknapper bruges til at flytte padlen i deres respektive retninger. 7-Segment Display vil blive brugt til at registrere scoren, hvilket er antallet af sekunder, som brugeren har spillet uden at tabe spillet. Tallet vises som et decimaltal.

Kredsløbsarkitektur: Vi vil bygge vores gizmo ved hjælp af en FSM, der indeholder en mindre FSM, sub-FSM kontrollerer spillets sværhedsgrad, mens den primære FSM styrer det overordnede flow i spillet. Vores gizmo vil også bruge mindst tre urdelere, en til scoren (tid), en til opdateringshastigheden for skærmen og en, der er tilsluttet output fra en DeMux, så vi kan styre, hvor hurtigt spillet vil fortsætte med stigende sværhedsgrader. Spillet vil bevæge sig meget hurtigere, jo længere du spiller. Vi vil have kontrolindgangen til DeMux til stede i sub-FSM, så vi kan kontrollere, hvor hurtigt spillet vil gå, hvor lang tid du spiller det. Vi vil bruge et par tællere, en til at opdatere displayet og en til at tælle scoren, mens du fortsætter med at spille. Dette projekt har to hovedmoduler og en række submoduler, der manipulerer inputdata. De to vigtigste submoduler er VGA -driveren samt knappelogikmodulet. VGA -driveren vil bestå af programmerbar hukommelse, en urdeler og logikken, der manipulerer output for farve. Knappelogikmodulet vil også bestå af en urdeler og en programmerbar hukommelse samt en binær til decimalomformer til 7-segmentskærmen med dens respektive urdeler.

Trin 2: Billedproces

I afsnittet Image Process i projektet vil vi bestemme bevægelsen af bolden og padlen. Programmet har porte, der omfatter venstre, højre, top og midterste trykknapper, den nuværende tilstand, et ur, boldens X- og Y -positioner, venstre og højre kant af padlen og en fejl. Den nuværende tilstand bruges til at bestemme aktiveringssignalet. Koden går over de flere tilfælde, som bolden kan bevæge sig, og har sat betingelser for at bestemme boldens vej. Den næste procesblok bestemmer den retning, som padlen bevæger sig baseret på, hvilken knap der trykkes af brugeren. Koden til denne del af projektet er vedhæftet med detaljerede kommentarer, der beskriver, hvad hvert afsnit gør.

Trin 3: Score Handler

Scorehandler
Scorehandler

Dette afsnit består af filer, der vedrører visning af score på sekunder på 7 Segment Display på Basys3 Board. Den indeholder en urdeler, der bruges til at tælle sekunderne, en scoringstæller tæller de sekunder, som brugeren spiller, segmentdriveren tager scoren og konverterer den til anoder og katoder, der skal vises på skærmen, og bestemmer også den position, der tallet vil blive vist, og endelig konverterer segmenthandleren de binære cifre til decimalcifre, der skal vises på skærmen. Scorehandleren samler alle brikkerne og kortlægger signalerne. Koden for alle fem filer er vedhæftet nedenfor.

Urdeler:

Urdeleren har input Clk (ur), CEN (aktiver i) og Div (divider) og output Clk_out. Hvis aktiveringssignalet er tændt, tæller uret med den stigende kant.

Score tæller

Thescore -tælleren har input Clk (Clock) og RST (Reset) og output Clk_Out og Q, som i det væsentlige fungerer som score -output.

Segment Driver

Segmentdriveren har input D1, D10, D100, D1000 og Clock. Tallene efter "D" refererer til decimalen på 7 -segmentets display. Outputene er anoderne og cifret. Uret tæller og tildeler tallene og dens position. For eksempel vil en "9" blive vist på stedet med "0" i tusinder, hundredvis og tiere. Når det skifter til "10", vil tallet nu have et "1" i titallet og "0" i tusinder, hundredvis og enerne.

Segment Handler

Segmenthandleren har ciffer som input og katoder som output. Det er hovedsageligt de binære tal til katodeskærmen for at udsende decimaltal på skærmen.

Scorehandler

Score Handler består af de tidligere fire enheder og sætter det hele sammen og kortlægger signalerne. Det aktiverer og deaktiverer også tælleren baseret på den nuværende tilstand.

Trin 4: Billedgenerering

Billedgenerationen består af fire komponenter: Animation, Fail Counter, Refresh Image og Start Counter. Disse filer henviser til, hvordan man genererer billederne på skærmen.

Animation

Animationsfilen har input Clk (Clocksignal), CEN (count enable), RST (Reset Signal), B_X (boldens X -position), B_Y (Ballens Y -position), P_L (venstre padleposition) og P_R (højre padleposition). Outputene er WA (adressen vi skriver farven til) og WD (farven skrives på den bestemte adresse). Filen har Play_Counter, der er en tæller, der vil blive brugt som kontrolindgang til MUX, en encoder, der kan udsende de korrekte farver på de rigtige steder, og til sidst en multiplexer, der viser den korrekte farve baseret på padlens position og bold.

Opdater billede

Filen Refresh Image bruges til at opdatere billedet, da boldens og padlens position ændres. Filen indeholder komponenterne fra filerne Animation, Start Counter og Fail Counter. Det kortlægger signalerne fra hver komponent og bruger tilstandslogik til at bestemme signalerne og outputadresserne.

Start tæller

Starttælleren bruger input Clk, RS og CEN og output WA og WD. Det bruger en tæller og konvertering til at bestemme kontrolindgangen til MUX. Multiplexeren bruger derefter input til at bestemme korrekte farveadresser og sender disse data til VGA -driveren. Dette bruges til at vise "Pong", når brugeren starter spillet.

Fejltæller

Fejltælleren bruges til at vise "Game Over", når brugeren taber spillet. Det har et Clk-, RST- og CEN -signal. Den bruger en tæller og en konverteringsformel til at bestemme kontrolindgangen til MUX. Multiplexeren bruger derefter input til at bestemme korrekte farveadresser og sender disse data til VGA -driveren.

Trin 5: Pongspil

Pong spil
Pong spil

Dette afsnit af projektet omfatter Pong Master, Finite State Machine (FSM), Timer og Start Debounce -filer.

Timer

Timeren har input Clk (Clock) og PS (Current State) og Timer og Clk_out som output. Timeren bruges til at ændre spillets hastighed cirka hvert femte sekund.

Flow FSM

Flow FSM har input Clk, Fail, Timer, Bttn_S (Start Button) og Buttn_RST (Reset Button) og output Pres_S (Current State Output). FSM bruger timeren til at opdatere den nuværende tilstand til den næste tilstand og opdaterer den næste tilstand, indtil spillet når niveau 5, hvor det forbliver, indtil spillet er slut.

Start Debounce

Start Debounce er boldens start bounce. Den har input S_in og Clk og output S_out.

Pong Master Denne fil bruger alle de tidligere komponenter og gør det sådan, at alle komponenter er øjeblikkelige. Det er master -filen, der samler alle de tidligere komponenter, som vi har bygget sammen.

Trin 6: VGA -driver

VGA -driveren (Visual Graphics Array) er et stykke software, der bruges til at acceptere kommandoer eller data, der sendes til skærmen. Chaufføren blev givet til os af vores professor. Brug driveren og et VGA -kabel til at slutte Basys3 -kortet til skærmen.

Du skal nu være klar til at lave dit eget Pong -spil ved hjælp af VHDL!

Anbefalede: