Indholdsfortegnelse:
- Trin 1: Oversigt
- Trin 2: Billedproces
- Trin 3: Score Handler
- Trin 4: Billedgenerering
- Trin 5: Pongspil
- Trin 6: VGA -driver
Video: Pongspil: 6 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:28
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
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
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
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:
Arduino bil omvendt parkering alarmsystem - Trin for trin: 4 trin
Arduino bil omvendt parkering alarmsystem. Trin for trin: I dette projekt vil jeg designe en simpel Arduino bil omvendt parkeringssensorkreds ved hjælp af Arduino UNO og HC-SR04 ultralydssensor. Dette Arduino -baserede bilomvendt alarmsystem kan bruges til en autonom navigation, robotafstand og andre rækkevidde
Trin for trin pc -bygning: 9 trin
Trin for trin PC Building: Supplies: Hardware: MotherboardCPU & CPU -køler PSU (strømforsyningsenhed) Opbevaring (HDD/SSD) RAMGPU (ikke påkrævet) CaseTools: Skruetrækker ESD -armbånd/mathermal pasta m/applikator
Tre højttalerkredsløb -- Trin-for-trin vejledning: 3 trin
Tre højttalerkredsløb || Trin-for-trin vejledning: Højttalerkredsløb styrker lydsignalerne, der modtages fra miljøet til MIC og sender det til højttaleren, hvorfra forstærket lyd produceres. Her vil jeg vise dig tre forskellige måder at lave dette højttalerkredsløb på:
Trin-for-trin uddannelse i robotik med et sæt: 6 trin
Trin-for-trin uddannelse i robotteknologi med et kit: Efter ganske få måneder med at bygge min egen robot (se alle disse), og efter at jeg to gange havde dele mislykkedes, besluttede jeg at tage et skridt tilbage og tænke min strategi og retning. De flere måneders erfaring var til tider meget givende, og
Akustisk levitation med Arduino Uno trin for trin (8 trin): 8 trin
Akustisk levitation med Arduino Uno Step-by Step (8-trin): ultralyds lydtransducere L298N Dc kvindelig adapter strømforsyning med en han-DC-pin Arduino UNOBreadboard Sådan fungerer det: Først uploader du kode til Arduino Uno (det er en mikrokontroller udstyret med digital og analoge porte til konvertering af kode (C ++)