Sadržaj:

Kako napraviti Ernie: 11 koraka
Kako napraviti Ernie: 11 koraka

Video: Kako napraviti Ernie: 11 koraka

Video: Kako napraviti Ernie: 11 koraka
Video: Женщина подала на развод сразу после того, как увидела это фото... 2024, Novembar
Anonim
Kako napraviti Ernie
Kako napraviti Ernie

Ovo je vodič o tome kako izgraditi Ernieja, vašeg autonomnog robota za praćenje zvuka, koristeći Zybo ploču. Obuhvatit će kako: stvoriti projekt u Vivadu, stvoriti upravljačke programe servo motora poput PWM-a u FPGA-i, sučelje s dva zvučna senzora, stvoriti vremensku razliku IP-a dolaska, koristiti freeRTOS i pokrenuti zybo iz baterije. Ovo je bio naš posljednji projekt za klasu operativnih sistema u stvarnom vremenu (CPE 439) na Cal Poly SLO.

Lista opreme:

  • 1 - Razvojna ploča ZYBO Zynq 7000
  • 2 - Servo paralelnog kontinuiranog okretanja
  • 2 - Senzor zvuka (SparkFun detektor zvuka)
  • 1 - 5v litijum -jonska USB baterija (za ploču)
  • 4 - AA baterije (za servo pogone)
  • 1 - AA baterija (sa 4 utora za baterije)
  • 1 - Mikro USB kabl
  • 1 - Oglasna ploča
  • mnogo - muške do muške žice
  • 1 - Servo kućište

Softverski zahtjevi:

  • Xilinx Vivado Design Suite 2016.2
  • Digilent Adept 2.16.1

Korak 1: Postavljanje projekta u Vivadu za Ernie

Postavljanje projekta u Vivadu za Ernie
Postavljanje projekta u Vivadu za Ernie
Postavljanje projekta u Vivadu za Ernie
Postavljanje projekta u Vivadu za Ernie
Postavljanje projekta u Vivadu za Ernie
Postavljanje projekta u Vivadu za Ernie
  1. Pojavit će se čarobnjak
  2. Pritisnite Dalje
  3. Dajte sljedeći naziv projektu

    1. Nikada nemojte koristiti naziv projekta ili putanju direktorija koja ima razmake !!!!!
    2. Ovo će biti RTL projekat.
  4. Ne želimo navesti izvore
  5. Klikom na Next dolazimo na stranicu Part. Koristimo ZYNQ XC7Z010-1CLG400C.

    1. Vivado nema Zybo naveden kao jednu od unaprijed definiranih ploča. Odaberite: “parts”, zatim potražite xc7z010clg400-1.
    2. Ako ste greškom odabrali pogrešan dio, lako možete promijeniti čipove: Alati -> Postavke projekta -> Općenito i kliknite točkice desno od "Projektni uređaj"
  6. Kliknite Stvori dizajn bloka.

    Dajte mu naziv design_1 za sada

  7. Vidjet ćete zelenu traku s natpisom Dodaj IP, kliknite na nju.
  8. Potražite Zynq.

    1. Dvaput kliknite ZYNQ7 procesni sistem,
    2. Ovaj blok će se pojaviti u našem dizajnu bloka.
  9. Vidjet ćete zelenu traku na kojoj piše Run Block Automation, kliknite na nju.
  10. Preuzmite zybo_zynq_def.xml ispod.
  11. U Vivadu kliknite "Uvezi XPS postavke" i odaberite "zybo_zynq_def.xml"

    Ovo prethodno popunjava konfiguraciju bloka Vivado sa svim ugrađenim perifernim uređajima i dodjelom pinova Zybo ploče

  12. Dvaput kliknite na ZYNQ blok.

    1. MIO konfiguracija
      1. Omogući tajmer 0 (ispod jedinice procesorske aplikacije - img 1)
      2. Omogući Watchdog (pod jedinicom procesora aplikacije- img 1)
      3. Omogući GPIO-> GPIO MIO (u odjeljku Procesorska jedinica aplikacije - img 2)
      4. Omogući GPIO-> ENET Reset (ispod I/O periferije- img 2)
    2. Konfiguracija sata

      Onemogućite FCLK0 (pod PL satovi od tkanine - img 3)

  13. Pritisnite U redu.
  14. “Pokreni automatizaciju blokova” sada.

    Bit će nekih pitanja o signalima, recite OK

  15. Kliknite na "Generiraj HDL omot".

    Želimo kopirati generirani omot kako bismo omogućili korisnička uređivanja

  16. Pritisnite OK.

Korak 2: Kreiranje Ernijeve PWM u Vivadu

Kreiranje Ernijevog PWM -a u Vivadu
Kreiranje Ernijevog PWM -a u Vivadu
Kreiranje Ernijevog PWM -a u Vivadu
Kreiranje Ernijevog PWM -a u Vivadu

Ovaj korak će generirati PWM IP sa ulazima poslanim preko AXI biblioteke.

  1. Napravite AXI GPIO blok desnim klikom na pozadinu i klikom na "dodaj IP"

    upišite "AXI_GPIO" u traku za pretraživanje i odaberite ovaj paket

  2. Ponovo prilagodite IP dvostrukim klikom na novi blok axi_gpio_0

    1. pod GPIO, postavite GPIO širinu na 2. Ovi bitovi će biti signal PWM_ON za pokretanje svake instance PWM modula.
    2. kliknite "omogući dvokanalni"
    3. pod GPIO 2, postavite GPIO širinu na 2. Ovi bitovi će biti signal PWM_FW za postavljanje smjera svake instance PWM modula.
  3. Desnim klikom na izlazni port axi_gpio_0 s oznakom GPIO odaberite "Make External"

    1. Kliknite na novi izlaz s oznakom GPIO, idite na karticu "svojstva" na lijevoj alatnoj traci i promijenite naziv u PWM_ON
    2. Kliknite na novi izlaz s oznakom GPIO2, idite na karticu "svojstva" na lijevoj alatnoj traci i promijenite naziv u PWM_FW
  4. Odaberite Pokreni automatizaciju veze na zelenom natpisu iznad blok dijagrama.

    Ako ručno povežete portove, AXI adrese se možda neće konfigurirati, što kasnije dovodi do problema u komunikaciji

  5. U oknu Navigator protoka odaberite upravitelj projekta -> Dodaj izvore za stvaranje novog prilagođenog IP bloka
    1. odaberite "dodaj ili kreiraj izvore dizajna" i pritisni sljedeće
    2. kliknite "kreiraj datoteku", promijenite vrstu datoteke u "SystemVerilog" i upišite "pwm" u polje za naziv datoteke, a zatim kliknite u redu
    3. kliknite Završi
    4. ignorirajte prozor Define Module pritiskom na OK (kasnije ćemo ih prepisati)

      ako vas pita jeste li sigurni, kliknite Da

  6. Na kartici izvori dvaput kliknite na pwm.sv (nalazi se u "Izvori dizajna/design_1_wrapper")

    Kopirajte/zalijepite cijeli kôd SystemVerilog iz pwm.txt datoteke koja je dolje priložena

Korak 3: Kreiranje Ernijevog TDOA -a u Vivadu

Kreiranje Ernijevog TDOA -a u Vivadu
Kreiranje Ernijevog TDOA -a u Vivadu
Kreiranje Ernijevog TDOA -a u Vivadu
Kreiranje Ernijevog TDOA -a u Vivadu

Ovaj korak će generirati TDOA IP čiji se izlaz može čitati putem AXI biblioteke

  1. Napravite AXI GPIO blok desnim klikom na pozadinu i klikom na "dodaj IP"

    upišite "AXI_GPIO" u traku za pretraživanje i odaberite ovaj paket

  2. Ponovo prilagodite IP dvostrukim klikom na novi axi_gpio_1 blok

    1. pod GPIO, označite polje "Svi ulazi" i postavite GPIO širinu na 32. Ova sabirnica će biti vremenska razlika dolaska između dva senzora.
    2. unutar axi_gpio_1 bloka, kliknite + pored GPIO porta da otkrijete gpio_io_i [31: 0].
  3. Desnim klikom na izlazni port axi_gpio_1 označenim gpio_io_i [31: 0] odaberite "Make External"

    Kliknite na novi unos označen gpio_io_i [31: 0], i idite do kartice "svojstva" na lijevoj traci s alatima i promijenite naziv u TDOA_val

  4. Odaberite Pokreni automatizaciju veze na zelenom natpisu iznad blok dijagrama.

    Ako ručno povežete portove, AXI adrese se možda neće konfigurirati, što kasnije dovodi do problema u komunikaciji

  5. U oknu Navigator protoka odaberite upravitelj projekta -> Dodaj izvore da biste stvorili novi prilagođeni IP blok

    1. odaberite "dodaj ili kreiraj izvore dizajna" i pritisni sljedeće
    2. kliknite "kreiraj datoteku", promijenite vrstu datoteke u "SystemVerilog" i upišite "tdoa" u polje za naziv datoteke, a zatim kliknite u redu
    3. kliknite Završi
    4. ignorirajte prozor Define Module pritiskom na OK (kasnije ćemo ih prepisati)

      ako vas pita jeste li sigurni, kliknite Da

  6. Na kartici izvori dvaput kliknite na tdoa.sv (nalazi se u "Izvori dizajna/design_1_wrapper")

    Kopirajte/zalijepite cijeli kôd SystemVerilog iz donje priložene datoteke tdoa.txt

Korak 4: Omotavanje i izvoz Ernie

Omotavanje i izvoz Ernie
Omotavanje i izvoz Ernie
  1. Provjerite izgleda li blok dijagram kao priloženi snimak zaslona
  2. Na kartici izvori kliknite desnom tipkom miša design_1.bd i odaberite "Create HDL Wrapper …"

    1. Odaberite "Kopiraj generirani izlaz za dopuštanje korisničkih uređivanja", a zatim pritisnite "OK"
    2. Kopirajte kôd iz design_1_wrapper.txt dolje priloženog i zalijepite ga umjesto generiranog code_1_wrapper.v koda
    3. spremi design_1_wrapper.v
  3. Na kartici izvori dvaput kliknite na datoteku ZYBO_Master.xdc u okviru Ograničenja/constrs1

    1. Kopirajte kôd iz dolje priloženog ZYBO_Master.txt -a i zalijepite ga umjesto postojećeg ZYBO_Master.xdc koda
    2. Obratite pažnju na sljedeće ulazno/izlazne pinove:

      1. L15: PWM signal za lijevi motor (Pmod JA2 na Zybo -u)
      2. L14: PWM signal za desni motor (Pmod JA8 na Zybo -u)
      3. V12: ulaz kapije sa senzora zvuka 1 (Pmod JE1 na Zybo -u)
      4. K16: ulaz kapije sa senzora zvuka 2 (Pmod JE2 na Zybo -u)
  4. U oknu Navigator protoka kliknite "Generiraj bitstream" u odjeljku Program i otklanjanje grešaka

    ako mislite da je to odmah učinjeno, vjerojatno nije. ozbiljno, skuhaj čaj

  5. Kliknite Datoteka-> Izvoz-> Generiraj hardver

    Označite "Uključi Bitstream" i pritisnite OK

  6. Kliknite Datoteka-> Pokreni SDK

Korak 5: Izgradnja Ernieja

Building Ernie
Building Ernie
Building Ernie
Building Ernie
  1. Montirajte servo pogone na servo kućište.
  2. Prateći tehnički list za servo pogone, učinite sljedeće:

    1. spojite uzemljenje servo pogona na uzemljenje na Zybo -ovom JA Pmod -u (pogledajte priloženu sliku iscrtavanja)
    2. spojite pin za napajanje servo -a na AA bateriju

      Otkrili smo da kada su servo upravljači spojeni na Zybo -ov Vdd, ploča crpi previše struje, uzrokujući neprestano resetiranje ploče

    3. priključite pinove ulaznog signala na odgovarajuće izlazne pinove Zybo -a (lijevo: JA2, desno: JA8)
  3. montirajte senzore zvuka na prednju stranu kućišta, okrenutu prema naprijed, držeći ih što bliže moguće
  4. upotrijebite vodič za povezivanje senzora zvuka za integraciju senzora zvuka
    1. ožičite uzemljenje i Vdd pinove svakog senzora zvuka sa uzemljenjem i Vdd pinove na Zybo -ovom JE Pmod -u (pogledajte priloženu sliku pinout -a)
    2. spojite iglu kapije lijevog senzora zvuka na JE1
    3. spojite pin vrata desnog senzora zvuka na JE2

Korak 6: Erniein prvi BSP

Ernijev prvi BSP
Ernijev prvi BSP
Ernijev prvi BSP
Ernijev prvi BSP
  1. Napravite BSP za zaključivanje platforme koju smo upravo stvorili.

    To možete dobiti putem File -> New -> Board Support Package

  2. Pojavit će se čarobnjak koji će vam pomoći u stvaranju BSP -a.

    1. Želimo povezati ovaj BSP s našom platformom koju smo upravo stvorili, pa
    2. Hardverska platforma bi trebala biti u skladu s onom koju smo upravo stvorili (vidi img 1)
    3. Naš CPU će biti _0 CPU.
    4. Pritisnite Finish
    5. Obavezno provjerite da li lwip141 sadrži vaš bsp u prozoru koji se pojavi (pogledajte sliku 2)

Korak 7: FreeRTOS -ov Ernie

  1. Preuzmite najnovije izdanje FreeRTOS -a sa Sourceforge -a.

    Ako je preuzimanje izvršna datoteka, pokrenite je da biste ekstrahirali datoteke FreeRTOS u direktorij vašeg projekta

  2. Držite SDK otvoren i kliknite Datoteka -> Uvoz.
  3. Želimo kliknuti Općenito-> Iz postojećeg radnog prostora, a zatim ćemo htjeti otići do mjesta gdje smo preuzeli FreeRTOS.
  4. Naš demo će se nalaziti u FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702. Odabirom ove mape trebali bismo vidjeti tri projekta (naš kod (OS), to je BSP i HW platforma).

    SAMO Uvezite RTOSDemo u vaš trenutni radni prostor

  5. Na svim projektima „plavih“foldera promijenite referentni BSP

    1. Desnim klikom i odabirom "Promijeni referentni BSP".
    2. Odaberite BSP koji ste upravo stvorili za svoj Zybo
    3. Uređivanje koda u Xilinxovim SDK plavim mapama su stvarni projekti koda.

Korak 8: Uvoz Ernijevog C koda

  1. U direktoriju RTOSDemo/src prepišite postojeći main.c sa datotekom main.c koja je ovde priložena.
  2. Kopirajte datoteku main_sound.c u direktorij RTOSDemo/src.

Korak 9: Otklanjanje grešaka Ernie

  1. Odaberite Run -> Debug Configurations
  2. U lijevom oknu kreirajte novi pokretač programa System Debugger
  3. Na kartici Target Setup,

    odaberite „Resetiraj cijeli sistem“tako da se odaberu i taj i ps7_init

  4. Sada odaberite karticu Aplikacija.

    1. Odaberite "Preuzmi aplikaciju"
    2. Postavite jezgru cortexa9_0 na "zaustavi se pri ulasku u program"
    3. Pritisnite Apply and Debug.
  5. Proverite da nema grešaka u procesu otklanjanja grešaka
  6. Pažljivo nadgledajući robota, pritisnite dugme Nastavi dok se program ne pokrene bez pogađanja tačaka prekida
  7. Robot bi se sada trebao okrenuti i krenuti prema jakim zvukovima. Jej!

Korak 10: Učiniti Ernie autonomnom

  1. Kada vaš projekt bude spreman za rad (možete bez problema pokrenuti program za otklanjanje grešaka), spremni ste za učitavanje u flash memoriju na ploči.
  2. Kreirajte ono što se naziva “first stage boot loader” (FSBL) projekt i sadrži sve upute koje će vašoj ploči biti potrebne za učitavanje vaših projektnih datoteka (bit bit i OS) pri pokretanju.

    1. Odaberite: File-> New-> Application Project i trebao bi se pojaviti sljedeći prozor.
    2. Dajte mu ime kako želite (tj. "FSBL")
    3. Uvjerite se da je hardverska platforma ta s kojom radite
    4. Pritisnite sljedeći (Ne pritisnite Završi)
    5. Odaberite predložak Zynq FSBL
    6. Kliknite završi.
  3. Kada proces kreiranja bude dovršen, znat ćete je li sve funkcioniralo ako vidite sljedeće dvije nove mape u prozoru Project Explorer.
  4. Kreirajte sliku za pokretanje Sada ćete morati stvoriti sliku za pokretanje.

    1. Desnim klikom na fasciklu vašeg projekta (u ovom slučaju moja se zove “RTOSDemo”)
    2. Na padajućem izborniku kliknite "Kreiraj sliku za pokretanje"
    3. Ako je sve ispravno povezano, projekt će znati koje datoteke mu trebaju i sljedeći prozor će izgledati kao što vidite dolje (ključno je da imate 3 particije u odjeljku Boot image, pokretački program, vašu bit datoteku i.elf datoteku vaših projekata).).

      Ako to nije slučaj, moguće je da nešto nije u redu s povezivanjem vašeg projekta. Osigurajte da su fascikle projekta povezane sa odgovarajućim BSP -ovima

    4. Kliknite na dugme „Kreiraj sliku“
  5. Posljednji korak u softveru je sada premjestiti prethodno stvorenu sliku u memoriju ploče

    1. Odaberite s glavne SDK trake s alatima odaberite Xilinx Tools-> Program Flash Memory
    2. Uvjerite se da je odabrana ispravna hardverska platforma i da putanja datoteke slike ispravno upućuje na. BIN datoteku stvorenu u prethodnom koraku.
    3. Odaberite „qspi single“iz vrste Flash
    4. Označite “Verify after flash” kako biste osigurali integritet, ali to nije potrebno
  6. Konfigurirajte svoju ploču Na kraju morate osigurati da je kratkospojnik za način programiranja ploča (JP5) ispravno postavljen za odabir pokretanja s qspi -a (koji sadrži ono što ste upravo bljeskali) kada se pokrene BootROM.
  7. Sada jednostavno uključite uređaj i uključite uređaj i osigurajte da LED lampica “Logic Configuration Done” (LED 10) svijetli zeleno.

Korak 11: Učinite Ernie simpatičnom

  1. Krzno
  2. Puno krzna
  3. Velike oči!
  4. … Kapa

Preporučuje se: