Sadržaj:
- Korak 1: Pregled
- Korak 2: Postupak 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 promjena: 2024-01-30 09:35
Materijali:
Basys3 FPGA ploča
VGA kabel
Vivado
Svrha ovog uputstva je razviti igru Pong 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 je vodič namijenjen ljudima koji imaju malo predznanja o VHDL -u. Vodič će biti podijeljen u 6 različitih odjeljaka: Pregled, Proces, Obrađivač bodova, Generiranje slika, 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 gumb za pokretanje, koji je gumb za gore, lopta će se početi odbijati prema gore, a odbijat će se od zida i pokušati udariti u veslo. Ako lopta udari u veslo, ona se ponovno odbija i nastavlja poskakivati sve dok ne promaši veslo. Igra je gotova kada lopta ne uspije pogoditi veslo. Korisnik će moći koristiti lijevo i desno dugme za određivanje kretanja vesla. Kako bi resetirao igru, korisnik mora pritisnuti središnji gumb. Vrijeme trčanja bit će zabilježeno na 7 -segmentnom zaslonu. Postoji pet razina, a svakih deset sekundi razina se povećava, sve dok ne dosegnete 5. razinu gdje ostaje dok korisnik ne izgubi. Razine su određene brzinom lopte; to znači da se svakih deset sekundi brzina lopte povećava, čime se povećava težina igre.
Arhitektura sustava:
Donji dijagram je osnovni ukupni blok dijagram najviše razine za sustav. Sustav ima četiri ulaza: gumb R, gumb L, start i resetiranje te sat. Ima vodoravne i okomite izlaze za sinkronizaciju, RBG (što se odnosi na boju piksela na određenom mjestu) i Score (koji djeluje kao sabirnica na 7-segmentni zaslon). Gumb gore će se koristiti kao početak gumb, a lijevo i desno tipko će se koristiti za pomicanje vesla u odgovarajućim smjerovima. Zaslon sa 7 segmenata će se koristiti za bilježenje rezultata, što je broj sekundi koje je korisnik igrao bez gubitka igre. Broj će biti prikazan kao decimalni broj.
Arhitektura kruga: Izgradit ć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š će gizmo također koristiti najmanje tri razdjelnika sata, jedan za rezultat (vrijeme), jedan za brzinu osvježavanja prikaza i jedan koji je spojen na izlaz DeMuxa kako bismo mogli kontrolirati koliko brzo igra nastavit će sa sve većim količinama poteškoća. 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 zaslona i jedan za odbrojavanje rezultata dok nastavljate igrati. 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 tipke. VGA upravljački program sastojat će se od programabilne memorije, razdjelnika sata i logike koja će manipulirati izlazom za boju. Logički modul tipke također će se sastojati od razdjelnika sata i programabilne memorije, kao i binarno-decimalnog pretvarača za 7-segmentni zaslon s pripadajućim razdjelnikom sata.
Korak 2: Postupak slike
Za dio procesa obrade slike, mi ćemo odrediti kretanje loptice i vesla. Program ima priključke koji uključuju lijevo, desno, gornje i središnje tipke, trenutno stanje, sat, položaj X i Y lopte, lijevi i desni rub vesla i grešku. Sadašnje stanje koristi se za određivanje signala za omogućavanje. Kôd prelazi više slučajeva u kojima se lopta može kretati i postavio je uvjete za određivanje putanje lopte. Sljedeći procesni blok određuje smjer kretanja vesla na temelju toga koji je korisnik pritisnuo gumb. Kôd za ovaj dio projekta priložen je s detaljnim komentarima koji opisuju što svaki odjeljak radi.
Korak 3: Rukovalac bodovima
Ovaj odjeljak sastoji se od datoteka koje se odnose na prikaz rezultata u sekundama na 7 -segmentnom zaslonu na ploči Basys3. Uključuje razdjelnik sata koji se koristi za odbrojavanje sekundi, brojač rezultata broji sekunde koje korisnik svira, vozač segmenta uzima rezultat i pretvara ga u anode i katode koje će se prikazati na zaslonu, 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 zaslonu. 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ći ulaz) i Div (razdjelnik) i izlaz Clk_out. Ako je signal za uključivanje uključen, sat će računati na rastući rub.
Brojač bodova
Brojač bodova ima ulaze Clk (Sat) i RST (Resetiranje) i izlaze Clk_Out i Q koji u biti djeluje kao rezultat rezultata.
Upravljački program segmenta
Upravljač segmenta ima ulaze D1, D10, D100, D1000 i Sat. Brojevi iza "D" odnose se na decimalno mjesto na 7 -segmentnom zaslonu. Izlazi su anode i znamenka. Sat broji i dodjeljuje brojeve i njegov položaj. Na primjer, "9" će biti prikazano na mjestima jedinica s "0" na mjestu tisuća, stotina i desetaka. Kad se prebaci na "10", broj će sada imati "1" na mjestu desetica i "0" na mjestu tisuća, stotina i jedinica.
Rukovalac segmentima
Rukovalac segmentima ima broj kao ulaz i katode kao izlaz. To su u biti binarni brojevi na katodnom zaslonu za ispis decimalnih brojeva na ekranu.
Voditelj bodova
Rukovalac ocjenama sastoji se od prethodna četiri entiteta i sve to spaja i preslikava signale. Također omogućuje i onemogućuje brojač na temelju trenutnog stanja.
Korak 4: Generiranje slike
Generacija slike sastoji se od četiri komponente: animacije, brojača grešaka, osvježavanja slike i brojača 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 temelju položaja vesla i lopta.
Osvježi sliku
Datoteka Osvježi sliku koristi se za osvježavanje slike pri promjeni položaja loptice i vesla. 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.
Pokreni brojač
Start Counter koristi ulaze Clk, RS i CEN i izlaze WA i WD. Koristi brojač i pretvorbu 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" kada korisnik pokrene igru.
Brojač kvarova
Brojač neuspjeha koristi se za prikaz "Game Over" kada korisnik izgubi igru. Ima Clk, RST i CEN signal. Koristi brojač i formulu pretvorbe 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.
Mjerač vremena
Mjerač vremena ima ulaze Clk (Sat) i PS (Trenutno stanje) te Timer i Clk_out kao izlaze. Tajmer se koristi za promjenu brzine igre otprilike svakih pet sekundi.
FSM protoka
FSM protoka ima ulaze Clk, Fail, Timer, Bttn_S (gumb Start) i Buttn_RST (gumb za resetiranje) i izlaz Pres_S (izlaz sadašnjeg 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 razinu 5 gdje ostaje dok igra ne završi.
Pokrenite Debounce
Start Debounce početni je odskok 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 trenutačne. 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 dio je softvera koji se koristi za prihvaćanje naredbi ili podataka koji se šalju na zaslon. 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čeni:
Pong igra by 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 temelju toga. Pokazat ću vam korake za izradu ove igre, a zatim ću vam dati kôd koji sam promijenio. Dodao sam neke izmjene izvornom kodu, poput promjene
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 se modul naziva 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 LED matricu 8x8. U ovom uputstvu pokazat ću vam kako izgraditi svoju omiljenu verziju ponga koja ima dva vesla - napadača i golmana - po igraču
Interaktivna igra Tic-Tac Toe igra s Arduinom: 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. Izvorno, igru igraju dva igrača na komadu papira - stavljajući simbole "X" i "O" naizmjence. Naša ideja je bila ispitati ponašanje igrača
Pong igra fleksibilan zaslon na košulji: 8 koraka (sa slikama)
Pong igra fleksibilni ekran na košulji: Ovo je moj kostim za Noć vještica za 2013. godinu. Radilo se oko godinu dana, a za stvaranje mu je bilo potrebno nekoliko sati. Zaslon je 14 x 15 piksela, dakle, prilično niske rezolucije, ali ipak može učiniti neke zabavne stvari. Fizički leti