Talaan ng mga Nilalaman:

FPGA Asteroid Game: 7 Hakbang (na may Mga Larawan)
FPGA Asteroid Game: 7 Hakbang (na may Mga Larawan)

Video: FPGA Asteroid Game: 7 Hakbang (na may Mga Larawan)

Video: FPGA Asteroid Game: 7 Hakbang (na may Mga Larawan)
Video: Asteroids game using FPGA 2024, Oktubre
Anonim
FPGA Asteroid Game
FPGA Asteroid Game

Para sa aming Huling Proyekto sa CPE 133, nagpasya kaming lumikha ng isang asteroids na laro sa aming FPGA gamit ang dalawang switch ng switch ng pindutan at ang display na 7-segment. Gumagana ang laro upang ang isang asteroid ay nagsisilaw sa isa sa tatlong mga sapalarang piniling hilera, at dumarating patungo sa barko sa kabilang bahagi ng 7-segment na display. Ang itaas na pindutan at ibabang pindutan ay maaaring magamit upang ilipat ang iyong barko sa paraan ng asteroid. Sa kabiguang gawin ito, binabasa ng display ang 'BAnG' nang ilang sandali at pagkatapos ay mabilis na i-restart ang laro upang maaaring subukang muli ng gumagamit. Ang sumusunod ay isang maikling paglalarawan kung paano ginawa ang proyekto upang ang sinumang gumagamit ay maaaring magtiklop o pagbutihin ang aming disenyo.

Hakbang 1: Pangkalahatang-ideya

Pangkalahatang-ideya
Pangkalahatang-ideya
Pangkalahatang-ideya
Pangkalahatang-ideya

Ang proyekto ay higit na binubuo ng Finite State Machines (FSMs), na gumagamit ng lohika upang ilipat ang FPGA sa pagitan ng mga estado kung saan nag-iimbak at nagpapakita ng iba't ibang mga halaga ng mga posisyon ng barko at bato. Ang dalawang pangunahing mga module ay ang laro FSMs para sa bato at barko, at ang binary sa 7-segment na display decoder na FSM, na isinama nang sama-sama gamit ang isang napaka-simpleng istrukturang modelo sa VHDL.

Ang mga FSM ay nilikha para sa posisyon ng barko, posisyon ng bato, at para sa 7-segment decoder. Ang layunin ng FSM ng barko ay upang ang barko ay maaaring lumipat sa tamang posisyon kapag pinindot ng player ang isang pataas o pababang pindutan. Kailangan ang FSM sapagkat kailangan nitong alalahanin kung aling posisyon ang huling ito upang lumipat sa tamang posisyon.

Ang layunin ng FSM ng bato ay ilipat ang bato sa tamang posisyon batay sa kung aling hilera ito at ang huling posisyon sa hilera na iyon. Bilang karagdagan, sinusubaybayan nito ang posisyon para sa module na ipapakita ito at pseudo-random na pumili ng isang bagong hilera upang lilitaw sa susunod.

Ang FSM para sa 7-segment display decoder ay ginamit upang hindi lamang ipakita ang barko at ang bato ngunit din upang ipakita ang "BAnG" kapag ang posisyon ng barko at ang posisyon ng bato ay pareho.

Hakbang 2: Mga Kagamitan

Ang mga materyales na ginamit sa proyekto ay:

  • Ang Basys3 Development Board mula sa Digilent, Inc.
  • Vivado Design Suite
  • sseg_dec.vhd (Ang file na ito ay ibinigay sa amin sa Polylearn at isinulat ni Bryan Mealy)
  • Clk_div.vhd (Ang file na ito ay ibinigay sa amin sa Polylearn at isinulat ni Bryan Mealy)
  • Tatlong Finite State Machines (FSMs)

Hakbang 3: Paggawa ng Laro

Paggawa ng Laro
Paggawa ng Laro
Paggawa ng Laro
Paggawa ng Laro
Paggawa ng Laro
Paggawa ng Laro
Paggawa ng Laro
Paggawa ng Laro

Ang modyul ng laro ay nilikha sa pamamagitan ng paggamit ng pagmomodelo ng pag-uugali upang ilarawan ang mga estado ng barko at bato para sa kanilang sariling mga FSM. Ang bentahe nito ay mas madaling mag-modelo ng circuit sa pag-uugali sa pamamagitan ng paglalarawan kung ano ang ginagawa nito kaysa malaman ang lahat ng mga sangkap na kinakailangan upang idisenyo ang hardware.

Ang mga estado ng bato ay tapos na gamit ang isang pseudo random number generator para sa unang posisyon ng bato. Upang magawa ito, binigyan namin ang generator ng sarili nitong orasan na kung saan ay napakabilis na kaugnay sa bilis ng laro. Sa bawat pagtaas ng gilid, isang tatlong bit na numero ang nadagdagan, at ang lahat ng mga halagang ito ay tumutugma sa isa sa tatlong mga pagsisimula ng estado para sa barko. Samakatuwid, ang tatlong mga halaga ay tumutugma sa posisyon 3 (sa kanang tuktok), tatlong tumutugma sa posisyon 7 (ang gitna), at dalawa ay tumutugma sa posisyon 11 (sa kanang ibaba).

Kapag naganap na ang random na henerasyon at ang asteroid ay nabigyan ng paunang estado, pahalang itong dumadaloy patungo sa barko nang walang pagkakagambala.

0 ← 1 ← 2 ← 3

4 ← 5 ← 6 ← 7

11 ← 10 ← 9 ← 8

Ang orasan na ginamit para sa susunod na estado ng lohika ng estado ay kumokontrol sa bilis ng laro; nalaman namin sa pamamagitan ng pagsubok at error na ang 9999999 ay isang mabuting halaga para sa max na bilang nito.

Ang lohika ng barko ay gumagana sa pamamagitan ng pagsisimula sa posisyon ng gitnang (posisyon 4) sa dulong kaliwang bahagi. Kung ang kanang itaas na pindutan o ibabang pindutan ay pinindot, ang barko ay lilipat pataas at pababa sa posisyon na 0 at 11 na naaayon sa pindutang na-pinindot.

Upang magkaroon ng pakiramdam ang paggalaw ng barko para sa gumagamit, hindi namin ginawang hindi magkakasabay ang paggalaw nito. Gumamit kami ng isang orasan para sa mga pagbabago sa estado nito, at gumamit kami ng isang pinakamataas na bilang na 5555555.

Hakbang 4: Pagpapakita ng Resulta

Ang binary sa 7-segment decoder ay tumatagal ng mga variable na posisyon ng 4-bit para sa barko at sa asteroid at ipinapakita ang naaangkop na imahe (alinman sa barko at bato o ang mensahe na "BAnG").

Natutupad ito sa pamamagitan ng unang pag-check kung pantay ang dalawa at pagkatapos ay pagpapakita ng mensahe na "BAnG" kung ang tseke ay nagbabalik totoo.

Kung hindi ito magbabalik ng totoo, ipapakita ng decoder ang barko at ang bato sa pamamagitan ng paglipat sa pagitan nila sa napakataas na dalas ng orasan at lokohin ang mata na makita sila na parang ipinapakita nang sabay.

Hakbang 5: Pagsasama-sama sa Lahat ng Ito

Pagsasama-sama sa Lahat ng Ito
Pagsasama-sama sa Lahat ng Ito

Inilakip namin ang FSM ng barko at bato sa isang malaking FSM na na-wire namin sa ipinakitang FSM. Ang mga pag-input sa laro ay ang pindutan ng pataas at ang pababang pindutan sa board ng BASYS3 at ang orasan ng system. Ang mga output ay ang segment at anode vector pitong segment-display.

Ang mga input at output na ito ay makikita sa mga hadlang na file kung saan naka-map ang mga ito.

Hakbang 6: Mga Pagbabago sa Hinaharap

Sa hinaharap, ang pagdaragdag ng higit na pag-andar ng paggalaw ng barko sa proyekto ay magiging isang pagpapabuti. Maaari itong magawa sa pamamagitan lamang ng pagbibigay ng 2 higit pang mga input ng pindutan at pinapayagan ang barko na kumuha ng mga posisyon (estado) maliban sa 0, 4, at 8. Ang isa pang posibleng pagbabago ay maaaring kontrolin ang susunod na tiyempo ng estado ng asteroid upang magsimula itong mabagal at dagdagan ang bilis ng 1.5x tuwing namimiss nito ang barko hanggang sa ma-hit ito, kung saan ito muling sisimulan at magiging mabagal muli. Dadagdagan nito ang paghihirap ng laro at gawing mas masaya para sa gumagamit kung ipinatupad ito, at maaaring gawin sa pamamagitan ng paglikha ng isang variable para sa pinakamataas na bilang ng susunod na estado na orasan ng bato, pinaparami ang variable na iyon ng 1.5 sa tuwing hindi lumilitaw ang asteroid Hindi ito nai-hit, at naitakda ulit ito sa paunang halaga sa tuwing tumatama ang bato.

Hakbang 7: Konklusyon

Ang proyekto na ito ay nakatulong sa amin upang mas maunawaan ang may wakas na mga makina ng estado, orasan, at interactive na ipinapakita sa mga pitong segment na ipinapakita.

Ang pinakamalaking bagay tungkol sa may wakas na mga makina ng estado ay mahalagang malaman (tandaan) kung anong estado ka kasalukuyang nasa upang lumipat sa susunod na nais na estado. Kakatwa, magandang payo sa buhay; dapat mong malaman kung saan mo malalaman kung saan ka pupunta.

Sa pamamagitan ng pagmamanipula ng iba't ibang mga pagkakataon ng mga orasan, nagawa naming random na makabuo ng mga numero, ilipat ang bato sa susunod na posisyon, at pamahalaan ang pagpapakita ng barko, ang bato, at ang end-of-game na mensahe.

Nalaman namin na higit sa isang anode ay hindi maipakita nang sabay. Sinamantala ng modyul na ibinigay sa amin na makikita lamang ng mata ng tao ang pagkakaiba hanggang sa isang tiyak na dalas. Kaya't isang mas mataas na dalas ng paglipat ng mga anode ang napili. Ang barko at bato na nakikita nang sabay-sabay ay talagang isang parunggit dahil ang bawat isa ay ipinakita nang magkahiwalay, ngunit napakabilis. Ang konseptong iyon ay inilapat upang maipakita ang paggalaw ng barko, ang bato, at ang mensahe na "BAnG".

Inirerekumendang: