Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-23 15:02
Du vil trenge:
1. Digilent Basys 3, FPGA Board (eller annen FPGA,)
2. En relativt oppdatert versjon av Vivado, eller et annet VHDL -miljø
3. En datamaskin som kan kjøre det nevnte programmet.
Trinn 1: Selve spillet
Hvordan FSM samhandler med modulene.
Hvordan spille
For å starte trykker du på den midtre knappen. Dette vil føre til at "99", som representerer helsen til spiller to, vises på displayet med syv segmenter. Deretter lyser lysdiodene i rekkefølge fra høyre til venstre. Dette danner en strømlinje. Når strømlinjen er full, tilbakestilles den. Formålet med spiller en er å snu bryteren når stangen er så høy som mulig. Jo flere lysdioder lyser, jo mer skade spiller gjør spilleren to. Etter at spiller en vender bryteren, blir skaden som blir trukket trukket fra spillerens to helse. Deretter bytter den til spiller to sin tur. Nå viser tallet som vises spillerens helse, og strømlinjen fylles opp fra venstre til høyre. Når spiller to gjør sitt trekk, blir skaden trukket, og det er tilbake til spiller en sin tur igjen. Dette gjentas til en spiller når 0 helse. Video av denne funksjonen er vedlagt.
Trinn 2: FSM
Dette spillet er i hovedsak en stor endelig tilstandsmaskin, som noen komplekse logikker skjer basert på tilstanden som FSM er i.
Stat 1: Meny Den første tilstanden er menyskjermen, som er en av de enklere tilstandene. Den inkluderer displayet med syv segmenter som viser ordet "PLAY", og knappen som får spillet til å starte. Knappen, BTN, leder oss til neste tilstand, som er spillerens tur.
Stat 2: Spiller en sin tur
Spillerens tur aktiverer et signal som får sju segmenters display til å vise spiller to helse. Et annet signal slås på for å aktivere et skiftregister importert fra en annen modul som vi opprettet (Pone.vhd). Dette skiftregisteret får lysdiodene til å lyse som en økende effektmåler ville gjort i andre spill, og det ville deretter tilbakestilles til 0 når det når maksimal mengde LED -er som kan tennes. Den oppdateres om den stigende kanten på klokken hentet fra barclock.vhd, som er endret fra en lånt labfil. Vi fikk spillerens bar starte fra høyre og fylle opp til venstre, fordi spillerens bryter er også til venstre (for intuitiv brukeropplevelse). Når bryteren er vendt, går staten videre til spilleren ett fradrag, og mengden av LED -er som er lagret i et signal.
Stat 3: Spiller ett fradrag Signalet med mengden LED er aktiv bestemmer mengden helse som blir trukket fra. Dette gjøres ved å ha et annet skiftregister (deductor1.vhd) som i stedet for å øke LED -lampene, reduserer dem. Dette reduseres på den stigende kanten av en av klokke div -modulene som vi lånte og modifiserte (downcounterclock.vhd). Akkurat når én LED er slått av, trekkes ett helsepunkt fra spiller tos totale helse. Hvis spiller i løpet av denne prosessen når 0 helse, stopper vi og går umiddelbart til tilstanden "Game over". Ellers, når LED -vektoren når “0000000000000000”, går vi videre til spiller to sin tur.
Stat 4: Spiller tos tur Spiller tos tur er akkurat som spiller en sin, bortsett fra at skiftregisteret for den (Ptwo.bhd) går fra venstre til høyre, og bryteren er på høyre side av brettet. Et signal aktiveres for å ha spiller 1s helsevisning. Når bryter 2 er aktiv, går dette videre til spiller tos fradragsvending.
Trinn 5: Spiller to -fradrag Akkurat som spiller tos tur, spiller to -fradrag mye som spiller ett trekker. Hovedforskjellen er at skiftregisteret som kontrollerer at LED -lampene slås av går i motsatt retning, noe som er en enkel modifikasjon å gjøre når du har spillerens fradrag som fungerer som det skal.
Fase 6: Spill over Hvis noen av spillerne på et tidspunkt når null helse, bytter spillet til denne tilstanden. Ikke noe fancy skjermer. Hvis du trykker på BTN one, tilbakestilles helsen til 99, og staten går tilbake til menyen og starter effektivt spillet på nytt.
Trinn 3: Moduler
Black Box Diagram for spillet
Nedklokke (basert på clk_div.vhd -modulen av Bryan Mealy):
Dette er klokken som håndterer timingen til fradragsholderne. Konstanten som heter max_count er 3x mer enn barclocks max_count -konstant. Dette vil gjøre fradragsholderne 3x langsommere enn barens hastighet.
Barclock - (basert på clk_div.vhd -modulen av Bryan Mealy):
Denne klokken håndterer timingen av effektmålere, som vi raskt økte for å gjøre spillet vanskeligere. Denne timingen kan justeres etter din smak, øke hastigheten ved å gjøre den konstante max_count til et større tall, eller redusere den ved å gjøre max_count til et mindre tall. Sseg_dec - (Skrevet av Bryan Mealy): Denne modulen tar et 8 -bits tall som inndata, som det dekoder, konverterer tallet til sitt desimalekvivalent og sender deretter ut til syv segmentvisning. For at denne filen skal fungere, må du sørge for at begrensningene dine stemmer overens med vår.
Pone:
Dette er et skiftregister som skifter biter til venstre, og legger til en varm bit for å få det til å se ut som om effektmåleren øker. Når alle bitene er varme, tilbakestilles alle bitene til ‘0’, og syklusen starter på nytt.
Ptwo:
Dette er en vendt versjon av P1 -modulen.
Deductor1:
Dette er en kombinasjon av et skiftregister og en subtraktor. Skiftregisteret går i motsatt retning av P1s skiftregister, noe som indikerer et fradrag. Dette trekker også 1 fra spiller 2s helse for hver klokkesyklus, så med kombinasjonen av disse to funksjonene vil det se ut som motstanderens helse reduseres med 1 for hver led i helsestangen som går ned.
Deductor2: Dette er en vendt versjon av Deductor1 -modulen.
PlayDecoder (lånt og slett endret fra ekchen35649 hans 133 instruerbare): Dette brukes i menytilstanden for å vise ordet "PLAY" på dekoderen med syv segmenter.
Trinn 4: Test
Dette spillet ble opprinnelig inspirert av et av minispillene fra Kirby. Det er et enkelt to-spillerspill som kan spilles på et Basys 3-brett, eller hvilken som helst FPGA.
Trinn 1: Nødvendig materiale
Du trenger: Digilent Basys 3, FPGA Board (eller andre) En relativt oppdatert versjon av Vivado, eller et annet vhdl -miljø En datamaskin som kan kjøre det nevnte programmet A brain
Trinn 2: Selve spillet
Hvordan spille
For å starte trykker du på den midtre knappen. Dette vil føre til at "99", som representerer helsen til spiller to, vises på displayet med syv segmenter. Deretter lyser lysdiodene i rekkefølge fra høyre til venstre. Dette danner en strømlinje. Når strømlinjen er full, tilbakestilles den. Formålet med spiller en er å snu bryteren når stangen er så høy som mulig. Jo flere lysdioder lyser, jo mer skade spiller gjør spilleren to. Etter at spiller en vender bryteren, blir skadene som blir behandlet trukket fra spiller tos helse. Deretter bytter den til spiller to sin tur. Nå viser tallet som vises spillerens helse, og strømlinjen fylles opp fra venstre til høyre. Når spiller to gjør sitt trekk, blir skaden trukket, og det er tilbake til spiller en sin tur igjen. Dette gjentas til en spiller når 0 helse. Video av denne funksjonen er vedlagt.
For å spille spillet, last det på et grunnleggende brett, og trykk på den midterste knappen. Prøv å snu bryteren med så mange LED -er som mulig, og vent deretter og se hvordan brettet trekker disse punktene fra motstanderens helse. Overfør den deretter til vennen din og
Trinn 3: FSM
Dette spillet er i hovedsak en stor endelig datamaskin, som noen komplekse logikker skjer basert på tilstanden som FSM er i.
(Statens diagram)
Stat 1: Meny
Den første tilstanden er menyskjermen, som er en av de enklere tilstandene. Den inkluderer displayet med syv segmenter som viser ordet "PLAY", og knappen som får spillet til å starte. Knappen, BTN, leder oss til neste tilstand, som er spillerens tur.
Stat 2: Spiller en sin tur
Spillerens tur aktiverer et signal som får sju segmenters display til å vise spiller to helse. Et annet signal slås på for å aktivere et skiftregister importert fra en annen modul som vi opprettet (Pone.vhd). Dette skiftregisteret får lysdiodene til å lyse som en økende effektmåler ville gjort i andre spill, og det ville deretter tilbakestilles til 0 når det når maksimal mengde LED -er som kan tennes. Den oppdateres om den stigende kanten på klokken hentet fra barclock.vhd, som er endret fra en lånt labfil. Vi fikk spillerens bar starte fra høyre og fylle opp til venstre, fordi spillerens bryter er også til venstre (for intuitiv brukeropplevelse). Når bryteren er vendt, går staten videre til spilleren ett fradrag, og mengden LED -er som er aktive, lagres i et signal.
Stat 3: Spiller en trekker fra
Signalet med mengden LED er aktiv bestemmer mengden helse som blir trukket fra. Dette gjøres ved å ha et annet skiftregister (deductor1.vhd) som i stedet for å øke LED -lampene, reduserer dem. Dette reduseres på den stigende kanten av en av klokke div -modulene som vi lånte og modifiserte (downcounterclock.vhd). Akkurat når én LED er slått av, trekkes ett helsepunkt fra spiller tos totale helse. Hvis spiller i løpet av denne prosessen når 0 helse, stopper vi og går umiddelbart til tilstanden "Game over". Ellers, når LED -vektoren når “0000000000000000”, går vi videre til spiller to sin tur.
Stat 4: Spiller to sin tur
Spiller tos tur er akkurat som spiller en sin, bortsett fra at skiftregisteret for den (Ptwo.bhd) går fra venstre til høyre, og bryteren er på høyre side av brettet. Et signal aktiveres for å ha spiller 1s helsevisning. Når bryter 2 er aktiv, går dette videre til spiller tos fradragsvending.
Trinn 5: Spiller to -fradrag
Akkurat som spiller to sin tur, spiller spiller to fradrag mye som spiller ett trekker. Hovedforskjellen er at skiftregisteret som kontrollerer at LED -lampene slås av går i motsatt retning, noe som er en enkel modifikasjon å gjøre når du har spillerens fradrag som fungerer som det skal.
Fase 6: Spill over Hvis noen av spillerne på et tidspunkt når null helse, bytter spillet til denne tilstanden. Ikke noe fancy skjermer. Hvis du trykker på BTN one, tilbakestilles helsen til 99, og staten går tilbake til menyen og starter effektivt spillet på nytt.
Svart boks
Trinn 4: Moduler
Nedklokke (basert på clk_div.vhd -modulen av Bryan Mealy):
Dette er klokken som håndterer timingen til fradragsholderne. Konstanten som heter max_count er 3x mer enn barclocks max_count -konstant. Dette vil gjøre fradragsholderne tre ganger langsommere enn barens hastighet.
Barclock - (basert på clk_div.vhd -modulen av Bryan Mealy): Denne klokken håndterer timingen av effektmålere, som vi raskt økte for å gjøre spillet vanskeligere. Denne timingen kan justeres etter din smak, øke hastigheten ved å gjøre den konstante max_count til et større tall, eller redusere den ved å gjøre max_count til et mindre tall. Sseg_dec - (Skrevet av Bryan Mealy): Denne modulen tar et 8 -bits tall som inndata, som det dekoder, konverterer tallet til sitt desimalekvivalent og sender deretter ut til syv segmentvisning. For at denne filen skal fungere, må du sørge for at begrensningene dine stemmer overens med vår.
Pone: Dette er et skiftregister som flytter biter til venstre, og legger til en varm bit for å få det til å se ut som om effektmåleren øker. Når alle bitene er varme, tilbakestilles alle bitene til ‘0’, og syklusen starter på nytt.
Ptwo: Dette er en vendt versjon av P1 -modulen.
Deductor1: Dette er en kombinasjon av et skiftregister og en subtraktor. Skiftregisteret går i motsatt retning av P1s skiftregister, noe som indikerer et fradrag. Dette trekker også 1 fra spiller 2s helse for hver klokkesyklus, så med kombinasjonen av disse to funksjonene vil det se ut som motstanderens helse reduseres med 1 for hver led i helsestangen som går ned.
Deductor2: Dette er en vendt versjon av Deductor1 -modulen.
PlayDecoder (lånt og litt modifisert fra ekchen35649 hans 133 instruerbare):
Dette brukes i menytilstanden for å vise ordet "PLAY" på dekoderen med syv segmenter.
Å gjøre: bilder, video
Anbefalt:
Arduino bilvarslingssystem for omvendt parkering - Trinn for trinn: 4 trinn
Arduino Car Reverse Parking Alert System | Trinn for trinn: I dette prosjektet skal jeg designe en enkel Arduino Car Reverse Parking Sensor Circuit ved hjelp av Arduino UNO og HC-SR04 Ultrasonic Sensor. Dette Arduino -baserte bilreverseringssystemet kan brukes til autonom navigasjon, robotavstand og andre områder
Trinn for trinn PC -bygging: 9 trinn
Steg for trinn PC -bygging: Rekvisita: Maskinvare: HovedkortCPU & CPU -kjøler PSU (strømforsyningsenhet) Lagring (HDD/SSD) RAMGPU (ikke nødvendig) CaseTools: Skrutrekker ESD -armbånd/mathermal pasta m/applikator
Tre høyttalerkretser -- Trinn-for-trinn opplæring: 3 trinn
Tre høyttalerkretser || Trinn-for-trinn opplæring: Høyttalerkretsen styrker lydsignalene som mottas fra miljøet til MIC og sender den til høyttaleren der forsterket lyd produseres. Her vil jeg vise deg tre forskjellige måter å lage denne høyttalerkretsen på:
Tap Tap Rainbow - et 2 -spillerers hurtigreaksjonsspill: 4 trinn (med bilder)
Tap Tap Rainbow - et hurtigreaksjonsspill for to spillere: For to uker siden hadde datteren min en genial idé om å lage et raskt reaksjonsspill med regnbuefarger (hun er en regnbueekspert: D). Jeg elsket ideen umiddelbart, og vi begynte å tenke hvordan vi kunne gjøre det til et ekte spill. Ideen var. Du har en regnbue i
RC -sporet robot ved hjelp av Arduino - Trinn for trinn: 3 trinn
RC -sporet robot ved bruk av Arduino - Steg for trinn: Hei folkens, jeg er tilbake med et annet kult Robot -chassis fra BangGood. Håper du har gått gjennom våre tidligere prosjekter - Spinel Crux V1 - Gesture Controlled Robot, Spinel Crux L2 - Arduino Pick and Place Robot with Robotic Arms og The Badland Braw