Sadržaj:

Pong igra: 6 koraka
Pong igra: 6 koraka

Video: Pong igra: 6 koraka

Video: Pong igra: 6 koraka
Video: Играй корпусом. Как быстро поставить накат справа.#tabletennis #настольныйтеннис #спорт 2024, Novembar
Anonim
Pong Game
Pong Game

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

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 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

Score Handler
Score Handler

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

Pong Game
Pong Game

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: