Sisällysluettelo:

Kuinka tehdä Ernie: 11 vaihetta
Kuinka tehdä Ernie: 11 vaihetta

Video: Kuinka tehdä Ernie: 11 vaihetta

Video: Kuinka tehdä Ernie: 11 vaihetta
Video: Windows11 asentaminen vanhaan koneeseen, onnistuuko? 2024, Marraskuu
Anonim
Kuinka tehdä Ernie
Kuinka tehdä Ernie

Tämä on opetusohjelma Ernyn, itsenäisen ääniseurantarobotin rakentamisesta Zybo Boardin avulla. Se kattaa, miten: luoda projekti Vivadoon, luoda PWM: n kaltaisia servomoottorin ohjaimia FPGA: han, liitäntä kahdella äänianturilla, luoda saapumisaika-aikaero, käyttää freeRTOSia ja käyttää zyboota akusta. Tämä oli viimeinen projektimme Cal Poly SLO: n reaaliaikaisten käyttöjärjestelmien luokalle (CPE 439).

Varusteluettelo:

  • 1 - ZYBO Zynq 7000 -kehityslautakunta
  • 2 - Parallax Continuous Rotation Servo
  • 2 - Äänianturi (SparkFun Sound Detector)
  • 1 - 5 V: n litium -ioni -USB -akku (kortille)
  • 4 - AA -paristot (servot)
  • 1 - AA -paristo (4 paristoa)
  • 1 - Micro -USB -kaapeli
  • 1 - Leipälevy
  • monet - uros -urosjohdot
  • 1 - Servo -alusta

Ohjelmistovaatimukset:

  • Xilinx Vivado Design Suite 2016.2
  • Digilent Adept 2.16.1

Vaihe 1: Projektin perustaminen Vivadoon Ernielle

Ernie -projektin perustaminen Vivadoon
Ernie -projektin perustaminen Vivadoon
Ernie -projektin perustaminen Vivadoon
Ernie -projektin perustaminen Vivadoon
Ernie -projektin perustaminen Vivadoon
Ernie -projektin perustaminen Vivadoon
  1. Ohjattu toiminto avautuu
  2. Napsauta Seuraava
  3. Nimeä seuraavaksi projekti

    1. Älä koskaan käytä projektin nimeä tai hakemistopolkua, jossa on välilyöntejä !!!!!
    2. Tästä tulee RTL -projekti.
  4. Emme halua määrittää lähteitä
  5. Seuraava -painiketta napsauttamalla pääsemme Osasivulle. Käytämme mallia ZYNQ XC7Z010-1CLG400C.

    1. Vivadolla ei ole Zboota listattuna yhdeksi sen ennalta määritetyistä levyistä. Valitse: "osat" ja etsi sitten xc7z010clg400-1.
    2. Jos valitset väärän osan vahingossa, voit helposti vaihtaa siruja: Työkalut -> Projektiasetukset -> Yleiset ja napsauta "Project Device" -kohdan oikealla puolella olevia pisteitä
  6. Napsauta Luo lohkosuunnittelu.

    Nimeä se design_1 nyt

  7. Näet vihreän palkin, jossa lukee Lisää IP, napsauta sitä.
  8. Etsiä Zynq.

    1. Kaksoisnapsauta ZYNQ7 -prosessointijärjestelmää,
    2. Tämä lohko näkyy lohkon suunnittelussa.
  9. Näet vihreän palkin, jossa lukee Suorita lohkoautomaatio, napsauta sitä.
  10. Lataa zybo_zynq_def.xml alla.
  11. Napsauta Vivadossa "Tuo XPS -asetukset" ja valitse "zybo_zynq_def.xml"

    Tämä esitäyttää Vivado-lohkon kokoonpanon kaikilla Zybo-kortin sisäänrakennetuilla oheislaitteilla ja nastojen määrityksillä

  12. Kaksoisnapsauta ZYNQ -lohkoa.

    1. MIO -kokoonpano

      1. Ota ajastin 0 käyttöön (Sovellusprosessoriyksikkö - img 1)
      2. Ota vahtikoira käyttöön (Sovellusprosessoriyksikkö- kuva 1)
      3. Ota GPIO-> GPIO MIO käyttöön (Sovellusprosessoriyksikkö - img 2)
      4. Ota GPIO-> ENET-nollaus käyttöön (I/O-oheislaitteet- kuva 2)
    2. Kellon määritys

      Poista FCLK0 käytöstä (PL -kangaskellojen alla - img 3)

  13. Napsauta OK.
  14. "Suorita lohkoautomaatio" nyt.

    Signaaleista tulee kysymyksiä, sano OK

  15. Napsauta”Luo HDL -kääre”.

    Haluamme kopioida luodun kääreen, jotta käyttäjä voi muokata sitä

  16. Napsauta OK.

Vaihe 2: Ernyn PWM: n luominen Vivadossa

Ernie's PWM: n luominen Vivadossa
Ernie's PWM: n luominen Vivadossa
Ernie's PWM: n luominen Vivadossa
Ernie's PWM: n luominen Vivadossa

Tämä vaihe luo PWM -IP -osoitteen, jonka tulot lähetetään AXI -kirjaston kautta.

  1. Luo AXI GPIO -lohko napsauttamalla hiiren kakkospainikkeella taustaa ja valitsemalla "Lisää IP"

    kirjoita hakupalkkiin "AXI_GPIO" ja valitse tämä paketti

  2. Muokkaa IP-osoitetta kaksoisnapsauttamalla uutta axi_gpio_0-lohkoa
    1. Aseta GPIO -kohdassa GPIO -leveydeksi 2. Nämä bitit ovat PWM_ON -signaali jokaisen PWM -moduulin esiintymän ohjaamiseksi.
    2. napsauta "ota kaksikanavainen käyttöön"
    3. Aseta GPIO 2: ssa GPIO -leveydeksi 2. Nämä bitit ovat PWM_FW -signaali jokaisen PWM -moduulin esiintymän suunnan asettamiseksi.
  3. Napsauta hiiren kakkospainikkeella axi_gpio_0 -lähtöporttia, jossa on merkintä GPIO, ja valitse "Tee ulkoinen"

    1. Napsauta uutta GPIO -tulostetta ja siirry vasemmanpuoleisen työkalupalkin "ominaisuudet" -välilehteen ja muuta nimi PWM_ON
    2. Napsauta uutta GPIO2 -tulostetta ja siirry vasemmanpuoleisen työkalupalkin "ominaisuudet" -välilehteen ja muuta nimi PWM_FW
  4. Valitse Suorita yhteysautomaatio lohkokaavion yläpuolella olevasta vihreästä bannerista.

    Jos liität portit manuaalisesti, AXI -osoitteita ei ehkä ole määritetty, mikä johtaa myöhemmin tiedonsiirto -ongelmiin

  5. Luo uusi mukautettu IP -lohko valitsemalla Flow Navigator -ruudussa projektipäällikkö -> Lisää lähteitä

    1. valitse "lisää tai luo suunnittelulähteitä" ja paina seuraava
    2. Napsauta "luo tiedosto", muuta tiedostotyypiksi "SystemVerilog" ja kirjoita tiedostonimen kenttään "pwm" ja napsauta sitten OK
    3. napsauta Valmis
    4. ohita Määrittele moduuli -ikkuna painamalla OK (korvaamme nämä myöhemmin)

      jos se kysyy, oletko varma, napsauta Kyllä

  6. Kaksoisnapsauta Lähteet-välilehden pwm.sv-tiedostoa (joka sijaitsee kohdassa Suunnittelulähteet/design_1_wrapper)

    Kopioi/liitä koko SystemVerilog -koodi alla olevasta pwm.txt -tiedostosta

Vaihe 3: Ernyn TDOA: n luominen Vivadossa

Ernie's TDOA: n luominen Vivadossa
Ernie's TDOA: n luominen Vivadossa
Ernie's TDOA: n luominen Vivadossa
Ernie's TDOA: n luominen Vivadossa

Tämä vaihe luo TDOA IP: n, jonka tuloksen voi lukea AXI -kirjaston kautta

  1. Luo AXI GPIO -lohko napsauttamalla hiiren kakkospainikkeella taustaa ja valitsemalla "Lisää IP"

    kirjoita hakupalkkiin "AXI_GPIO" ja valitse tämä paketti

  2. Muokkaa IP-osoitetta kaksoisnapsauttamalla uutta axi_gpio_1-lohkoa
    1. valitse GPIO -kohdassa "Kaikki tulot" -ruutu ja aseta GPIO -leveydeksi 32. Tämä väylä on kahden anturin saapumisaikaero.
    2. napsauta axi_gpio_1 -lohkon GPIO -portin vieressä olevaa + -painiketta, jolloin gpio_io_i [31: 0] tulee näkyviin.
  3. Napsauta hiiren kakkospainikkeella axi_gpio_1 -lähtöporttia, jossa on merkintä gpio_io_i [31: 0], ja valitse "Tee ulkoinen"

    Napsauta uutta syötettä, nimeltään gpio_io_i [31: 0], ja siirry vasemmanpuoleisen työkalupalkin "Ominaisuudet" -välilehteen ja vaihda nimeksi TDOA_val

  4. Valitse Suorita yhteysautomaatio lohkokaavion yläpuolella olevasta vihreästä bannerista.

    Jos liität portit manuaalisesti, AXI -osoitteita ei ehkä ole määritetty, mikä johtaa myöhemmin tiedonsiirto -ongelmiin

  5. Luo uusi mukautettu IP -lohko valitsemalla Flow Navigator -ruudussa projektipäällikkö -> Lisää lähteitä

    1. valitse "lisää tai luo suunnittelulähteitä" ja paina seuraava
    2. Napsauta "luo tiedosto", muuta tiedostotyypiksi "SystemVerilog" ja kirjoita "tdoa" tiedostonimen kenttään ja napsauta sitten OK
    3. napsauta Valmis
    4. ohita Määrittele moduuli -ikkuna painamalla OK (korvaamme nämä myöhemmin)

      jos se kysyy, oletko varma, napsauta Kyllä

  6. Kaksoisnapsauta Lähteet-välilehden tdoa.sv-tiedostoa (joka sijaitsee kohdassa Suunnittelulähteet/design_1_wrapper)

    Kopioi/liitä koko SystemVerilog -koodi alla olevasta tdoa.txt -tiedostosta

Vaihe 4: Ernie -kääriminen ja vieminen

Kääriminen ja vienti Ernie
Kääriminen ja vienti Ernie
  1. Varmista, että lohkokaavio näyttää liitteenä olevasta kuvakaappauksesta
  2. Napsauta Lähteet-välilehdellä hiiren kakkospainikkeella design_1.bd ja valitse "Luo HDL-kääre …"

    1. Valitse "Kopioi luotu tulostus salliaksesi käyttäjän muokkaukset" ja paina sitten "OK"
    2. Kopioi koodi alla olevasta linkistä design_1_wrapper.txt ja liitä se luotun design_1_wrapper.v -koodin tilalle
    3. tallenna design_1_wrapper.v
  3. Kaksoisnapsauta Lähteet-välilehden tiedostoa ZYBO_Master.xdc kohdassa Rajoitukset/constrs1

    1. Kopioi koodi alla olevasta ZYBO_Master.txt -tiedostosta ja liitä se olemassa olevan ZYBO_Master.xdc -koodin tilalle
    2. Huomaa seuraavat tulo-/lähtönastat:

      1. L15: PWM -signaali vasemmalle moottorille (Pmod JA2 Zyboyssa)
      2. L14: PWM -signaali oikealle moottorille (Pmod JA8 Zyboyssa)
      3. V12: porttitulo äänianturista 1 (Pmod JE1 Zyboyssa)
      4. K16: porttitulo äänianturista 2 (Pmod JE2 Zyboyssa)
  4. Napsauta Flow Navigator -ruudussa Ohjelman ja virheenkorjauksen alla "Luo bittivirta"

    jos luulet, että se on tehty heti, se ei todennäköisesti ole. vakavasti, keitä teetä

  5. Napsauta Tiedosto-> Vie-> Luo laitteisto

    Valitse "Sisällytä bittivirta" ja paina OK

  6. Napsauta Tiedosto-> Käynnistä SDK

Vaihe 5: Ernin rakentaminen

Rakennus Ernie
Rakennus Ernie
Rakennus Ernie
Rakennus Ernie
  1. Asenna servot servokoteloon.
  2. Tee servojen teknisen taulukon mukaan seuraavat toimet:

    1. liitä servojen maa Zybo's JA Pmodin maadoitus nastoihin (katso oheinen pinout -kuva)
    2. liitä servojen virtatappi AA -paristoon

      Havaitsimme, että kun servot on kytketty Zyboyn Vdd -levyyn, piirilevy imee liikaa virtaa, minkä seurauksena levy nollautuu jatkuvasti

    3. liitä tulosignaalin nastat Zyboyn sopiviin lähtöliittimiin (vasen: JA2, oikea: JA8)
  3. asenna äänianturit rungon etuosaan eteenpäinpäin pitäen ne mahdollisimman lähellä toisiaan
  4. käytä äänianturin liitäntäopasta integroidaksesi äänianturit

    1. kytke jokaisen äänianturin maa- ja Vdd -nastat maahan ja Zyboyn JE Pmodin Vdd -nastat (katso oheinen pinout -kuva)
    2. kytke vasemman äänianturin porttitappi liittimeen JE1
    3. kytke oikean äänianturin porttitappi JE2: een

Vaihe 6: Ernie's First BSP

Ernyn ensimmäinen BSP
Ernyn ensimmäinen BSP
Ernyn ensimmäinen BSP
Ernyn ensimmäinen BSP
  1. Luo BSP -paketti juuri luomallamme.

    Saat tämän valitsemalla Tiedosto -> Uusi -> Hallituksen tukipaketti

  2. Ohjattu toiminto avautuu auttamaan sinua luomaan BSP: n.

    1. Haluamme yhdistää tämän BSP: n juuri luomaamme alustaan
    2. Laitteistoalustan pitäisi vastata juuri luomamme alusta (katso kuva 1)
    3. Suorittimemme on _0 -suoritin.
    4. Napsauta Valmis
    5. Muista tarkistaa, että lwip141 sisällytetään bsp: si kanssa avautuvaan ikkunaan (katso kuva 2)

Vaihe 7: FreeRTOS -käyttö Ernie

  1. Lataa uusin FreeRTOS -julkaisu Sourceforgesta.

    Jos lataus on suoritettava, poista FreeRTOS -tiedostot projektihakemistoosi suorittamalla se

  2. Pidä SDK auki ja valitse Tiedosto -> Tuo.
  3. Haluamme napsauttaa Yleiset-> Olemassa olevasta työtilasta, ja sitten haluamme navigoida paikkaan, johon latasimme FreeRTOSin.
  4. Demomme sijaitsee FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702. Kun valitset tämän kansion, meidän pitäisi nähdä kolme projektia (koodimme (OS), se BSP ja HW -alusta).

    VAIN Tuo RTOSDemo nykyiseen työtilaasi

  5. Muuta kaikissa "sinisissä" kansioprojekteissa viitattua BSP: tä

    1. Napsauta hiiren kakkospainikkeella ja valitse "Muuta viitattua BSP: tä".
    2. Valitse juuri luomasi BSP -laite BSP: lle
    3. Koodin muokkaus Xilinxin SDK Blue -kansioissa ovat todellisia koodiprojekteja.

Vaihe 8: Ernien C -koodin tuominen

  1. Korvaa RTOSDemo/src -hakemistossa olemassa oleva main.c ja main.c -tiedosto, joka on liitetty tähän.
  2. Kopioi main_sound.c -tiedosto RTOSDemo/src -hakemistoon.

Vaihe 9: Virheenkorjaus Ernie

  1. Valitse Suorita -> Debug Configuration
  2. Luo vasemmanpuoleiseen ruutuun uusi System Debugger -käyttö
  3. Valitse Kohteen asetukset -välilehdessä

    valitse "Nollaa koko järjestelmä", niin sekä että että ps7_init on valittu

  4. Valitse nyt Sovellus -välilehti.

    1. Valitse "lataa sovellus"
    2. Aseta cortexa9_0 -ydin asentoon "stop at program entry"
    3. Valitse Käytä ja virheenkorjaus.
  5. Varmista, ettei virheenkorjausprosessissa ole virheitä
  6. Pidä robotti tarkasti silmällä ja paina Jatka -painiketta, kunnes ohjelma käynnistyy ilman, että se saavuttaa katkaisupisteitä
  7. Robotin pitäisi nyt kääntyä ja siirtyä kohti kovia ääniä. Jee!

Vaihe 10: Ernyn tekeminen itsenäiseksi

  1. Kun projektisi on valmis aloittamaan (voit suorittaa virheettä virheenkorjaimen kautta), olet valmis lataamaan sen levyllesi.
  2. Luo niin sanottu ensimmäisen vaiheen käynnistyslatausprojekti (FSBL) ja sisältää kaikki ohjeet, joita korttisi tarvitsee ladatakseen projektitiedostot (bittivirran ja käyttöjärjestelmän) käynnistyksen yhteydessä.

    1. Valitse: Tiedosto-> Uusi-> Sovellusprojekti ja seuraava ikkuna tulee näkyviin.
    2. Nimeä se mitä haluat (esim. "FSBL")
    3. Varmista, että työskentelet laitteistoalustan kanssa
    4. Paina seuraava (älä paina Valmis)
    5. Valitse Zynq FSBL -malli
    6. Napsauta Valmis.
  3. Kun luomisprosessi on valmis, tiedät, toimiiko kaikki, jos näet seuraavat kaksi uutta kansiota Project Explorer -ikkunassa.
  4. Luo käynnistyskuva Nyt sinun on luotava käynnistyskuva.

    1. Napsauta hiiren kakkospainikkeella projektikansioasi (tässä tapauksessa minun nimeni on "RTOSDemo")
    2. Napsauta avattavasta valikosta "Luo käynnistyskuva"
    3. Jos kaikki on linkitetty oikein, projekti tietää tarvitsemansa tiedostot ja seuraava ikkuna näyttää alla olevasta kuvasta (avain on, että sinulla on kolme osiota Käynnistyskuva -osiossa, käynnistyslatain, bittitiedosto ja projektisi.elf -tiedosto).

      Jos näin ei ole, projektisi linkittämisessä on mahdollisesti jotain vikaa. Varmista, että projektikansiot on linkitetty vastaaviin BSP -tiedostoihin

    4. Napsauta "Luo kuva" -painiketta
  5. Ohjelmiston viimeinen vaihe on nyt vilkaista aiemmin luotu kuva levyn muistiin

    1. Valitse SDK: n päätyökaluriviltä Xilinx Tools-> Program Flash Memory
    2. Varmista, että oikea laitealusta on valittu ja että kuvatiedoston polku osoittaa oikein edellisessä vaiheessa luotua. BIN -tiedostoa.
    3. Valitse "qspi single" Flash -tyypistä
    4. Valitse”Tarkista salaman jälkeen” eheyden varmistamiseksi, mutta sitä ei tarvita
  6. Taulukon määrittäminen Lopuksi sinun on varmistettava, että levyjen ohjelmointitilan hyppyjohdin (JP5) on asetettu oikein valitsemaan käynnistys qspi: stä (joka sisältää juuri salamasi) BootROMin ollessa käynnissä.
  7. Käynnistä laite nyt ja varmista, että "Logic Configuration Done LED" (LED 10) palaa vihreänä.

Vaihe 11: Tee Ernie söpöksi

  1. Turkis
  2. Paljon turkista
  3. Isot silmät!
  4. … Silinteri

Suositeltava: