Sadržaj:

Pong igra: 6 koraka
Pong igra: 6 koraka

Video: Pong igra: 6 koraka

Video: Pong igra: 6 koraka
Video: Обзор игры Tropico 6 2024, Srpanj
Anonim
Pong igra
Pong igra

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

Pregled
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

Voditelj bodova
Voditelj bodova

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

Pong igra
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: