Satura rādītājs:
- 1. darbība. Pārskats
- 2. solis: attēla process
- 3. darbība. Rezultātu apstrādātājs
- 4. solis: attēlu ģenerēšana
- 5. solis: tenisa spēle
- 6. darbība: VGA draiveris
Video: Tenisa spēle: 6 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:56
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
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
Šī 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
Š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:
Simona spēle - jautra spēle!: 5 soļi
Simona spēle - jautra spēle !: Atsauce: šeitPēc garas nedēļas nogales jums patiešām ir jācenšas izpildīt visus uzdevumus un darbu, par kuru esat atbildīgs. Mums ir pienācis laiks trenēt smadzenes, vai ne? Bez šīm garlaicīgajām un bezjēdzīgajām spēlēm ir arī spēle ar nosaukumu Simona spēle
Andrea tenisa spēle: 4 soļi
Andrea tenisa spēle: Šī ir spēle, kas sākotnēji nāca no šejienes. Es izveidoju spēli un pēc tam veicu dažas izmaiņas, pamatojoties uz to. Es jums parādīšu šīs spēles veidošanas soļus, pēc tam norādīšu kodu, kuru es mainīju. Es pievienoju dažas izmaiņas sākotnējam kodam, piemēram, mainot
8x8 Colorduino tenisa spēle: 3 soļi
8x8 Colorduino tenisa spēle: šajā instrukcijā es jums parādīšu, kā es izveidoju tenisa spēli, izmantojot 8 x 8 RGB LED matricas tāfeles moduli. Šo moduli sauc par Colorduino. Tam ir iebūvēts mikrokontrolleris un interfeiss, lai izveidotu savienojumu ar citām Colorduino plāksnēm. Tam ir iespējas
8x16 LED matricas tenisa spēle (2 lāpstiņas vienam spēlētājam): 3 soļi
8x16 LED matricas tenisa spēle (2 lāpstiņas vienam spēlētājam): Mani iedvesmoja daudzas klasiskās Pong spēles variācijas, kas ieviestas Arduino, izmantojot 8x8 LED matricu. Šajā pamācībā es jums parādīšu, kā izveidot savu iecienītāko tenisa versiju, kurā katram spēlētājam ir divi lāpstiņi - uzbrucējs un vārtsargs
Automātiskā galda tenisa spēle: 6 soļi
Automātiskā galda tenisa spēle: šī ir galda tenisa spēle, kurā tiek izmantoti motori, lai pie jums palaistu galda tenisa bumbiņas, un jums tas jāsit caurumos. Vienai personai jāsit bumbiņas, bet otrai jāsit pa bumbiņām. **** Ņemiet vērā, ka to veic divi sestās klases skolēni