Satura rādītājs:

Tenisa spēle: 6 soļi
Tenisa spēle: 6 soļi

Video: Tenisa spēle: 6 soļi

Video: Tenisa spēle: 6 soļi
Video: 6 Базовых элементов настольного тенниса #техника 2024, Novembris
Anonim
Pong spēle
Pong spēle

Materiāli:

Basys3 FPGA padome

VGA kabelis

Vivado

Šīs pamācības mērķis ir izstrādāt tenisa spēli, kas tiks parādīta monitorā. Projekts programmēšanai izmantos VHDL un koda veikšanai izmantos Basys3 FPGA un pārsūtīs attēlu, izmantojot VGA interfeisu. Šī apmācība ir paredzēta cilvēkiem, kuriem ir nelielas priekšzināšanas par VHDL. Apmācība tiks sadalīta 6 dažādās sadaļās: pārskats, process, rezultātu apstrādātājs, attēlu ģenerēšana, tenisa spēle un VGA.

1. darbība. Pārskats

Pārskats
Pārskats

Augšējais attēls ir projekta shematiskais dizains

Spēles mērķis:

Spēle sastāv no displeja ar bīdāmu lāpstiņu, kuru var kontrolēt lietotājs, un no fiksētas sienas, kas darbojas kā augšējā robeža. Kad lietotājs nospiež sākuma pogu, kas ir augšupvērsta poga, bumba sāks atlēcienu uz augšu un atleks no sienas un mēģinās trāpīt pa lāpstiņu. Ja bumba ietriecas lāpstiņā, tā atkal atlec augšup un turpina lēkt, līdz palaiž garām lāpstiņu. Spēle ir beigusies, kad bumba nespēj trāpīt lāpstiņā. Lai noteiktu lāpstiņas kustību, lietotājs varēs izmantot kreiso un labo pogu. Lai atiestatītu spēli, lietotājam jānospiež centrālā poga. Skrējiena laiks tiks ierakstīts 7 segmentu displejā. Ir pieci līmeņi, un ik pēc desmit sekundēm līmenis palielinās, līdz sasniedzat 5. līmeni, kur tas paliek, līdz lietotājs zaudē. Līmeņus nosaka bumbas ātrums; tas nozīmē, ka ik pēc desmit sekundēm bumbas ātrums palielinās, tādējādi palielinot spēles grūtības.

Sistēmas arhitektūra:

Zemāk redzamā diagramma ir sistēmas vispārējā augstākā līmeņa blokshēma. Sistēmai ir četras ieejas: poga R, poga L, sākšana un atiestatīšana un pulkstenis. Tam ir horizontālas un vertikālas sinhronizācijas izejas, RBG (kas norāda uz pikseļa krāsu noteiktā vietā) un Score (kas darbojas kā kopne uz 7 segmentu displeju). Sākuma poga tiks izmantota pogu, un kreisās un labās pogas tiks izmantotas, lai pārvietotu lāpstiņu attiecīgajā virzienā. Rezultātu ierakstīšanai tiks izmantots 7 segmentu displejs, kas ir sekunžu skaits, ko lietotājs ir spēlējis, nezaudējot spēli. Numurs tiks parādīts kā decimālskaitlis.

Ķēdes arhitektūra: Mēs veidosim savu gizmo, izmantojot vienu MFV, kas satur mazāku MFV, apakšfSM kontrolēs spēles grūtības, turpretī galvenā MFV kontrolēs spēles kopējo plūsmu. Mūsu gizmo izmantos arī vismaz trīs pulksteņa dalītājus, vienu rezultātu (laiku), vienu displeja atsvaidzes intensitāti un vienu, kas ir savienots ar DeMux izvadi, lai mēs varētu kontrolēt spēles ātrumu turpināsies ar arvien lielākām grūtībām. Spēle kustēsies daudz ātrāk, jo ilgāk spēlēsi. Mums būs sub-FSM DeMux vadības ievade, lai mēs varētu kontrolēt spēles ātrumu un to, cik ilgi jūs to spēlējat. Mēs izmantosim dažus skaitītājus, vienu, lai atsvaidzinātu displeju, un otru, lai saskaitītu rezultātu, turpinot spēlēt. Šim projektam ir divi galvenie moduļi un apakšmoduļu masīvs, kas manipulēs ar ievades datiem. Divi galvenie apakšmoduļi ir VGA draiveris, kā arī pogu loģikas modulis. VGA draiveris sastāvēs no programmējamas atmiņas, pulksteņa dalītāja un loģikas, kas manipulēs ar krāsu izvadi. Pogas loģikas modulis sastāvēs arī no pulksteņa dalītāja un programmējamas atmiņas, kā arī no bināra līdz decimālam pārveidotājam 7 segmentu displejam ar attiecīgo pulksteņa dalītāju.

2. solis: attēla process

Projekta attēla procesa sadaļā mēs noteiksim bumbiņas un lāpstiņas kustību. Programmai ir porti, kas ietver kreisās, labās, augšējās un centra spiedpogas, pašreizējo stāvokli, pulksteni, bumbas X un Y pozīcijas, lāpstiņas kreiso un labo malu un neveiksmi. Pašreizējais stāvoklis tiek izmantots, lai noteiktu iespējošanas signālu. Kods aptver vairākus gadījumus, kad bumba var pārvietoties, un ir izvirzījis nosacījumus, lai noteiktu bumbas ceļu. Nākamais procesa bloks nosaka lāpstiņas kustības virzienu, pamatojoties uz to, kuru pogu lietotājs nospiež. Šīs projekta daļas kods ir pievienots ar detalizētiem komentāriem, kas apraksta katras sadaļas darbību.

3. darbība. Rezultātu apstrādātājs

Rezultātu apstrādātājs
Rezultātu apstrādātājs

Šī sadaļa sastāv no failiem, kas attiecas uz rezultātu parādīšanu sekundēs Basys3 tāfeles 7 segmentu displejā. Tas ietver pulksteņa dalītāju, ko izmanto, lai skaitītu sekundes, rezultātu skaitītājs saskaita sekundes, kuras lietotājs spēlē, segmenta vadītājs ņem rezultātu un pārvērš to par anodiem un katodiem, kas jāparāda ekrānā, kā arī nosaka pozīciju, tiks parādīts numurs, un, visbeidzot, segmentu apstrādātājs pārvērš bināros ciparus par decimālajiem cipariem, lai tie tiktu parādīti ekrānā. Rezultātu apstrādātājs apkopo visus gabalus un kartē signālus. Visu piecu failu kods ir pievienots zemāk.

Pulksteņa dalītājs:

Pulksteņa dalītājam ir ieejas Clk (pulkstenis), CEN (iespējot) un Div (dalītājs) un izeja Clk_out. Ja iespējošanas signāls ir ieslēgts, pulkstenis rēķinās uz augšupejošo malu.

Rezultātu skaitītājs

Rezultātu skaitītājam ir ievades Clk (pulkstenis) un RST (atiestatīšana), un izejas Clk_Out un Q, kas būtībā darbojas kā rezultātu iznākums.

Segmenta draiveris

Segmenta draiverim ir ieejas D1, D10, D100, D1000 un Pulkstenis. Skaitļi aiz "D" attiecas uz decimālzīmi 7 segmentu displejā. Izejas ir anodi un cipari. Pulkstenis skaita un piešķir skaitļus un tā pozīciju. Piemēram, vienuma vietā tiks parādīts “9”, bet tūkstošiem, simtiem un desmitiem - “0”. Kad tas pārslēgsies uz "10", skaitlim tagad desmitos būs "1", bet tūkstošiem, simtiem un vieniem - "0".

Segmentu apstrādātājs

Segmenta apstrādātāja ieeja ir cipars, bet izeja - katodi. Tas būtībā ir katoda displeja binārie skaitļi, lai ekrānā izvadītu decimāldaļas.

Rezultātu apstrādātājs

Rezultātu apstrādātājs sastāv no četrām iepriekšējām entītijām un saliek visu kopā un kartē signālus. Tas arī iespējo un atspējo skaitītāju, pamatojoties uz pašreizējo stāvokli.

4. solis: attēlu ģenerēšana

Attēlu ģenerēšana sastāv no četrām sastāvdaļām: Animācija, Fail Counter, Refresh Image un Start Counter. Šie faili norāda, kā ģenerēt attēlus displeja monitorā.

Animācija

Animācijas failā ir ievades Clk (pulksteņa signāls), CEN (skaitīšanas iespējošana), RST (atiestatīšanas signāls), B_X (bumbas X pozīcija), B_Y (bumbas Y pozīcija), P_L (kreisās lāpstiņas pozīcija) un P_R (labais lāpstiņas stāvoklis). Rezultāti ir WA (adrese, uz kuru mēs rakstām krāsu) un WD (krāsa tiek rakstīta uz noteikto adresi). Failam ir Play_Counter, kas ir skaitītājs, kas tiks izmantots kā MUX vadības ieeja, kodētājs, kas var izvadīt pareizās krāsas pareizajās vietās, un visbeidzot, multipleksors, kas parāda pareizo krāsu, pamatojoties uz lāpstiņas stāvokli un bumba.

Atsvaidzināt attēlu

Failu Atsvaidzināt attēlu izmanto, lai atsvaidzinātu attēlu, mainoties bumbiņas un lāpstiņas stāvoklim. Fails ietver komponentus no failiem Animācija, Sākuma skaitītājs un Fail Counter. Tas kartē signālus no katra komponenta un izmanto stāvokļa loģiku, lai noteiktu signālus un izejas adreses.

Sākt skaitītāju

Sākuma skaitītājs izmanto ievades Clk, RS un CEN un izejas WA un WD. Tas izmanto skaitītāju un konversiju, lai noteiktu MUX vadības ieeju. Multiplekseris pēc tam izmanto ievadi, lai noteiktu pareizās krāsu adreses, un nosūta šos datus VGA draiverim. To izmanto, lai parādītu "Pong", kad lietotājs sāk spēli.

Neveiksmju skaitītājs

Neveiksmju skaitītājs tiek izmantots, lai parādītu "Spēle beigusies", kad lietotājs zaudē spēli. Tam ir Clk, RST un CEN signāls. Tas izmanto skaitītāju un konvertēšanas formulu, lai noteiktu MUX vadības ievadi. Multiplekseris pēc tam izmanto ievadi, lai noteiktu pareizās krāsu adreses, un nosūta šos datus VGA draiverim.

5. solis: tenisa spēle

Pong spēle
Pong spēle

Šajā projekta sadaļā ietilpst Pong Master, Finite State Machine (FSM), taimeris un Start Debounce faili.

Taimeris

Taimerim ir izejas Clk (Pulkstenis) un PS (pašreizējais stāvoklis) un Taimeris un Clk_out kā izejas. Taimeris tiek izmantots, lai mainītu spēles ātrumu apmēram ik pēc piecām sekundēm.

Plūsmas MFV

Plūsmas FSM ir ieejas Clk, Fail, Timer, Bttn_S (Start Button) un Buttn_RST (Reset Button) un izeja Pres_S (Present State Output). MFV izmanto taimeri, lai atjauninātu pašreizējo stāvokli uz nākamo stāvokli, un turpina atjaunināt nākamo stāvokli, līdz spēle sasniedz 5. līmeni, kur tā paliek līdz spēles beigām.

Sāciet debounce

Start Debounce ir bumbas sākuma atsitiens. Tam ir ieejas S_in un Clk un izeja S_out.

Šis fails izmanto visus iepriekšējos komponentus un padara to tā, lai visi komponenti būtu tūlītēji. Tas ir galvenais fails, kas apvieno visus iepriekšējos komponentus, kurus esam izveidojuši kopā.

6. darbība: VGA draiveris

VGA (Visual Graphics Array) draiveris ir programmatūra, ko izmanto komandu vai datu pieņemšanai, kas tiek nosūtīti uz displeja ekrānu. Vadītāju mums uzdāvināja mūsu profesors. Izmantojiet draiveri un VGA vadu, lai savienotu Basys3 plati ar monitoru.

Tagad jums vajadzētu būt gatavam izveidot savu tenisa spēli, izmantojot VHDL!

Ieteicams: