Sadržaj:
- Korak 1: Pregled
- Korak 2: Proces slike
- Korak 3: Rukovalac bodovima
- Korak 4: Generiranje slike
- Korak 5: Pong igra
- Korak 6: VGA upravljački program
Video: Pong igra: 6 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:07
Materijali:
Basys3 FPGA ploča
VGA kabel
Vivado
Svrha ovog uputstva je razvoj Pong igre koja će biti prikazana na monitoru. Projekt će koristiti VHDL za programiranje i koristi Basys3 FPGA za izvođenje koda i prijenos slike pomoću VGA sučelja. Ovaj vodič je namijenjen ljudima koji imaju malo predznanja o VHDL -u. Vodič će biti podijeljen u 6 različitih odjeljaka: Pregled, Proces, Rukovanje ocjenama, Generiranje slike, Pong igra i VGA.
Korak 1: Pregled
Gornja slika je cjelokupni shematski dizajn projekta
Cilj igre:
Igra se sastoji od zaslona s kliznim veslom kojim korisnik može upravljati i fiksnog zida koji djeluje kao gornja granica. Kada korisnik pritisne dugme za pokretanje, koje je dugme za gore, lopta će početi odskakivati prema gore, a odbijat će se od zida i pokušati udariti u veslo. Ako lopta udari u veslo, ona se ponovo odbija i nastavlja odskočiti sve dok ne promaši veslo. Igra je završena kada lopta ne pogodi veslo. Korisnik će moći koristiti lijevo i desno dugme za određivanje kretanja vesla. Da bi resetovao igru, korisnik mora pritisnuti centralno dugme. Vrijeme trčanja bit će zabilježeno na 7 -segmentnom ekranu. Postoji pet nivoa, a svakih deset sekundi nivo se povećava, sve dok ne dosegnete nivo 5 gdje ostaje dok korisnik ne izgubi. Nivoi su određeni brzinom lopte; to znači da se svakih deset sekundi brzina lopte povećava, čime se povećava težina igre.
Arhitektura sistema:
Donji dijagram predstavlja osnovni ukupni blok dijagram najvišeg nivoa za sistem. Sistem ima četiri ulaza: Dugme R, Dugme L, Start i Resetovanje i Sat. Ima vodoravne i okomite izlaze za sinkronizaciju, RBG (koji se odnosi na boju piksela na određenoj lokaciji) i Score (koji djeluje kao sabirnica na 7-segmentni prikaz). Tipka gore će se koristiti kao početak dugme, a lijevo i desno dugme će se koristiti za pomicanje vesla u odgovarajućim smjerovima. Ekran sa 7 segmenata će se koristiti za bilježenje rezultata, što je broj sekundi koje je korisnik odigrao bez gubitka igre. Broj će biti prikazan kao decimalni broj.
Arhitektura kola: Napravit ćemo naš gizmo koristeći jedan FSM koji sadrži manji FSM, pod-FSM će kontrolirati poteškoće igre, dok će glavni FSM kontrolirati ukupni tijek igre. Naš gizmo će također koristiti najmanje tri razdjelnika sata, jedan za rezultat (vrijeme), jedan za brzinu osvježavanja ekrana i jedan koji je spojen na izlaz DeMuxa, tako da možemo kontrolirati koliko brzo igra nastavit će sa sve većim problemima. Igra će se kretati mnogo brže što duže igrate. Imat ćemo kontrolni ulaz DeMux prisutnog stanja pod-FSM-a, tako da možemo kontrolirati koliko će brzo igra trajati koliko dugo je igrate. Koristit ćemo nekoliko brojača, jedan za osvježavanje ekrana i jedan za brojanje rezultata dok nastavljate igru. Ovaj projekt ima dva glavna modula i niz podmodula koji će manipulirati ulaznim podacima. Dva glavna podmodula su VGA upravljački program, kao i logički modul dugmeta. VGA upravljački program će se sastojati od programabilne memorije, razdjelnika sata i logike koja će manipulirati izlazom za boju. Logički modul s gumbima također će se sastojati od razdjelnika sata i programabilne memorije, kao i binarno-decimalnog pretvarača za 7-segmentni zaslon sa pripadajućim razdjelnikom sata.
Korak 2: Proces slike
Za dio procesa obrade slike, mi ćemo odrediti kretanje lopte i vesla. Program ima priključke koji uključuju lijevo, desno, gornje i središnje dugme, trenutno stanje, sat, položaj X i Y lopte, lijevu i desnu ivicu vesla i grešku. Sadašnje stanje se koristi za određivanje omogućenog signala. Kôd prelazi više slučajeva u kojima se lopta može kretati i postavio je uslove za određivanje putanje lopte. Sljedeći procesni blok određuje smjer kretanja vesla na temelju toga koje je dugme korisnik pritisnuo. Kôd za ovaj dio projekta priložen je s detaljnim komentarima koji opisuju šta svaki odjeljak radi.
Korak 3: Rukovalac bodovima
Ovaj odjeljak se sastoji od datoteka koje se odnose na prikaz rezultata u sekundama na 7 -segmentnom prikazu na Basys3 ploči. Uključuje razdjelnik sata koji se koristi za brojanje sekundi, brojač rezultata broji sekunde koje korisnik svira, vozač segmenta uzima rezultat i pretvara ga u anode i katode koje će se prikazati na ekranu, a također određuje položaj koji broj će se prikazati i na kraju, rukovalac segmentima pretvara binarne znamenke u decimalne znamenke koje će se prikazati na ekranu. Voditelj bodova sastavlja sve dijelove i preslikava signale. Kôd za svih pet datoteka nalazi se u nastavku.
Razdjelnik sata:
Razdjelnik sata ima ulaze Clk (sat), CEN (omogućavanje ulaza) i Div (razdjelnik) i izlaz Clk_out. Ako je signal za uključivanje uključen, sat će računati na rastuću ivicu.
Score Counter
Brojač bodova ima ulaze Clk (Sat) i RST (Resetiranje) i izlaze Clk_Out i Q koji u suštini djeluje kao rezultat rezultata.
Upravljački program segmenta
Upravljački segment ima ulaz D1, D10, D100, D1000 i Sat. Brojevi iza "D" odnose se na decimalno mjesto na ekranu sa 7 segmenata. Izlazi su anode i znamenka. Sat broji i dodjeljuje brojeve i njegovu poziciju. Na primjer, "9" će biti prikazano na mjestu jedinica sa "0" na mjestu hiljada, stotina i desetica. Kada se prebaci na "10", broj će sada imati "1" na mjestu desetica i "0" na mjestu hiljada, stotina i jedinica.
Rukovalac segmentima
Rukovalac segmentima ima cifru kao ulaz i katode kao izlaz. To su u osnovi binarni brojevi na katodnom ekranu za ispis decimalnih brojeva na ekranu.
Score Handler
Rukovalac ocjenama sastoji se od prethodna četiri entiteta i sastavlja sve zajedno i preslikava signale. Takođe omogućava i onemogućava brojač na osnovu trenutnog stanja.
Korak 4: Generiranje slike
Generacija slike sastoji se od četiri komponente: Animacija, Brojač grešaka, Osvježavanje slike i Brojač početka. Ove datoteke upućuju na to kako generirati slike na monitoru zaslona.
Animacija
Datoteka animacije ima ulaze Clk (signal sata), CEN (omogućavanje brojača), RST (signal za poništavanje), B_X (položaj X lopte), B_Y (položaj Y lopte), P_L (položaj lijevog vesla) i P_R (položaj desnog vesla). Izlazi su WA (adresa na koju upisujemo boju) i WD (boja koja se piše na određenoj adresi). Datoteka ima Play_Counter koji je brojač koji će se koristiti kao kontrolni ulaz za MUX, koder koji može ispisati ispravne boje na pravim mjestima, i na kraju multiplekser koji prikazuje ispravnu boju na osnovu položaja vesla i loptu.
Osvježi sliku
Datoteka Osvježi sliku koristi se za osvježavanje slike pri promjeni položaja loptice i lopatice. Datoteka uključuje komponente iz datoteka Animation, Start Counter i Fail Counter. Mapira signale iz svake komponente i koristi logiku stanja za određivanje signala i izlaznih adresa.
Start Counter
Startni brojač koristi ulaze Clk, RS i CEN i izlaze WA i WD. Koristi brojač i konverziju za određivanje upravljačkog ulaza za MUX. Multiplekser zatim koristi ulaz za određivanje ispravnih adresa u boji i šalje te podatke VGA upravljačkom programu. Ovo se koristi za prikaz "Pong -a" kada korisnik pokrene igru.
Brojač kvarova
Brojač grešaka se koristi za prikaz "Game Over" kada korisnik izgubi igru. Ima Clk, RST i CEN signal. Koristi brojač i formulu za konverziju za određivanje upravljačkog ulaza za MUX. Multiplekser zatim koristi ulaz za određivanje ispravnih adresa u boji i šalje te podatke VGA upravljačkom programu.
Korak 5: Pong igra
Ovaj odjeljak projekta uključuje datoteke Pong Master, Finite State Machine (FSM), Timer i Start Debounce.
Tajmer
Tajmer ima ulaze Clk (Sat) i PS (Trenutno stanje) i Tajmer i Clk_out kao izlaze. Tajmer se koristi za promjenu brzine igre otprilike svakih pet sekundi.
Protok FSM
FSM protoka ima ulaze Clk, Fail, Timer, Bttn_S (dugme Start) i Buttn_RST (dugme za resetovanje) i izlaz Pres_S (izlaz trenutnog stanja). FSM koristi mjerač vremena za ažuriranje sadašnjeg stanja u sljedeće stanje i nastavlja ažurirati sljedeće stanje sve dok igra ne dosegne nivo 5 gdje ostaje dok se igra ne završi.
Pokrenite Debounce
Start Debounce je početno odbijanje lopte. Ima ulaze S_in i Clk i izlaz S_out.
Pong MasterOva datoteka koristi sve prethodne komponente i čini je tako da sve komponente budu trenutne. To je glavna datoteka koja spaja sve prethodne komponente koje smo zajedno izgradili.
Korak 6: VGA upravljački program
VGA (Visual Graphics Array) upravljački program je softver koji se koristi za prihvatanje naredbi ili podataka koji se šalju na ekran. Vozača nam je dao naš profesor. Koristite upravljački program i VGA kabel za povezivanje Basys3 ploče s monitorom.
Sada biste trebali biti spremni za izradu vlastite Pong igre koristeći VHDL!
Preporučuje se:
Pong igra Andrea: 4 koraka
Pong Game by Andrea: Ovo je igra koja je izvorno došla odavde. Napravio sam igru, a zatim napravio neke promjene na osnovu toga. Pokazat ću vam korake stvaranja ove igre, a zatim ću vam dati kôd koji sam promijenio. Dodao sam neke izmjene izvornom kodu, poput promjene
Aruduino LED igra Brza igra za dva igrača: 8 koraka
Aruduino LED igra Brza igra za dva igrača: Ovaj projekat je inspirisan @HassonAlkeim. Ako ste voljni detaljno pogledati, evo linka koji možete provjeriti https://www.instructables.com/id/Arduino-Two-Player-Fast-Button-Clicking-Game/. Ova igra je poboljšana verzija Alkeima. To je
8x8 Colorduino Pong igra: 3 koraka
8x8 Colorduino Pong igra: U ovom uputstvu pokazat ću vam kako sam izgradio pong igru, koristeći 8 x 8 RGB LED matrični modul ploče. Ovaj modul se zove Colorduino. Ima ugrađeni mikrokontroler i sučelje za povezivanje s drugim Colorduino pločama. Ima sposobnost
8x16 LED Matrix pong igra (2 vesla po igraču): 3 koraka
8x16 LED Matrix Pong igra (2 vesla po igraču): Inspiriran sam mnogim varijacijama klasične igre Pong implementirane na Arduinu koristeći 8x8 LED matricu. U ovom uputstvu pokazat ću vam kako izgraditi moju omiljenu verziju ponga koja ima dva vesla - napadača i golmana - po igraču
Interaktivna igra Tic-Tac Toe igra kojom se upravlja pomoću Arduina: 6 koraka
Interaktivna igra Tic-Tac Toe nogom kontrolirana s Arduinom: Cilj projekta Physical Tic-Tac-Toe je premjestiti dobro poznatu igru u fizičko područje. U početku igru igraju dva igrača na komadu papira - stavljajući naizmjence simbole 'X' i 'O'. Naša ideja je bila ispitati ponašanje igrača