Sisällysluettelo:
- Vaihe 1: Yleiskatsaus
- Vaihe 2: Kuvaprosessi
- Vaihe 3: Pisteidenkäsittelijä
- Vaihe 4: Kuvan luominen
- Vaihe 5: Pong -peli
- Vaihe 6: VGA -ohjain
Video: Pongipeli: 6 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:02
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
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ä
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
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:
Tee oma 1D -pongipeli: 5 vaihetta (kuvilla)
Luo oma 1D -pongipelisi: Tässä projektissa näytän sinulle, kuinka yhdistin MDF -levyn summeripainikkeilla, LED -valolla ja Arduino Nano -laitteella, jotta voisin luoda 1D -pongin, joka on todella hauska pelata. Matkan varrella näytän sinulle, kuinka luoda elektroniikkapiiri ja kuinka erilainen
Akustinen levitaatio Arduino Unon kanssa Askel askeleelta (8 vaihetta): 8 vaihetta
Akustinen levitaatio Arduino Unon kanssa Askel askeleelta (8 vaihetta): ultraäänikaiuttimet L298N DC-naarasadapterin virtalähde urospuolisella dc-nastalla ja analogiset portit koodin muuntamiseksi (C ++)
Andrean pongipeli: 4 vaihetta
Andrean pongipeli: Tämä on peli, joka alun perin tuli täältä. Tein pelin ja tein sitten joitain muutoksia sen perusteella. Näytän sinulle tämän pelin tekemisen vaiheet ja annan sinulle koodin, jonka muutin. Lisäsin alkuperäiseen koodiin joitain muutoksia, kuten
4G/5G HD -videon suoratoisto DJI Dronesta alhaisella latenssilla [3 vaihetta]: 3 vaihetta
4G/5G HD -videon suoratoisto DJI Dronesta alhaisella latenssilla [3 vaihetta]: Seuraava opas auttaa sinua saamaan live-HD-videovirtoja lähes mistä tahansa DJI-dronesta. FlytOS -mobiilisovelluksen ja FlytNow -verkkosovelluksen avulla voit aloittaa videon suoratoiston droonilta
Pultti - DIY -langaton latauskello (6 vaihetta): 6 vaihetta (kuvilla)
Pultti - DIY -langaton latausyökello (6 vaihetta): Induktiiviset lataukset (tunnetaan myös nimellä langaton lataus tai langaton lataus) on langattoman voimansiirron tyyppi. Se käyttää sähkömagneettista induktiota sähkön tuottamiseen kannettaville laitteille. Yleisin sovellus on langaton Qi -latauslaite