Talaan ng mga Nilalaman:

Pong Game: 6 Hakbang
Pong Game: 6 Hakbang

Video: Pong Game: 6 Hakbang

Video: Pong Game: 6 Hakbang
Video: Работа ног в настольном теннисе предельно важна 2024, Hulyo
Anonim
Pong Game
Pong Game

Mga Materyales:

Basys3 FPGA Board

VGA cable

Vivado

Ang layunin ng pagtuturo na ito ay upang bumuo ng isang laro ng Pong na ipapakita sa isang monitor. Gagamitin ng proyekto ang VHDL sa programa at gumagamit ng isang Basys3 FPGA upang maisakatuparan ang code at ilipat ang imahe gamit ang isang VGA interface. Ang tutorial na ito ay inilaan para sa mga taong may kaunting paunang kaalaman sa VHDL. Ang tutorial ay nahahati sa 6 na magkakaibang seksyon: Pangkalahatang-ideya, Proseso, Handler ng Kalidad, Pagbuo ng Imahe, Pong Game, at VGA.

Hakbang 1: Pangkalahatang-ideya

Pangkalahatang-ideya
Pangkalahatang-ideya

Ang Imahe sa itaas ay ang pangkalahatang eskematiko na disenyo ng proyekto

Layunin ng Laro:

Ang laro ay binubuo ng isang display na may isang sliding paddle na maaaring kontrolin ng gumagamit, at isang nakapirming pader na kumikilos bilang itaas na nakatali. Kapag pinindot ng gumagamit ang start button, na kung saan ay ang up button, magsisimulang tumalbog ang bola, at tatalbog sa pader at tatangkang patulan ang sagwan. Kung ang bola ay tumama sa sagwan, ito ay tumalbog muli at patuloy na tumatalbog hanggang sa makaligtaan ang sagwan. Tapos na ang laro kapag nabigo ang bola na tumama sa sagwan. Magagamit ng gumagamit ang kaliwa at kanang mga pindutan upang matukoy ang paggalaw ng sagwan. Upang mai-reset ang laro, dapat itulak ng gumagamit ang pindutan ng gitna. Ang oras ng pagtakbo ay maitatala sa isang 7 segment na pagpapakita. Mayroong limang mga antas, at bawat sampung segundo tumataas ang antas, hanggang sa maabot mo ang antas 5 kung saan ito mananatili hanggang sa mawala ang gumagamit. Ang mga antas ay natutukoy ng bilis ng bola; nangangahulugan ito na bawat sampung segundo, ang bilis ng bola ay nagdaragdag, sa gayon ay nadaragdagan ang kahirapan ng laro.

System Architecture:

Ang diagram sa ibaba ay ang pangunahing pangkalahatang antas ng nangungunang antas ng block para sa system. Ang system ay may apat na input: Button R, Button L, Start, at Reset, at isang Clock. Mayroon itong pahalang at patayong mga output ng pag-sync, RBG (na tumutukoy sa kulay ng pixel sa isang tiyak na lokasyon), at Kalidad (na gumaganap bilang isang bus sa display na 7-Segment). Ang pataas na pindutan ay gagamitin bilang simula pindutan, at ang kaliwa at kanang mga pushbutton ay gagamitin upang ilipat ang sagwan sa kani-kanilang mga direksyon. Gagamitin ang 7-Segment Display upang maitala ang marka, na bilang ng mga segundo na naglalaro ang gumagamit nang hindi nawawala ang laro. Ipapakita ang numero bilang isang decimal number.

Circuit Architecture: Buuin namin ang aming gizmo gamit ang isang FSM na naglalaman ng isang mas maliit na FSM, makokontrol ng sub-FSM ang kahirapan ng laro samantalang ang pangunahing FSM ay makokontrol ang pangkalahatang daloy ng laro. Gumagamit din ang aming gizmo ng hindi bababa sa tatlong mga divider ng orasan, isa para sa iskor (oras), isa para sa rate ng pag-refresh ng isang display at isa na naka-link sa output ng isang DeMux upang makontrol namin kung gaano kabilis ang laro ay magpapatuloy sa pagtaas ng halaga ng kahirapan. Mas mabilis ang paggalaw ng laro sa pag-play mo. Magkakaroon kami ng kontrol sa pag-input ng DeMux na naroroon sa estado ng sub-FSM upang makontrol namin kung gaano kabilis ang pagpunta sa laro kung gaano katagal mo ito nilalaro. Gumagamit kami ng ilang mga counter, isa upang i-refresh ang display at isa upang mabilang ang iskor sa pagpapatuloy mong maglaro. Ang proyektong ito ay may dalawang pangunahing mga module at isang hanay ng mga submodule na manipulahin ang data ng pag-input. Ang dalawang pangunahing submodule ay ang VGA Driver, pati na rin ang pindutan ng module ng lohika. Ang VGA Driver ay binubuo ng programmable memory, isang relo ng orasan, at ang lohika na pagmamanipula ng output para sa kulay. Ang module ng pindutan ng lohika ay magkakaroon din ng isang tagahati ng orasan, at isang nai-program na memorya, pati na rin isang binary sa decimal converter para sa 7-Segment Display na may kani-kanilang divider ng orasan.

Hakbang 2: Proseso ng Imahe

Para sa seksyon ng Proseso ng Imahe ng proyekto, matutukoy namin ang paggalaw ng bola at ng sagwan. Ang programa ay may mga port na kasama ang kaliwa, kanan, itaas at gitnang pushbuttons, ang kasalukuyang estado, isang orasan, ang mga posisyon ng X at Y ng bola, ang kaliwa at kanang gilid ng sagwan at isang pagkabigo. Ang kasalukuyang estado ay ginagamit upang matukoy ang paganahin ang signal. Napunta ang code sa maraming mga kaso na maaaring ilipat ng bola, at nagtakda ng mga kundisyon upang matukoy ang landas ng bola. Tinutukoy ng susunod na bloke ng proseso ang direksyon na gumagalaw ng sagwan batay sa kung aling pindutan ang pinindot ng gumagamit. Ang code para sa bahaging ito ng proyekto ay nakakabit na may detalyadong mga komento na naglalarawan sa kung ano ang ginagawa ng bawat seksyon.

Hakbang 3: Tagapamahala ng Kalidad

Tagapamahala ng Kalidad
Tagapamahala ng Kalidad

Ang seksyon na ito ay binubuo ng mga file na nauugnay sa pagpapakita ng marka sa mga segundo sa 7 Segment Display sa Basys3 Board. Nagsasama ito ng isang divider ng orasan na ginagamit upang bilangin ang mga segundo, binibilang ng isang counter ng iskor ang mga segundo na naglalaro ang gumagamit, kinukuha ng driver ang segment at binago ito sa mga anode at cathode upang maipakita sa screen at natutukoy din ang posisyon na ang numero ay ipapakita at panghuli, binago ng handler ng segment ang mga binary digit sa decimal digit upang maipakita sa screen. Pinagsasama-sama ng handler ng iskor ang lahat ng mga piraso at nai-mapa ang mga signal. Ang code para sa lahat ng limang mga file ay nakakabit sa ibaba.

Cider Divider:

Ang relo ng orasan ay may mga input na Clk (orasan), CEN (paganahin), at Div (divider) at output ng Clk_out. Kung ang naka-on na signal ay nakabukas, pagkatapos ay mabibilang ang orasan sa tumataas na gilid.

Counter ng Kalidad

Ang Thescore counter ay may mga input na Clk (Clock) at RST (Reset) at mga output na Clk_Out at Q na mahalagang gumaganap bilang output ng iskor.

Segment Driver

Ang driver ng segment ay may mga input na D1, D10, D100, D1000, at Clock. Ang mga numero pagkatapos ng "D" ay tumutukoy sa decimal na lugar sa 7 segment na pagpapakita. Ang mga output ay ang mga anode at ang digit. Nagbibilang ang orasan at nagtatalaga ng mga numero at posisyon nito. Halimbawa, ang isang "9" ay ipapakita sa mga lugar na may "0" s sa libo-libo, daan-daang at sampu na lugar. Kapag lumipat ito sa "10", ang numero ay magkakaroon ngayon ng isang "1" sa sampu-sampung lugar at "0" sa libo-libo, daan-daang at lugar.

Tagapamahala ng Segment

Ang handler ng segment ay may digit bilang input nito at mga cathode bilang output nito. Mahalaga ang mga binary na numero sa display ng cathode upang mag-output ng mga decimal number sa screen.

Tagapamahala ng Kalidad

