Kazalo:
- 1. korak: Nastavitev projekta v Vivadu za Ernie
- 2. korak: Ustvarite Erniejevo PWM v Vivadu
- 3. korak: Ustvarite Erniejev TDOA v Vivadu
- 4. korak: Zavijanje in izvoz Ernieja
- 5. korak: Gradnja Ernieja
- 6. korak: Erniejev prvi BSP
- 7. korak: FreeRTOS 'Ernie
- 8. korak: Uvoz Erniejeve kode C
- 9. korak: Odpravljanje napak Ernie
- 10. korak: Ernie postane avtonomna
- 11. korak: Naredite Ernie srčkano
Video: Kako narediti Ernie: 11 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:03
To je vadnica o tem, kako z Zybo Board zgraditi Ernieja, vašega avtonomnega zvoka po robotu. Zajemal bo, kako: ustvariti projekt v Vivadu, ustvariti gonilnike servo motorjev, podobne PWM, v FPGA, vmesnik z dvema zvočnima senzorjema, ustvariti časovno razliko pri prihodu IP, uporabiti freeRTOS in zagnati zybo iz baterije. To je bil naš zadnji projekt za razred operacijskih sistemov v realnem času (CPE 439) na Cal Poly SLO.
Seznam opreme:
- 1 - Razvojni odbor ZYBO Zynq 7000
- 2 - Servo za neprekinjeno vrtenje paralaksa
- 2 - Zvočni senzor (SparkFun detektor zvoka)
- 1 - 5v litij -ionska baterija USB (za ploščo)
- 4 - AA baterije (za servomotorje)
- 1 - baterija AA (s 4 režami za baterije)
- 1 - Kabel mikro USB
- 1 - Ogledna plošča
- veliko - moški do moški žice
- 1 - Servo ohišje
Zahteve za programsko opremo:
- Xilinx Vivado Design Suite 2016.2
- Digilent Adept 2.16.1
1. korak: Nastavitev projekta v Vivadu za Ernie
- Pojavil se bo čarovnik
- Kliknite Naprej
- Naslednje ime projekta
- Nikoli ne uporabljajte imena projekta ali poti imenika, ki vsebuje presledke !!!!!
- To bo projekt RTL.
- Virov ne želimo navajati
-
S klikom na Next pridemo na stran Part. Uporabljamo ZYNQ XC7Z010-1CLG400C.
- Vivado nima Zybo na seznamu svojih vnaprej določenih plošč. Izberite: “parts”, nato poiščite xc7z010clg400-1.
- Če ste pomotoma izbrali napačen del, lahko preprosto zamenjate čipe: Orodja -> Nastavitve projekta -> Splošno in kliknite pike desno od »Projektna naprava«
-
Kliknite Ustvari oblikovanje blokov.
Zaenkrat ga poimenujte design_1
- Videli boste zeleno vrstico z napisom Dodaj IP, kliknite jo.
-
Poiščite Zynq.
- Dvokliknite ZYNQ7 Processing System,
- Ta blok se bo pojavil v naši zasnovi blokov.
- Videli boste zeleno vrstico z napisom Run Block Automation, kliknite jo.
- Spodaj prenesite zybo_zynq_def.xml.
-
V Vivadu kliknite »Uvozi nastavitve XPS« in izberite »zybo_zynq_def.xml«
To vnaprej zapolni konfiguracijo bloka Vivado z vsemi vgrajenimi zunanjimi napravami in dodelitvijo zatičev plošče Zybo
-
Dvokliknite blok ZYNQ.
- MIO konfiguracija
- Omogoči časovnik 0 (pod enoto procesorja aplikacije - img 1)
- Omogoči nadzornika (pod enoto procesorja aplikacije- slika 1)
- Omogoči GPIO-> GPIO MIO (pod enoto procesorja aplikacije - img 2)
- Omogoči ponastavitev GPIO-> ENET (pod V/I perifer. Napravami- slika 2)
-
Konfiguracija ure
Onemogoči FCLK0 (pod urami PL Fabric - img 3)
- MIO konfiguracija
- Kliknite V redu.
-
»Zaženi samodejno blokiranje blokov« zdaj.
Nekaj vprašanj bo glede signalov, recimo V redu
-
Kliknite »Ustvari HDL ovoj«.
Ustvarjeni ovoj bomo želeli kopirati, da bo uporabnikom omogočil urejanje
- Kliknite V redu.
2. korak: Ustvarite Erniejevo PWM v Vivadu
Ta korak bo ustvaril IP PWM z vhodi, poslanimi prek knjižnice AXI.
-
Ustvarite blok AXI GPIO tako, da z desno tipko miške kliknete ozadje in kliknete »dodaj IP«
v iskalno vrstico vnesite "AXI_GPIO" in izberite ta paket
-
IP znova prilagodite tako, da dvokliknete nov blok axi_gpio_0
- pod GPIO nastavite širino GPIO na 2. Ti biti bodo signal PWM_ON za pogon vsakega primerka modula PWM.
- kliknite »omogoči dvojni kanal«
- pri GPIO 2 nastavite širino GPIO na 2. Ti biti bodo signal PWM_FW za nastavitev smeri vsakega primerka modula PWM.
-
Z desno miškino tipko kliknite izhodna vrata axi_gpio_0 z oznako GPIO in izberite "Naredi zunanje"
- Kliknite na nov izhod z oznako GPIO in se pomaknite na zavihek "lastnosti" na levi orodni vrstici in spremenite ime v PWM_ON
- Kliknite na nov izhod z oznako GPIO2 in se pomaknite na zavihek "lastnosti" na levi orodni vrstici ter spremenite ime v PWM_FW
-
Izberite Run Connection Automation v zeleni pasici nad blokovnim diagramom.
Če vrata priključite ročno, naslovi AXI morda ne bodo konfigurirani, kar bo kasneje povzročilo težave s komunikacijo
-
V podoknu Navigator Flow izberite vodja projekta -> Dodaj vire, da ustvarite nov blok IP po meri
- izberite "dodaj ali ustvari vire oblikovanja" in pritisni naprej
- kliknite "ustvari datoteko", spremenite vrsto datoteke v "SystemVerilog" in v polje za ime datoteke vnesite "pwm", nato kliknite V redu
- kliknite Dokončaj
-
prezrite okno Define Module s pritiskom na OK (kasneje jih bomo prepisali)
če vas vpraša, če ste prepričani, kliknite Da
-
Na zavihku viri dvokliknite pwm.sv (ki se nahaja v "Design Sources/design_1_wrapper")
Kopirajte/prilepite celotno kodo SystemVerilog iz spodaj priložene datoteke pwm.txt
3. korak: Ustvarite Erniejev TDOA v Vivadu
Ta korak bo ustvaril IP TDOA, katerega izhod je mogoče prebrati prek knjižnice AXI
-
Ustvarite blok AXI GPIO tako, da z desno tipko miške kliknete ozadje in kliknete »dodaj IP«
v iskalno vrstico vnesite "AXI_GPIO" in izberite ta paket
-
Ponovno prilagodite IP tako, da dvokliknete nov blok axi_gpio_1
- pod GPIO potrdite polje "Vsi vhodi" in nastavite širino GPIO na 32. To vodilo bo časovna razlika prihoda med obema senzorjema.
- znotraj bloka axi_gpio_1 kliknite + poleg vrat GPIO, da odkrijete gpio_io_i [31: 0].
-
Z desno miškino tipko kliknite izhodna vrata axi_gpio_1 z oznako gpio_io_i [31: 0] in izberite »Naredi zunanje«
Kliknite na nov vnos z oznako gpio_io_i [31: 0] in se pomaknite na zavihek "lastnosti" v levi orodni vrstici in spremenite ime v TDOA_val
-
Izberite Run Connection Automation v zeleni pasici nad blokovnim diagramom.
Če vrata priključite ročno, naslovi AXI morda ne bodo konfigurirani, kar bo kasneje povzročilo težave s komunikacijo
-
V podoknu Navigator Flow izberite vodja projekta -> Dodaj vire, da ustvarite nov blok IP po meri
- izberite "dodaj ali ustvari vire oblikovanja" in pritisni naprej
- kliknite "ustvari datoteko", spremenite vrsto datoteke v "SystemVerilog" in v polje za ime datoteke vnesite "tdoa", nato kliknite V redu
- kliknite Dokončaj
-
prezrite okno Define Module s pritiskom na OK (kasneje jih bomo prepisali)
če vas vpraša, če ste prepričani, kliknite Da
-
Na zavihku viri dvokliknite tdoa.sv (nahaja se v "Design Sources/design_1_wrapper")
Kopirajte/prilepite celotno kodo SystemVerilog iz spodaj priložene datoteke tdoa.txt
4. korak: Zavijanje in izvoz Ernieja
- Preverite, ali blok diagram izgleda kot priloženi posnetek zaslona
-
Na zavihku viri z desno tipko miške kliknite design_1.bd in izberite "Ustvari ovoj HDL …"
- Izberite "Kopiraj ustvarjen izhod, da dovolite uporabniške spremembe", nato pritisnite "V redu"
- Kopirajte kodo iz spodaj priloženega design_1_wrapper.txt in jo prilepite namesto ustvarjene kode design_1_wrapper.v
- shrani design_1_wrapper.v
-
Na zavihku viri dvokliknite datoteko ZYBO_Master.xdc v razdelku Omejitve/constrs1
- Kopirajte kodo iz spodaj priloženega datoteke ZYBO_Master.txt in jo prilepite namesto obstoječe kode ZYBO_Master.xdc
-
Upoštevajte naslednje vhodno/izhodne zatiče:
- L15: PWM signal za levi motor (Pmod JA2 na Zybo)
- L14: PWM signal za desni motor (Pmod JA8 na Zybo)
- V12: vhod vrat iz senzorja zvoka 1 (Pmod JE1 na Zybo)
- K16: vhod vrat iz senzorja zvoka 2 (Pmod JE2 na Zybo)
-
V podoknu Navigator Flow kliknite "Generate Bitstream" pod Program and Debug
če mislite, da je to storjeno takoj, verjetno ni. resno, skuhaj si čaj
-
Kliknite Datoteka-> Izvozi-> Ustvari strojno opremo
Potrdite polje »Vključi Bitstream« in pritisnite V redu
- Kliknite Datoteka-> Zaženi SDK
5. korak: Gradnja Ernieja
- Servomotorje namestite na servo ohišje.
-
Po podatkovnem listu za servomotorje naredite naslednje:
- priključite ozemljitev servomotorjev na ozemljitvene zatiče na Zybo -jevem JA Pmodu (glejte priloženo sliko pinout)
- priključite napajalni zatič servomotorjev na baterijo AA
Ugotovili smo, da ko so servomotorji priključeni na Zybov Vdd, plošča črpa preveč toka, zaradi česar se plošča nenehno ponastavlja
- priključke vhodnega signala povežite z ustreznimi izhodnimi zatiči Zybo (levo: JA2, desno: JA8)
- zvočne senzorje namestite na sprednji del ohišja, obrnjene naprej in jih držite čim bližje skupaj
- za priključitev zvočnih senzorjev uporabite priročnik za priključitev zvočnega senzorja
- priključite ozemljitvene in Vdd zatiče vsakega zvočnega senzorja na tla in zatiče Vdd na Zybojevem JE Pmodu (glejte priloženo sliko pinout)
- priključite zatič vrat levega senzorja zvoka na JE1
- žico vrat desnega senzorja zvoka priključite na JE2
6. korak: Erniejev prvi BSP
-
Ustvarite BSP, da zaključite platformo, ki smo jo pravkar ustvarili.
To lahko dobite prek File -> New -> Board Support Package
-
Pojavil se bo čarovnik, ki vam bo pomagal ustvariti BSP.
- Ta BSP želimo povezati z našo platformo, ki smo jo pravkar ustvarili
- Platforma strojne opreme se mora ujemati s tisto, ki smo jo pravkar ustvarili (glej img 1)
- Naš CPE bo _0 CPU.
- Kliknite Dokončaj
- Preverite, ali je lwip141 vključen z vašim bsp v pojavnem oknu (glejte sliko 2)
7. korak: FreeRTOS 'Ernie
-
Prenesite najnovejšo različico FreeRTOS iz Sourceforge.
Če je prenos izvedljiv, ga zaženite, da izvlečete datoteke FreeRTOS v imenik vašega projekta
- Pustite ta SDK odprt in kliknite Datoteka -> Uvozi.
- Želimo klikniti Splošno-> Iz obstoječega delovnega prostora, nato pa se bomo morali pomakniti do mesta, kjer smo prenesli FreeRTOS.
-
Naš demo bo na voljo v FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702. Ko izberemo to mapo, bi morali videti tri projekte (naša koda (OS), to je BSP in platforma HW).
SAMO Uvozite RTOSDemo v trenutni delovni prostor
-
Na vseh projektih "modrih" map spremenite referenčni BSP
- Z desno tipko miške kliknite in izberite »Spremeni referenčnega BSP«.
- Izberite BSP, ki ste ga pravkar ustvarili za svoj Zybo
- Urejanje kode v Xilinxovih mapah SDK Blue so dejanski projekti kod.
8. korak: Uvoz Erniejeve kode C
- V imenik RTOSDemo/src prepišite obstoječo datoteko main.c s datoteko main.c, ki je tukaj priložena.
- Kopirajte datoteko main_sound.c v imenik RTOSDemo/src.
9. korak: Odpravljanje napak Ernie
- Izberite Zaženi -> Odpravljanje napak
- V levem podoknu ustvarite nov zagon sistemskega razhroščevalnika
-
Na zavihku Nastavitev cilja,
izberite »Ponastavi celoten sistem«, tako da sta izbrana tako to kot ps7_init
-
Zdaj izberite zavihek Aplikacija.
- Izberite "prenos aplikacije"
- Jedro cortexa9_0 nastavite na "ustavitev pri vnosu programa"
- Kliknite Uporabi in odpravi napake.
- Preverite, ali v postopku odpravljanja napak ni napak
- Robota pozorno spremljajte in pritiskajte gumb Nadaljuj, dokler se program ne zažene, ne da bi pri tem prišli do prelomnih točk
- Robot bi se zdaj moral obrniti in premakniti proti glasnim zvokom. Juhu!
10. korak: Ernie postane avtonomna
- Ko je vaš projekt pripravljen za delo (brez težav ga lahko zaženete v razhroščevalniku), ste pripravljeni, da ga naložite v bliskovni pomnilnik na plošči.
-
Ustvarite projekt, imenovan "prvi zagonski nalagalnik" (FSBL) in vsebuje vsa navodila, ki jih bo vaša plošča potrebovala za nalaganje datotek projekta (bitni tok in OS) ob zagonu.
- Izberite: File-> New-> Application Project in prikazalo bi se naslednje okno.
- Poimenujte ga, kar želite (npr. "FSBL")
- Poskrbite, da je strojna platforma tista, s katero delate
- Pritisnite naslednji (ne pritisnite Dokončaj)
- Izberite predlogo Zynq FSBL
- Kliknite dokončaj.
- Ko je postopek ustvarjanja zaključen, boste vedeli, ali je vse delovalo, če v oknu Project Explorer vidite naslednje dve novi mapi.
-
Ustvarite zagonsko sliko Zdaj boste morali ustvariti zagonsko sliko.
- Z desno miškino tipko kliknite mapo projekta (v tem primeru se moja imenuje »RTOSDemo«)
- V spustnem meniju kliknite »Ustvari zagonsko sliko«
-
Če je vse pravilno povezano, bo projekt vedel, katere datoteke potrebuje, naslednje okno pa bo videti, kot vidite spodaj (ključno je, da imate tri razdelke v razdelku Boot image, zagonski nalagalnik, vašo bit datoteko in vaše projekte.elf datoteko).).
Če temu ni tako, je morda kaj narobe s povezovanjem vašega projekta. Zagotovite, da so projektne mape povezane z ustreznimi BSP
- Kliknite gumb »Ustvari sliko«
-
Zadnji korak, ki ga morate izvesti v programski opremi, je, da svojo prej ustvarjeno sliko utripate v pomnilnik plošče
- V glavni orodni vrstici SDK izberite Xilinx Tools-> Program Flash Memory
- Zagotovite, da je izbrana pravilna strojna platforma in da pot slikovne datoteke pravilno kaže na datoteko. BIN, ustvarjeno v prejšnjem koraku.
- Pri vrsti bliskavice izberite »qspi single«
- Potrdite polje »Preveri po bliskavici«, da zagotovite celovitost, vendar to ni potrebno
- Konfigurirajte svojo ploščo Nazadnje morate zagotoviti, da je mostič za programiranje plošč (JP5) pravilno nastavljen za zagon iz qspi (ki vsebuje tisto, kar ste pravkar utripali), ko se zažene BootROM.
- Zdaj preprosto vklopite napravo in se prepričajte, da sveti LED »Logic Configuration Done« (LED 10) zeleno.
11. korak: Naredite Ernie srčkano
- Krzno
- Veliko krzna
- Velike oči!
- … klobuk
Priporočena:
Kako narediti brezžični telefon v pločevinki! (Arduino Walkie Talkie): 7 korakov (s slikami)
Kako narediti brezžični telefon v pločevinki! (Arduino Walkie Talkie): Pred dnevi sem bil sredi zelo pomembnega telefonskega klica, ko je moj bananin telefon prenehal delovati! Bil sem tako razočaran. Takrat zadnjič zamudim klic zaradi tega neumnega telefona! (Če pogledam nazaj, sem se morda malo preveč razjezil v
Kako narediti sončno svetlobo za ponovno polnjenje: 8 korakov
Kako narediti sončno svetlobo za ponovno polnjenje:
DIY Kako prikazati čas na M5StickC ESP32 z uporabo Visuina - enostavno narediti: 9 korakov
DIY Kako prikazati čas na M5StickC ESP32 z uporabo Visuina - enostavno narediti: V tej vadnici se bomo naučili programirati ESP32 M5Stack StickC z Arduino IDE in Visuino za prikaz časa na LCD -prikazovalniku
Naredi sam Kako narediti kul videti uro - StickC - enostavno narediti: 8 korakov
DIY Kako narediti kul videti uro - StickC - Enostavno narediti: V tej vadnici se bomo naučili, kako programirati ESP32 M5Stack StickC z Arduino IDE in Visuino za prikaz časa na LCD -ju in nastaviti čas tudi z gumbi StickC
Kako narediti koledar starih staršev & Beležka (tudi če ne veste, kako naj beležko): 8 korakov (s slikami)
Kako narediti koledar starih staršev & Beležka (tudi če ne veste, kako naj beležko): To je zelo ekonomično (in zelo cenjeno!) Praznično darilo za stare starše. Letos sem naredil 5 koledarjev za manj kot 7 USD. Materiali: 12 odličnih fotografij vašega otroka, otrok, nečakov, nečakov, psov, mačk ali drugih sorodnikov 12 različnih kosov