Cuprins:
- Pasul 1: Configurarea unui proiect în Vivado pentru Ernie
- Pasul 2: Crearea PWM-ului lui Ernie în Vivado
- Pasul 3: Crearea TDOA a lui Ernie în Vivado
- Pasul 4: Împachetarea și exportul Ernie
- Pasul 5: Construirea lui Ernie
- Pasul 6: Primul BSP al lui Ernie
- Pasul 7: Ernie FreeRTOS
- Pasul 8: Importarea codului C al lui Ernie
- Pasul 9: Depanare Ernie
- Pasul 10: Îl face autonom pe Ernie
- Pasul 11: Facerea lui Ernie Cute
Video: Cum să-l faci pe Ernie: 11 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:41
Acesta este un tutorial despre cum să construiești Ernie, robotul tău autonom de urmărire a sunetului, folosind o placă Zybo. Acesta va acoperi cum să: creați un proiect în Vivado, să creați drivere de servomotor de tip PWM în FPGA, interfața cu doi senzori de sunet, să creați o diferență de timp de sosire IP, să utilizați freeRTOS și să rulați zybo de pe o baterie. Acesta a fost proiectul nostru final pentru o clasă de sisteme de operare în timp real (CPE 439) la Cal Poly SLO.
Lista de echipamente:
- 1 - Placa de dezvoltare ZYBO Zynq 7000
- 2 - Servo de rotație continuă Parallax
- 2 - Senzor de sunet (Detector de sunet SparkFun)
- 1 - acumulator USB 5V litiu-ion (pentru bord)
- 4 - baterii AA (pentru servomotoare)
- 1 - pachet de baterii AA (cu 4 sloturi pentru baterii)
- 1 - Cablu micro USB
- 1 - Pană de pâine
- multe - fire de la mascul la mascul
- 1 - Șasiu servo
Cerințe software:
- Xilinx Vivado Design Suite 2016.2
- Digilent Adept 2.16.1
Pasul 1: Configurarea unui proiect în Vivado pentru Ernie
- Va apărea un vrăjitor
- Faceți clic pe Următorul
-
Următorul nume al proiectului
- Nu folosiți niciodată un nume de proiect sau o cale de director care să aibă spații !!!!!
- Acesta va fi un proiect RTL.
- Nu dorim să specificăm surse
-
Dând clic pe Următorul, ajungem la pagina Piesă. Folosim un ZYNQ XC7Z010-1CLG400C.
- Vivado nu are Zybo listat ca unul dintre panourile sale predefinite. Selectați: „piese”, apoi căutați xc7z010clg400-1.
- Dacă alegeți greșit partea greșită, puteți schimba cu ușurință jetoanele: Instrumente -> Setări proiect -> General și faceți clic pe punctele din dreapta „Dispozitiv proiect”
-
Faceți clic pe Creați design de bloc.
Denumiți-l design_1 pentru moment
- Veți vedea o bară verde pe care scrie Add IP, faceți clic pe ea.
-
Căutați Zynq.
- Faceți dublu clic pe sistemul de procesare ZYNQ7,
- Acest bloc va apărea în designul blocului nostru.
- Veți vedea o bară verde pe care scrie Run Block Automation, faceți clic pe ea.
- Descărcați zybo_zynq_def.xml mai jos.
-
În Vivado, faceți clic pe „Importați setările XPS” și selectați „zybo_zynq_def.xml”
Acest pre completează configurația blocului Vivado cu toate perifericele încorporate ale plăcii Zybo și atribuirea pinilor
-
Faceți dublu clic pe blocul ZYNQ.
-
Configurare MIO
- Activați temporizatorul 0 (sub Unitatea procesorului de aplicații - img 1)
- Activați Watchdog (sub Unitatea procesorului de aplicații - img 1)
- Activați GPIO-> GPIO MIO (sub Unitatea procesorului de aplicații - img 2)
- Activați resetarea GPIO-> ENET (sub periferice I / O- img 2)
-
Configurarea ceasului
Dezactivați FCLK0 (sub PL Fabric Clocks - img 3)
-
- Faceți clic pe Ok.
-
„Rulați automatizarea blocului” acum.
Vor fi câteva întrebări despre semnale, spuneți OK
-
Faceți clic pe „Generare HDL Wrapper”.
Vom dori să copiem ambalajul generat pentru a permite modificările utilizatorilor
- Faceți clic pe OK.
Pasul 2: Crearea PWM-ului lui Ernie în Vivado
Acest pas va genera un IP PWM cu intrări trimise prin biblioteca AXI.
-
Creați blocul AXI GPIO făcând clic dreapta pe fundal și făcând clic pe „adăugați IP”
tastați „AXI_GPIO” în bara de căutare și selectați acest pachet
-
Re-personalizați IP făcând dublu clic pe noul bloc axi_gpio_0
- sub GPIO, setați lățimea GPIO la 2. Acești biți vor fi semnalul PWM_ON pentru a conduce fiecare instanță a modulului PWM.
- faceți clic pe „activați canalul dual”
- sub GPIO 2, setați lățimea GPIO la 2. Acești biți vor fi semnalul PWM_FW pentru a seta direcția fiecărei instanțe a modulului PWM.
-
Faceți clic dreapta pe portul de ieșire axi_gpio_0 etichetat GPIO și selectați „Make External”
- Faceți clic pe noua ieșire etichetată GPIO și navigați la fila „Proprietăți” din bara de instrumente din stânga și schimbați numele în PWM_ON
- Faceți clic pe noua ieșire etichetată GPIO2 și navigați la fila „Proprietăți” din bara de instrumente din stânga și schimbați numele în PWM_FW
-
Selectați Execută automatizarea conexiunii în bannerul verde de deasupra diagramei bloc.
Dacă conectați manual porturile, este posibil ca adresele AXI să nu fie configurate, ceea ce duce la probleme de comunicare ulterior
-
În panoul Flug Navigator, selectați manager de proiect -> Adăugați surse pentru a crea un nou bloc IP personalizat
- alegeți „adăugați sau creați surse de proiectare” și accesați următoarea
- faceți clic pe „creați fișier”, schimbați tipul de fișier în „SystemVerilog” și tastați „pwm” în câmpul cu numele fișierului, apoi faceți clic pe OK
- faceți clic pe Finalizare
-
ignorați fereastra Definire modul apăsând OK (le vom suprascrie mai târziu)
dacă vă întreabă dacă sunteți sigur, dați clic pe Da
-
În fila Surse, faceți dublu clic pe pwm.sv (aflat în „Design Sources / design_1_wrapper”)
Copiați / lipiți întregul cod SystemVerilog din fișierul pwm.txt atașat mai jos
Pasul 3: Crearea TDOA a lui Ernie în Vivado
Acest pas va genera un IP TDOA a cărui ieșire poate fi citită prin biblioteca AXI
-
Creați blocul AXI GPIO făcând clic dreapta pe fundal și făcând clic pe „adăugați IP”
tastați „AXI_GPIO” în bara de căutare și selectați acest pachet
-
Re-personalizați IP făcând dublu clic pe noul bloc axi_gpio_1
- sub GPIO, bifați caseta „Toate intrările” și setați lățimea GPIO la 32. Această magistrală va fi diferența de timp de sosire între cei doi senzori.
- în interiorul blocului axi_gpio_1, faceți clic pe + de lângă portul GPIO pentru a afișa gpio_io_i [31: 0].
-
Faceți clic dreapta pe portul de ieșire axi_gpio_1 etichetat gpio_io_i [31: 0] și selectați „Make External”
Faceți clic pe noua intrare etichetată gpio_io_i [31: 0] și navigați la fila „Proprietăți” din bara de instrumente din stânga și schimbați numele în TDOA_val
-
Selectați Execută automatizarea conexiunii în bannerul verde de deasupra diagramei bloc.
Dacă conectați manual porturile, este posibil ca adresele AXI să nu fie configurate, ceea ce duce la probleme de comunicare ulterior
-
În panoul Flug Navigator, selectați manager de proiect -> Adăugați surse pentru a crea un nou bloc IP personalizat
- alegeți „adăugați sau creați surse de proiectare” și accesați următoarea
- faceți clic pe „creați fișier”, schimbați tipul de fișier la „SystemVerilog” și tastați „tdoa” în câmpul cu numele fișierului, apoi faceți clic pe OK
- faceți clic pe Finalizare
-
ignorați fereastra Definire modul apăsând OK (le vom suprascrie mai târziu)
dacă vă întreabă dacă sunteți sigur, dați clic pe Da
-
În fila Surse, faceți dublu clic pe tdoa.sv (aflat în „Design Sources / design_1_wrapper”)
Copiați / lipiți întregul cod SystemVerilog din fișierul tdoa.txt atașat mai jos
Pasul 4: Împachetarea și exportul Ernie
- Verificați dacă diagrama bloc arată ca captura de ecran atașată
-
În fila Surse, faceți clic dreapta pe design_1.bd și selectați „Creați HDL Wrapper …”
- Selectați „Copiați ieșirea generată pentru a permite modificările utilizatorului”, apoi apăsați „OK”
- Copiați codul din design_1_wrapper.txt atașat mai jos și lipiți-l în locul codului design_1_wrapper.v generat
- salvați design_1_wrapper.v
-
În fila Surse, faceți dublu clic pe fișierul ZYBO_Master.xdc sub Constraints / constrs1
- Copiați codul din ZYBO_Master.txt atașat mai jos și lipiți-l în locul codului ZYBO_Master.xdc existent
-
Rețineți următorii pini de intrare / ieșire:
- L15: semnal PWM pentru motorul din stânga (Pmod JA2 pe Zybo)
- L14: semnal PWM pentru motorul potrivit (Pmod JA8 pe Zybo)
- V12: intrare poartă de la senzorul de sunet 1 (Pmod JE1 pe Zybo)
- K16: intrare poartă de la senzorul de sunet 2 (Pmod JE2 pe Zybo)
-
În panoul Flug Navigator, faceți clic pe „Generați fluxul de biți” sub Program și depanare
dacă crezi că s-a făcut imediat, probabil că nu. serios, pregătește niște ceai
-
Faceți clic pe Fișier-> Export-> Generați hardware
Bifați „Includeți Bitstream” și apăsați OK
- Faceți clic pe Fișier-> Lansare SDK
Pasul 5: Construirea lui Ernie
- Montați servomotoarele pe șasiul servo.
-
Urmând fișa tehnică pentru servos, faceți următoarele:
- conectați pământul servomotoarelor la pinii de împământare de pe modelul JA P Zybo (a se vedea imaginea atașată)
- conectați știftul de alimentare al servo-urilor la acumulatorul AA
Am constatat că, atunci când servo-urile sunt conectate la Vdd-ul lui Zybo, placa atrage prea mult curent, determinând placa să se reseteze continuu
- conectați pinii de semnal de intrare la pinii de ieșire corespunzători ai Zybo (stânga: JA2, dreapta: JA8)
- montați senzorii de sunet în partea din față a șasiului, cu fața în față, menținându-i cât mai aproape posibil
-
utilizați ghidul de conectare al senzorului de sunet pentru a integra senzorii de sunet
- conectați pământul și pinii Vdd ai fiecărui senzor de sunet la sol și pinii Vdd de pe JE Pmod de la Zybo (a se vedea imaginea atașată)
- conectați pinul de poartă al senzorului de sunet stâng la JE1
- conectați pinul de poartă al senzorului de sunet corect la JE2
Pasul 6: Primul BSP al lui Ernie
-
Creați un BSP pentru a încheia platforma pe care tocmai am creat-o.
Puteți obține acest lucru prin File -> New -> Board Support Package
-
Va apărea un vrăjitor pentru a vă ajuta să creați BSP.
- Vrem să legăm acest BSP cu platforma noastră pe care tocmai am creat-o, deci
- Platforma hardware ar trebui să se alinieze cu cea pe care tocmai am creat-o (vezi imaginea 1)
- Procesorul nostru va fi CPU _0.
- Faceți clic pe Finalizare
- Asigurați-vă că bifați lwip141 pentru a fi inclus în bsp în fereastra care apare (a se vedea imaginea 2)
Pasul 7: Ernie FreeRTOS
-
Descărcați cea mai recentă versiune FreeRTOS de la Sourceforge.
Dacă descărcarea este executabilă, rulați-o pentru a extrage fișierele FreeRTOS în directorul de proiect
- Păstrați SDK-ul deschis și faceți clic pe Fișier -> Import.
- Vrem să facem clic pe General-> Din un spațiu de lucru existent și apoi vom dori să navigăm până unde am descărcat FreeRTOS.
-
Demo-ul nostru va fi localizat în FreeRTOS / Demo / CORTEX_A9_Zynq_ZC702. La selectarea acestui folder, ar trebui să vedem trei proiecte care apar (codul nostru (OS), este BSP și platforma HW).
Importați doar RTOSDemo în spațiul dvs. de lucru curent
-
Pe toate folderele „albastre”, proiectele modifică BSP-ul de referință
- Faceți clic dreapta și selectați „Modificați BSP referențiat”.
- Selectați BSP-ul pe care tocmai l-ați creat pentru Zybo
- Editarea codului în folderele SDK Blue ale Xilinx reprezintă proiectele de coduri reale.
Pasul 8: Importarea codului C al lui Ernie
- În directorul RTOSDemo / src, suprascrieți main.c existent cu fișierul main.c atașat aici.
- Copiați fișierul main_sound.c în directorul RTOSDemo / src.
Pasul 9: Depanare Ernie
- Selectați Executare -> Configurări de depanare
- În panoul din stânga, creați o nouă rulare de sistem de depanare
-
În fila Configurare țintă,
selectați „Reset Entire System” pentru a selecta atât that, cât și ps7_init
-
Acum selectați fila Aplicație.
- Selectați „descărcați aplicația”
- Setați nucleul cortexa9_0 la „oprire la intrarea în program”
- Faceți clic pe Aplicare și depanare.
- Verificați dacă nu există erori în procesul de depanare
- Urmărind atent robotul, apăsați butonul Reluare până când programul rulează fără a atinge niciun punct de întrerupere
- Robotul ar trebui să se întoarcă și să se deplaseze către zgomote puternice. Yay!
Pasul 10: Îl face autonom pe Ernie
- Odată ce proiectul dvs. este gata (puteți rula fără probleme prin debugger), sunteți gata să îl încărcați pe memoria flash de pe placa dvs.
-
Creați ceea ce se numește proiectul „first stage boot loader” (FSBL) și conține toate instrucțiunile de care va avea nevoie placa dvs. pentru a încărca fișierele de proiect (fluxul de biți și sistemul de operare) la pornire.
- Selectați: Fișier-> Nou-> Proiect de aplicație și ar trebui să apară următoarea fereastră.
- Denumiți-l ceea ce doriți (adică „FSBL”)
- Asigurați-vă că platforma hardware este cea cu care lucrați
- Apăsați următorul (Nu apăsați Finish)
- Selectați șablonul Zynq FSBL
- Faceți clic pe Terminare.
- Odată ce procesul de creare este finalizat, veți ști dacă totul a funcționat dacă vedeți următoarele două foldere noi în fereastra Project Explorer.
-
Creați o imagine de pornire Acum va trebui să creați imaginea de pornire.
- Faceți clic dreapta pe folderul de proiect (în acest caz al meu se numește „RTOSDemo”)
- Faceți clic pe „Creați o imagine de pornire” din meniul derulant
-
Dacă totul este legat corect, proiectul va ști de ce fișiere are nevoie și următoarea fereastră va arăta așa cum vedeți mai jos (cheia fiind că aveți 3 partiții în secțiunea Boot image, bootloader-ul, fișierul dvs. de biți și fișierele dvs..elf).
Dacă nu este cazul, este posibil să se întâmple ceva în neregulă cu conectarea la proiect. Asigurați-vă că folderele proiectului sunt conectate la BSP-urile respective
- Faceți clic pe butonul „Creați imagine”
-
Ultimul pas pe care trebuie să îl efectuați în software este acum să blocați imaginea creată anterior în memoria plăcii
- Selectați din bara principală a instrumentului SDK, selectați Xilinx Tools-> Program Flash Memory
- Asigurați-vă că este selectată platforma hardware corectă și că calea fișierului imagine indică corect fișierul. BIN creat în pasul anterior.
- Selectați „qspi single” din tipul Flash
- Bifați „Verificați după bliț” pentru a asigura integritatea, dar nu este necesar
- Configurați-vă placa În cele din urmă, trebuie să vă asigurați că jumperul de mod de programare a plăcilor (JP5) este setat corect pentru a selecta pornirea din qspi (care conține ceea ce tocmai ați aprins) când este rulat BootROM.
- Acum pur și simplu alimentați dispozitivul și asigurați-vă că „LED-ul de configurare logică terminat” (LED 10) este aprins în verde.
Pasul 11: Facerea lui Ernie Cute
- Blană
- Multă blană
- Ochi mari!
- … pălărie de top
Recomandat:
Cum să faci un telefon fără fir! (Arduino Walkie Talkie): 7 pași (cu imagini)
Cum să faci un telefon fără fir! (Arduino Walkie Talkie): Chiar zilele trecute, eram în mijlocul unui apel telefonic foarte important când telefonul meu cu banane a încetat să funcționeze! Am fost atât de frustrat. Aceasta este ultima dată când îmi lipsește un apel din cauza acelui telefon prost! (În retrospectivă, poate că m-am înfuriat puțin prea mult în
Cum să faci 4G LTE dublă antenă BiQuade Pași simpli: 3 pași
Cum să fac 4G LTE Double BiQuade Antenna Pași simpli: De cele mai multe ori mă confrunt, nu am o putere de semnal bună pentru lucrările mele de zi cu zi. Asa de. Căut și încerc diferite tipuri de antenă, dar nu funcționează. După un timp pierdut, am găsit o antenă pe care sper să o fac și să o testez, pentru că nu se bazează pe principiul
Cum să faci un contor de pași ?: 3 pași (cu imagini)
Cum să fac un contor de pași ?: obișnuiam să performez bine la multe sporturi: mersul pe jos, alergatul, mersul pe bicicletă, jocul de badminton etc. Îmi place să călăresc să călătoresc în preajmă. Ei bine, uită-te la burtica mea ostilă …… Ei bine, oricum, decid să reîncep să fac mișcare. Ce echipament ar trebui să pregătesc?
Cum să faci un videoclip pe ecran divizat cu patru pași: 4 pași (cu imagini)
Cum să faci un videoclip pe ecran divizat cu patru pași: Adesea vedem o aceeași persoană prezentată într-o scenă de două ori într-o piesă TV. Și din câte știm, actorul nu are un frate geamăn. De asemenea, am urmărit că două videoclipuri de cântat sunt plasate pe un ecran pentru a compara abilitățile lor de a cânta. Aceasta este puterea spl
Cum să faci un calendar al bunicilor & Scrapbook (chiar dacă nu știi cum să scrapbook): 8 pași (cu imagini)
Cum să faci un calendar al bunicilor & Scrapbook (chiar dacă nu știi cum să scrapbook): Acesta este un cadou de vacanță foarte economic (și mult apreciat!) Pentru bunicii. Anul acesta am realizat 5 calendare pentru mai puțin de 7 USD fiecare