Sisällysluettelo:

Pongipeli: 6 vaihetta
Pongipeli: 6 vaihetta

Video: Pongipeli: 6 vaihetta

Video: Pongipeli: 6 vaihetta
Video: ЗАКРИЧАЛ – ПОТЕРЯЛ ₽200.000 / ТРЭШКЭШ: Тишина 2024, Marraskuu
Anonim
Pong -peli
Pong -peli

Materiaalit:

Basys3 FPGA -levy

VGA -kaapeli

Vivado

Tämän ohjeen tarkoitus on kehittää pong -peli, joka näytetään näytöllä. Projekti käyttää VHDL -ohjelmointia ja käyttää Basys3 FPGA: ta koodin suorittamiseen ja siirtää kuvan VGA -liitännän avulla. Tämä opetusohjelma on tarkoitettu ihmisille, joilla on vähän tietoa VHDL: stä. Opetusohjelma jaetaan kuuteen eri osaan: Yleiskatsaus, Prosessi, Pisteidenkäsittelijä, Kuvan luominen, Pong -peli ja VGA.

Vaihe 1: Yleiskatsaus

Yleiskatsaus
Yleiskatsaus

Yllä oleva kuva on projektin yleinen kaavamainen suunnittelu

Pelin tavoite:

Peli koostuu näytöstä, jossa on liukuva mela, jota käyttäjä voi ohjata, ja kiinteästä seinästä, joka toimii ylärajana. Kun käyttäjä painaa käynnistyspainiketta, joka on ylöspainike, pallo alkaa pomppia ylös ja pomppia seinältä ja yrittää osua melaan. Jos pallo osuu melaan, se pomppii jälleen ylös ja jatkaa pomppimistaan, kunnes se ohittaa melon. Peli on ohi, kun pallo ei osu melaan. Käyttäjä voi käyttää vasenta ja oikeaa painikkeita melon liikkeen määrittämiseen. Pelin nollaamiseksi käyttäjän on painettava keskipainiketta. Ajoaika tallennetaan 7 segmentin näyttöön. Tasoja on viisi, ja taso nousee kymmenen sekunnin välein, kunnes saavutat tason 5, jossa se pysyy, kunnes käyttäjä häviää. Tasot määräytyvät pallon nopeuden mukaan; Tämä tarkoittaa sitä, että pallon nopeus kasvaa kymmenen sekunnin välein, mikä lisää pelin vaikeutta.

Järjestelmäarkkitehtuuri:

Alla oleva kaavio on järjestelmän yleinen ylätason lohkokaavio. Järjestelmässä on neljä tuloa: painike R, painike L, käynnistys ja nollaus ja kello. Siinä on vaaka- ja pystysynkronointilähdöt, RBG (joka viittaa pikselin väriin tietyssä paikassa) ja Score (joka toimii väylänä 7-segmenttinäyttöön). -painiketta, ja vasenta ja oikeaa painikkeita käytetään melan siirtämiseen omiin suuntiinsa. 7-segmenttinäytöllä tallennetaan tulos, eli kuinka monta sekuntia käyttäjä on pelannut menettämättä peliä. Numero näytetään desimaalilukuna.

Piiriarkkitehtuuri: Rakennamme gismomme yhdellä FSM: llä, joka sisältää pienemmän FSM: n, osa-FSM hallitsee pelin vaikeutta, kun taas FSM hallitsee pelin kokonaisvirtaa. Gizmo käyttää myös vähintään kolmea kellojakajaa, yksi pisteet (aika), yksi näytön virkistystaajuudelle ja toinen, joka on kytketty DeMuxin lähtöön, jotta voimme hallita pelin nopeutta etenee yhä vaikeammin. Peli etenee paljon nopeammin mitä pidempään pelaat. Meillä on DeMuxin ohjaustulo sub-FSM: n läsnäolotilassa, jotta voimme hallita kuinka nopeasti peli etenee ja kuinka kauan pelaat sitä. Käytämme muutamaa laskuria, joista toinen päivittää näytön ja toinen laskee pisteet, kun jatkat pelaamista. Tässä projektissa on kaksi päämoduulia ja joukko alimoduuleja, jotka käsittelevät syöttötietoja. Kaksi päämoduulia ovat VGA -ohjain sekä painikelogiikka. VGA -ohjain koostuu ohjelmoitavasta muistista, kellonjakajasta ja logiikasta, joka muokkaa värin ulostuloa. Painikkeiden logiikkamoduuli koostuu myös kellonjakajasta ja ohjelmoitavasta muistista sekä binäärinen desimaalimuunnin 7-segmenttinäyttöä ja sen kellojakajaa varten.

Vaihe 2: Kuvaprosessi

Projektin Kuvaprosessi -osiossa määritämme pallon ja melon liikkeen. Ohjelmassa on portteja, jotka sisältävät vasemman, oikean, ylä- ja keskipainikkeen, nykyisen tilan, kellon, pallon X- ja Y -asennot, melon vasemman ja oikean reunan sekä epäonnistumisen. Nykyistä tilaa käytetään aktivointisignaalin määrittämiseen. Koodi kattaa useita tapauksia, joissa pallo voi liikkua, ja on asettanut edellytykset pallon polun määrittämiseksi. Seuraava prosessilohko määrittää suunnan, johon mela liikkuu sen perusteella, mitä painiketta käyttäjä painaa. Projektin tämän osan koodi on liitetty yksityiskohtaisiin kommentteihin, joissa kuvataan kunkin osion toiminta.

Vaihe 3: Pisteidenkäsittelijä

Pisteidenkäsittelijä
Pisteidenkäsittelijä

Tämä osio koostuu tiedostoista, jotka liittyvät pistemäärän näyttämiseen sekunneissa Basys3 Boardin 7 segmentin näytöllä. Se sisältää kellonjakajan, jota käytetään sekuntien laskemiseen, tuloslaskuri laskee käyttäjän pelaamat sekunnit, segmentin kuljettaja ottaa pisteet ja muuntaa ne anodeiksi ja katodeiksi näytettäväksi näytöllä ja määrittää myös paikan, numero näytetään ja lopuksi segmenttien käsittelijä muuntaa binääriluvut desimaaliluvuiksi näytettäväksi näytöllä. Pisteenkäsittelijä kokoaa kaikki palaset yhteen ja kartoittaa signaalit. Kaikkien viiden tiedoston koodi on liitteenä alla.

Kellonjakaja:

Kellojakajalla on tulot Clk (kello), CEN (käyttöönotto) ja Div (jakaja) ja lähtö Clk_out. Jos aktivointisignaali on päällä, kello laskee nousevan reunan.

Pistelaskuri

Tuloslaskurissa on tulot Clk (kello) ja RST (nollaus) ja lähdöt Clk_Out ja Q, jotka toimivat olennaisesti tulosulostulona.

Segmentin ohjain

Segmenttiohjaimessa on tulot D1, D10, D100, D1000 ja Kello. "D": n jälkeiset numerot viittaavat desimaaliin 7 -segmentin näytössä. Lähdöt ovat anodit ja numero. Kello laskee ja määrittää numerot ja paikan. Esimerkiksi "9" näkyy ykköspaikassa ja "0" on tuhansia, satoja ja kymmeniä. Kun se vaihtuu arvoon "10", numerolla on nyt "1" kymmenissä ja "0" tuhansissa, sadoissa ja ykkösissä.

Segmenttien käsittelijä

Segmentin käsittelijän tulona on numero ja katodina. Se on lähinnä katodinäytön binäärilukuja desimaalilukujen näyttämiseksi näytöllä.

Pisteidenkäsittelijä

Pisteidenkäsittelijä koostuu neljästä edellisestä kokonaisuudesta ja yhdistää kaiken yhteen ja kartoittaa signaalit. Se ottaa myös käyttöön ja poistaa käytöstä laskurin nykyisen tilan perusteella.

Vaihe 4: Kuvan luominen

Kuvan luominen koostuu neljästä osasta: animaatio, epäonnistumislaskuri, päivitä kuva ja aloituslaskuri. Nämä tiedostot viittaavat kuvien luomiseen näyttöön.

Animaatio

Animaatiotiedostossa on tulot Clk (kellosignaali), CEN (laskutoimitus), RST (nollausmerkki), B_X (pallon X -asema), B_Y (pallon Y -asento), P_L (vasen mela -asento) ja P_R (oikea mela -asento). Lähdöt ovat WA (osoite, johon kirjoitamme värin) ja WD (väri kirjoitetaan määritettyyn osoitteeseen). Tiedostossa on Play_Counter, joka on laskuri, jota käytetään MUX: n ohjaustulona, kooderi, joka voi tulostaa oikeat värit oikeisiin paikkoihin, ja lopuksi multiplekseri, joka näyttää oikean värin mela -asennon ja pallo.

Päivitä kuva

Päivitä kuvatiedostoa käytetään kuvan päivittämiseen pallon ja melon asennon muuttuessa. Tiedosto sisältää komponentit Animaatio-, Käynnistyslaskuri- ja Vikalaskuritiedostoista. Se kartoittaa kunkin komponentin signaalit ja käyttää tilalogiikkaa signaalien ja lähtöosoitteiden määrittämiseen.

Käynnistä laskuri

Aloituslaskuri käyttää tuloja Clk, RS ja CEN ja lähtöjä WA ja WD. Se käyttää laskuria ja muunnosta MUX: n ohjaustulon määrittämiseen. Tämän jälkeen Multiplexer määrittää tulon avulla oikeat väriosoitteet ja lähettää nämä tiedot VGA -ohjaimelle. Tätä käytetään näyttämään "Pong", kun käyttäjä aloittaa pelin.

Epäonnistunut laskuri

Epäonnistumislaskuria käytetään näyttämään "Game Over", kun käyttäjä häviää pelin. Siinä on Clk-, RST- ja CEN -signaali. Se käyttää laskuria ja muunnoskaavaa MUX: n ohjaustulon määrittämiseen. Tämän jälkeen Multiplexer määrittää tulon avulla oikeat väriosoitteet ja lähettää nämä tiedot VGA -ohjaimelle.

Vaihe 5: Pong -peli

Pong -peli
Pong -peli

Tämä projektin osa sisältää Pong Master, Finite State Machine (FSM), ajastin ja Start Debounce -tiedostot.

Ajastin

Ajastimessa on tulot Clk (Clock) ja PS (Present State) sekä ajastin ja Clk_out lähtöinä. Ajastinta käytetään muuttamaan pelin nopeutta noin viiden sekunnin välein.

Flow FSM

Flow FSM: ssä on tulot Clk, Fail, Timer, Bttn_S (Start -painike) ja Buttn_RST (Reset -painike) ja lähtö Pres_S (Present State Output). Mikronesia käyttää ajastinta päivittämään nykyinen tila seuraavaan tilaan ja päivittää seuraavaa tilaa, kunnes peli saavuttaa tason 5, jossa se pysyy pelin loppuun asti.

Aloita Debounce

Start Debounce on pallon aloitushyppy. Siinä on tulot S_in ja Clk ja lähtö S_out.

Tämä tiedosto käyttää kaikkia aiempia komponentteja ja tekee siitä niin, että kaikki komponentit ovat hetkellisiä. Se on päätiedosto, joka kokoaa yhteen kaikki aikaisemmat komponentit, jotka olemme rakentaneet yhdessä.

Vaihe 6: VGA -ohjain

VGA (Visual Graphics Array) -ohjain on ohjelmisto, jota käytetään näyttöruudulle lähetettävien komentojen tai tietojen vastaanottamiseen. Kuljettajan antoi meille professori. Liitä Basys3 -kortti näyttöön ohjaimen ja VGA -johdon avulla.

Sinun pitäisi nyt olla valmis tekemään oma Pong -pelisi VHDL: n avulla!

Suositeltava: