Kazalo:
- 1. korak: Pregled
- Korak: Postopek slike
- 3. korak: Upravljavec točk
- 4. korak: Ustvarjanje slike
- 5. korak: Pong igra
- Korak: Gonilnik VGA
Video: Pong igra: 6 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:05
Materiali:
Basys3 FPGA plošča
VGA kabel
Vivado
Namen tega navodila je razviti pong igro, ki bo prikazana na monitorju. Projekt bo za programiranje uporabil VHDL in uporabil Basys3 FPGA za izvajanje kode in prenos slike z vmesnikom VGA. Ta vadnica je namenjena ljudem, ki imajo malo predznanja o VHDL. Vadnica bo razdeljena na 6 različnih razdelkov: Pregled, Proces, Vodnik ocenjevanja, Ustvarjanje slik, Pong igra in VGA.
1. korak: Pregled
Zgornja slika je celostna shema projekta
Cilj igre:
Igra je sestavljena iz zaslona z drsnim veslom, ki ga lahko upravlja uporabnik, in fiksne stene, ki deluje kot zgornja meja. Ko uporabnik pritisne gumb za zagon, ki je gumb navzgor, se bo žogica začela odbijati navzgor, odbijala pa se bo od stene in poskušala udariti v veslo. Če žoga zadene veslo, se znova odbije in nadaljuje z odbijanjem, dokler ne zgreši vesla. Igra se konča, ko žoga ne zadene vesla. Uporabnik bo lahko z levim in desnim gumbom določil gibanje vesla. Za ponastavitev igre mora uporabnik pritisniti osrednji gumb. Čas teka se zabeleži na 7 -segmentnem zaslonu. Obstaja pet stopenj in vsakih deset sekund se raven povečuje, dokler ne dosežete stopnje 5, kjer ostane, dokler uporabnik ne izgubi. Ravni so določene s hitrostjo žoge; to pomeni, da se vsakih deset sekund hitrost žoge poveča in s tem poveča težavnost igre.
Arhitektura sistema:
Spodnji diagram je osnovni splošni zgornji blokovni diagram sistema. Sistem ima štiri vhode: gumb R, gumb L, zagon in ponastavitev ter uro. Ima vodoravne in navpične izhode za sinhronizacijo, RBG (kar se nanaša na barvo slikovne pike na določeni lokaciji) in Score (ki deluje kot vodilo za 7-segmentni zaslon). Gumb gor se bo uporabil kot začetek gumb, levi in desni gumb pa bosta uporabljena za premikanje vesla v njihovih smereh. Za zapis rezultatov bo uporabljen 7-segmentni zaslon, ki je število sekund, ki jih je uporabnik igral brez izgube igre. Številka bo prikazana kot decimalna številka.
Arhitektura vezja: Naš gizmo bomo zgradili z enim FSM-jem, ki vsebuje manjši FSM, pod-FSM bo nadzoroval težavnost igre, medtem ko bo glavni FSM nadzoroval celoten potek igre. Naš gizmo bo uporabljal tudi vsaj tri delilnike ure, enega za rezultat (čas), enega za hitrost osveževanja zaslona in drugega, ki je priključen na izhod DeMuxa, tako da lahko nadzorujemo, kako hitro se igra bo nadaljeval z naraščajočimi težavami. Dlje ko igrate, se bo igra premikala veliko hitreje. Kontrolni vhod DeMux prisotnega stanja pod-FSM bomo imeli, tako da lahko nadzorujemo, kako hitro bo igra potekala, kako dolgo jo igrate. Uporabili bomo nekaj števcev, enega za osvežitev zaslona in enega za štetje rezultatov, ko nadaljujete z igro. Ta projekt ima dva glavna modula in niz podmodulov, ki bodo upravljali vhodne podatke. Dva glavna podmodula sta gonilnik VGA in logični modul gumbov. Gonilnik VGA bo sestavljen iz programabilnega pomnilnika, delilnika ure in logike, ki bo vplivala na barvni izhod. Gumbni logični modul bo prav tako sestavljen iz delilnika ure in programabilnega pomnilnika ter binarno-decimalnega pretvornika za 7-segmentni zaslon z ustreznim delilnikom ure.
Korak: Postopek slike
Za odsek Image Process v projektu bomo določali gibanje žoge in vesla. Program ima vrata, ki vključujejo levi, desni, zgornji in sredinski gumb, trenutno stanje, uro, položaj X in Y žoge, levi in desni rob vesla in napako. Trenutno stanje se uporablja za določanje signala za omogočanje. Koda gre čez več primerov, da se žogica lahko premika, in ima določene pogoje za določitev poti žoge. Naslednji procesni blok določa smer premikanja vesla na podlagi tega, kateri gumb uporabnik pritisne. Koda za ta del projekta je priložena s podrobnimi komentarji, ki opisujejo, kaj počne vsak odsek.
3. korak: Upravljavec točk
Ta razdelek je sestavljen iz datotek, ki se nanašajo na prikaz rezultatov v nekaj sekundah na 7 -segmentnem zaslonu na deski Basys3. Vključuje delilnik ure, ki se uporablja za štetje sekund, števec rezultatov šteje sekunde, ki jih igra uporabnik, voznik segmenta vzame rezultat in ga pretvori v anode in katode, ki bodo prikazane na zaslonu, ter določi tudi položaj, ki bo prikazana številka in nazadnje upravljavec segmentov pretvori binarne števke v decimalne števke, ki bodo prikazane na zaslonu. Vodja rezultatov sestavi vse kose in preslika signale. Koda za vseh pet datotek je priložena spodaj.
Razdelilnik ure:
Ločilnik ure ima vhode Clk (ura), CEN (omogoči vhod) in Div (delilec) ter izhod Clk_out. Če je signal za omogočanje vklopljen, bo ura računala na naraščajoči rob.
Števec točk
Števec rezultatov ima vhode Clk (ura) in RST (ponastavitev) ter izhode Clk_Out in Q, ki v bistvu delujeta kot rezultat za rezultat.
Gonilnik segmenta
Segmentacijski gonilnik ima vhode D1, D10, D100, D1000 in uro. Številke za "D" se nanašajo na decimalno mesto na 7 -segmentnem zaslonu. Izhoda sta anodi in številka. Ura šteje in dodeljuje številke in njihov položaj. Na primer, "9" bo prikazano na mestu tistih, kjer je "0" na tisočih, stotinah in deseticah. Ko preklopi na "10", bo število zdaj imelo "1" na mestu desetic in "0" na mestu tisočev, stotin in ena.
Obdelovalec segmentov
Upravljavec segmentov ima za vhod številko, za izhod pa katode. To so v bistvu binarne številke na katodnem zaslonu za prikaz decimalnih števil na zaslonu.
Vodnik rezultatov
Score Handler je sestavljen iz prejšnjih štirih entitet in združuje vse skupaj ter preslika signale. Prav tako omogoča in onemogoča števec glede na trenutno stanje.
4. korak: Ustvarjanje slike
Generiranje slike je sestavljeno iz štirih komponent: Animacija, Števec napak, Osveži sliko in Začni števec. Te datoteke opisujejo, kako ustvariti slike na monitorju.
Animacija
Datoteka z animacijo ima vhode Clk (signal ure), CEN (omogočanje štetja), RST (ponastavitev signala), B_X (položaj X žoge), B_Y (položaj žoge Y), P_L (levi položaj vesla) in P_R (položaj desnega vesla). Izhodi so WA (naslov, na katerega pišemo barvo) in WD (barva, ki se piše na določenem naslovu). Datoteka ima Play_Counter, ki je števec, ki se bo uporabljal kot kontrolni vhod za MUX, kodirnik, ki lahko prikaže prave barve na pravih mestih, in nazadnje multiplekser, ki prikazuje pravilno barvo glede na položaj vesla in žoga.
Osveži sliko
Datoteka Osveži sliko se uporablja za osvežitev slike, ko se položaj žoge in vesla spreminja. Datoteka vsebuje komponente iz datotek Animation, Start Counter in Fail Counter. Preslika signale iz vsake komponente in uporablja logiko stanja za določanje signalov in izhodnih naslovov.
Začni števec
Začetni števec uporablja vhode Clk, RS in CEN ter izhode WA in WD. Za določitev krmilnega vhoda za MUX uporablja števec in pretvorbo. Multiplekser nato uporabi vhod za določitev pravilnih barvnih naslovov in te podatke pošlje gonilniku VGA. To se uporablja za prikaz "Pong", ko uporabnik zažene igro.
Števec napak
Števec napak se uporablja za prikaz "Game Over", ko uporabnik izgubi igro. Ima signal Clk, RST in CEN. Za določitev krmilnega vhoda za MUX uporablja števec in formulo za pretvorbo. Multiplekser nato uporabi vhod za določitev pravilnih barvnih naslovov in te podatke pošlje gonilniku VGA.
5. korak: Pong igra
Ta del projekta vključuje datoteke Pong Master, Finite State Machine (FSM), Timer in Start Debounce.
Časovnik
Časovnik ima kot izhode vhode Clk (Ura) in PS (Trenutno stanje) ter Timer in Clk_out. Časovnik se uporablja za spreminjanje hitrosti igre približno vsakih pet sekund.
Pretok FSM
Pretočni FSM ima vhode Clk, Fail, Timer, Bttn_S (gumb za zagon) in Buttn_RST (gumb za ponastavitev) ter izhod Pres_S (Present State Output). FSM uporablja časovnik za posodabljanje trenutnega stanja v naslednje stanje in posodablja naslednje stanje, dokler igra ne doseže stopnje 5, kjer ostane, dokler se igra ne konča.
Začni Debounce
Start Debounce je začetni odboj žoge. Ima vhode S_in in Clk ter izhod S_out.
Pong Master Ta datoteka uporablja vse prejšnje komponente in omogoča, da so vse komponente takojšnje. Glavna datoteka združuje vse prejšnje komponente, ki smo jih skupaj zgradili.
Korak: Gonilnik VGA
Gonilnik VGA (Visual Graphics Array) je del programske opreme, ki se uporablja za sprejemanje ukazov ali podatkov, ki se pošljejo na zaslon. Voznika nam je dal naš profesor. Z gonilnikom in kablom VGA priključite ploščo Basys3 na monitor.
Zdaj bi morali biti pripravljeni na izdelavo lastne igre Pong z uporabo VHDL!
Priporočena:
DINO IGRA Z UPORABO LDR: 5 korakov
DINO IGRA Z UPORABO LDR: Igra dinozaver, znana tudi kot igra T-Rex in Dino Runner, je vgrajena brskalniška igra v spletnem brskalniku Google Chrome. Igro je ustvaril Sebastien Gabriel leta 2014, do nje pa lahko dostopate tako, da pritisnete preslednico, ko niste povezani v brskalniku Google Chrome
Pong igra Andrea: 4 koraki
Igra Pong Andrea: To je igra, ki je prvotno prišla od tu. Naredil sem igro in na podlagi tega naredil nekaj sprememb. Pokazal vam bom korake pri ustvarjanju te igre, nato pa vam dal kodo, ki sem jo spremenil. Izvirni kodi sem dodal nekaj sprememb, na primer spremembo
Igra 8x8 Colorduino Pong: 3 koraki
Igra 8x8 Colorduino Pong: V tem navodilu vam bom pokazal, kako sem zgradil 8 x 8 RGB LED matrično ploščo z LED ploščami. Ta modul se imenuje Colorduino. Ima vgrajen mikrokrmilnik in vmesnik za povezavo z drugimi ploščami Colorduino. Ima sposobnost
8x16 LED Matrix pong igra (2 vesla na igralca): 3 koraki
8x16 LED Matrix Pong igra (2 različici vesla na igralca): navdihnilo me je veliko različic klasične igre Pong, izvedene na Arduinu z uporabo matrike LED 8x8. V tem navodilu vam bom pokazal, kako sestaviti mojo najljubšo različico ponga, ki ima dva igralca - napadalca in vratarja - na igralca.
Pong igra fleksibilen zaslon na srajci: 8 korakov (s slikami)
Pong igra fleksibilen zaslon na srajci: To je moj kostum za noč čarovnic za leto 2013. Delal je že približno eno leto, ustvarjanje pa je trajalo kar nekaj ur. Zaslon je velikosti 14 x 15 slikovnih pik, kar pomeni, da ima precej nizko ločljivost, vendar lahko kljub temu naredi nekaj zabavnih stvari. Fizično leti