Ang Score Handler ay binubuo ng nakaraang apat na nilalang at pinagsasama ang lahat at nai-map ang mga signal. Pinapayagan din nito at hindi pinapagana ang counter batay sa kasalukuyang estado.

Hakbang 4: Pagbuo ng Larawan

Ang pagbuo ng imahe ay binubuo ng apat na bahagi: Animation, Fail Counter, Refresh Image at Start Counter. Ang mga file na ito ay sumangguni kung paano bumuo ng mga imahe sa display monitor.

Animasyon

Ang Animation file ay may mga input na Clk (Clock Signal), CEN (count count), RST (Reset Signal), B_X (X na posisyon ng bola), B_Y (Y posisyon ng Ball), P_L (left paddle posisyon), at P_R (tamang posisyon ng paddle). Ang mga output ay WA (ang address na sinusulat namin ang kulay sa), at WD (ang kulay na nakasulat sa tinukoy na address). Ang file ay mayroong Play_Counter na isang counter na gagamitin bilang isang input ng kontrol para sa MUX, isang encoder na maaaring maglabas ng mga tamang kulay sa mga tamang lugar, at panghuli isang multiplexer na nagpapakita ng tamang kulay batay sa posisyon ng sagwan at bola

I-refresh ang Larawan

Ang Refresh Image file ay ginagamit upang i-refresh ang imahe bilang posisyon ng bola at pagsagwan ng pagbabago. Kasama sa file ang mga bahagi mula sa mga file na Animation, Start Counter at Fail Counter. Ini-map ang mga signal mula sa bawat bahagi at gumagamit ng lohika ng estado upang matukoy ang mga signal at output address.

Start Counter

Gumagamit ang Start Counter ng mga input na Clk, RS, at CEN at mga output na WA at WD. Gumagamit ito ng isang counter at conversion upang matukoy ang control input para sa MUX. Pagkatapos ay gagamitin ng Multiplexer ang input upang matukoy ang tamang mga kulay ng address at ipadala ang data na ito sa driver ng VGA. Ginagamit ito upang maipakita ang "Pong" kapag sinimulan ng gumagamit ang laro.

Fail Counter

Ginagamit ang fail counter upang maipakita ang "Game Over" kapag natalo ang laro sa gumagamit. Mayroon itong signal ng Clk, RST, at CEN. Gumagamit ito ng isang counter at isang formula ng conversion upang matukoy ang control input para sa MUX. Pagkatapos ay gagamitin ng Multiplexer ang input upang matukoy ang tamang mga kulay ng address at ipadala ang data na ito sa driver ng VGA.

Hakbang 5: Laro ng Pong

Pong Game
Pong Game

Kasama sa seksyong ito ng proyekto ang mga Pong Master, Finite State Machine (FSM), Timer, at Start Debounce file.

Timer

Ang timer ay may mga input na Clk (Clock) at PS (Kasalukuyang Estado) at Timer at Clk_out bilang mga output. Ginagamit ang timer upang mabago ang bilis ng laro bawat limang segundo.

Daloy ng FSM

Ang Flow FSM ay may mga input na Clk, Fail, Timer, Bttn_S (Start Button) at Buttn_RST (Reset Button) at output Pres_S (Present State Output). Gumagamit ang FSM ng timer upang mai-update ang Kasalukuyang Estado sa Susunod na Estado at patuloy na i-update ang Susunod na Estado hanggang sa maabot ang laro sa antas 5 kung saan mananatili ito hanggang sa matapos ang laro.

Simulan ang Pagwawasak

Ang Start Debounce ay ang panimulang bounce ng bola. Mayroon itong mga input na S_in at Clk, at output S_out.

Ang Pong MasterThis file ay gumagamit ng lahat ng nakaraang mga sangkap at ginagawa ito upang ang lahat ng mga bahagi ay madalian. Ito ang master file na pinagsasama-sama ang lahat ng mga nakaraang bahagi na sama-sama nating binuo.

Hakbang 6: VGA Driver

Ang VGA (Visual Graphics Array) Driver ay isang piraso ng software na ginagamit upang tanggapin ang mga utos o data na ipinadala sa display screen. Ang driver ay ibinigay sa amin ng aming propesor. Gamitin ang driver at isang VGA cord upang ikonekta ang Basys3 board sa monitor.

Dapat handa ka na ngayon upang gumawa ng iyong sariling Pong Game gamit ang VHDL!

Inirerekumendang: