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, Studeni
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 slične PWM-u 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 sustava u stvarnom vremenu (CPE 439) na Cal Poly SLO.

Lista opreme:

  • 1 - Razvojna ploča ZYBO Zynq 7000
  • 2 - Servo s kontinuiranom rotacijom paralaksa
  • 2 - Zvučni senzor (SparkFun detektor zvuka)
  • 1 - 5v litij -ionska USB baterija (za ploču)
  • 4 - AA baterije (za servo pogone)
  • 1 - AA baterija (s 4 utora za baterije)
  • 1 - Micro USB kabel
  • 1 - Oglasna ploča
  • mnogo - Žice za muškarce
  • 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 -ov projekt.
  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.

    Zasad mu dajte ime design_1

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

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

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

  12. Dvaput kliknite na blok ZYNQ.

    1. MIO konfiguracija
      1. Omogući mjerač vremena 0 (u odjeljku Procesorska jedinica aplikacije - img 1)
      2. Omogući Watchdog (u odjeljku Procesorska jedinica aplikacije- img 1)
      3. Omogući GPIO-> GPIO MIO (pod aplikacijskom procesorskom jedinicom - img 2)
      4. Omogući GPIO-> ENET Reset (ispod I/O periferije- img 2)
    2. Konfiguracija sata

      Onemogući 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 "Generiraj HDL omot".

    Generirani omot htjet ćemo kopirati kako bismo omogućili korisnička uređivanja

  16. Pritisnite U redu.

Korak 2: Stvaranje Ernijevog PWM -a u Vivadu

Stvaranje Ernijevog PWM -a u Vivadu
Stvaranje Ernijevog PWM -a u Vivadu
Stvaranje Ernijevog PWM -a u Vivadu
Stvaranje Ernijevog PWM -a u Vivadu

Ovaj korak će generirati PWM IP s ulazima poslanim putem AXI knjižnice.

  1. Izradite AXI GPIO blok tako da desnom tipkom miša kliknete pozadinu i kliknete "dodaj IP"

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

  2. Ponovno prilagodite IP dvoklikom na novi blok axi_gpio_0

    1. pod GPIO, postavite GPIO width na 2. Ovi bitovi će biti signal PWM_ON za pogon 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. Desnom tipkom miša kliknite na izlazni port axi_gpio_0 s oznakom GPIO i odaberite "Učini vanjskim"

    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 voditelj projekta -> Dodaj izvore za stvaranje novog prilagođenog IP bloka
    1. odaberite "dodaj ili kreiraj izvore dizajna" i pritisnite sljedeći
    2. kliknite "kreiraj datoteku", promijenite vrstu datoteke u "SystemVerilog", a zatim u polje za naziv datoteke upišite "pwm", a zatim kliknite u redu
    3. kliknite Završi
    4. zanemarite prozor Define Module pritiskom na OK (kasnije ćemo ih prebrisati)

      ako vas pita jeste li sigurni, kliknite Da

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

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

Korak 3: Stvaranje Ernijevog TDOA -a u Vivadu

Stvaranje Ernijevog TDOA -a u Vivadu
Stvaranje Ernijevog TDOA -a u Vivadu
Stvaranje Ernijevog TDOA -a u Vivadu
Stvaranje Ernijevog TDOA -a u Vivadu

Ovaj korak generirat će TDOA IP čiji se izlaz može čitati putem AXI knjižnice

  1. Izradite AXI GPIO blok tako da desnom tipkom miša kliknete pozadinu i kliknete "dodaj IP"

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

  2. Ponovno prilagodite IP dvostrukim klikom na novi blok axi_gpio_1

    1. pod GPIO, označite okvir "Svi ulazi" i postavite GPIO širinu na 32. Ova sabirnica bit će vremenska razlika dolaska između dva senzora.
    2. unutar bloka axi_gpio_1 kliknite + pokraj GPIO priključka da biste otkrili gpio_io_i [31: 0].
  3. Desnom tipkom miša kliknite na izlazni port axi_gpio_1 s oznakom gpio_io_i [31: 0] i odaberite "Učini vanjskim"

    Kliknite na novi unos s oznakom gpio_io_i [31: 0] i idite na karticu "svojstva" na lijevoj alatnoj traci te 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 voditelj projekta -> Dodaj izvore za stvaranje novog prilagođenog IP bloka
    1. odaberite "dodaj ili kreiraj izvore dizajna" i pritisnite sljedeći
    2. kliknite "izradi datoteku", promijenite vrstu datoteke u "SystemVerilog", a zatim u polje za naziv datoteke upišite "tdoa", a zatim kliknite u redu
    3. kliknite Završi
    4. ignorirajte prozor Define Module pritiskom na OK (kasnije ćemo ih prebrisati)

      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 Ernieja

Omotavanje i izvoz Ernie
Omotavanje i izvoz Ernie
  1. Provjerite izgleda li blok dijagram kao priložena snimka 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 koda design_1_wrapper.v
    3. spremi design_1_wrapper.v
  3. Na kartici izvori dvaput kliknite 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. Imajte na umu 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 vrata sa senzora zvuka 1 (Pmod JE1 na Zybo -u)
      4. K16: ulaz vrata sa senzora zvuka 2 (Pmod JE2 na Zybo -u)
  4. U oknu Navigator protoka kliknite "Generiraj bitstream" u odjeljku Program i otklanjanje pogrešaka

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

  5. Pritisnite Datoteka-> Izvoz-> Generiraj hardver

    Označite "Uključi Bitstream" i pritisnite U redu

  6. Kliknite Datoteka-> Pokreni SDK

Korak 5: Izgradnja Ernieja

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

    1. spojite uzemljenje servomotora na uzemljene igle na Zybo -ovom JA Pmodu (pogledajte priloženu sliku iscrtavanja)
    2. priključite pin za napajanje servo upravljač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. senzore za zvuk montirajte na prednji dio kućišta, prema naprijed, držeći ih što bliže zajedno
  4. upotrijebite vodič za povezivanje senzora zvuka za integriranje senzora zvuka
    1. spojite uzemljenje i Vdd pinove svakog senzora zvuka na tlo i Vdd pinove na Zybo -ovom JE Pmodu (pogledajte priloženu sliku iscrtavanja)
    2. priključite pin vrata lijevog osjetnika zvuka na JE1
    3. spojite pin vrata desnog osjetnika zvuka na JE2

Korak 6: Erniein prvi BSP

Ernijev prvi BSP
Ernijev prvi BSP
Ernijev prvi BSP
Ernijev prvi BSP
  1. Izradite 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 stvoriti BSP.

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

Korak 7: FreeRTOS -ov Ernie

  1. Preuzmite najnovije izdanje FreeRTOS -a sa Sourceforgea.

    Ako je preuzimanje izvršno, pokrenite ga da biste izdvojili 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. Nakon odabira ove mape, trebali bismo vidjeti tri projekta koja se pojavljuju (naš kôd (OS), to je BSP i HW platforma).

    SAMO Uvezite RTOSDemo u svoj trenutni radni prostor

  5. Na svim projektima "plavih" mapa promijenite referentni BSP

    1. Desnom tipkom miša kliknite i odaberite "Promijeni referentni BSP".
    2. Odaberite BSP koji ste upravo stvorili za svoj Zybo
    3. Uređivanje koda u Xilinxovim SDK plavim mapama stvarni su projekti koda.

Korak 8: Uvoz Ernijevog C koda

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

Korak 9: Otklanjanje pogrešaka Ernie

  1. Odaberite Run -> Debug Configurations
  2. U lijevom oknu izradite novi pokretač programa Debugger
  3. Na kartici Postavljanje cilja,

    odaberite "Poništi cijeli sustav" tako da se odaberu i to i ps7_init

  4. Sada odaberite karticu Aplikacija.

    1. Odaberite "preuzimanje aplikacije"
    2. Postavite jezgru cortexa9_0 na "zaustavi se pri ulasku u program"
    3. Pritisnite Apply and Debug.
  5. Provjerite nema li pogrešaka u procesu otklanjanja pogrešaka
  6. Pažljivo promatrajući robota, pritisnite gumb Nastavi dok se program ne pokrene, a da ne udarite u točke prekida
  7. Robot bi se sada trebao okrenuti i krenuti prema glasnim zvukovima. Da!

Korak 10: Učiniti Ernie autonomnom

  1. Nakon što je vaš projekt spreman za rad (možete bez problema pokrenuti program za otklanjanje pogrešaka), spremni ste za učitavanje u flash memoriju na ploči.
  2. Izradite projekt koji se naziva “first stage boot loader” (FSBL) projekt i sadrži sve upute koje će vašoj ploči biti potrebne za učitavanje datoteka vašeg projekta (bit bit i OS) pri pokretanju.

    1. Odaberite: Datoteka-> Novo-> Aplikacijski projekt i trebao bi se pojaviti sljedeći prozor.
    2. Dajte mu ime kako želite (npr. "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. Nakon dovršetka procesa stvaranja znat ćete je li sve funkcioniralo ako vidite sljedeće dvije nove mape u prozoru Project Explorer.
  4. Stvorite sliku za pokretanje Sada ćete morati stvoriti sliku za pokretanje.

    1. Desnom tipkom miša kliknite mapu vašeg projekta (u ovom slučaju moja se zove "RTOSDemo")
    2. Na padajućem izborniku kliknite "Izradi sliku za pokretanje"
    3. Ako je sve ispravno povezano, projekt će znati koje su mu datoteke potrebne i sljedeći će prozor 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 projektne mape povezane s odgovarajućim BSP -ovima

    4. Pritisnite gumb "Kreiraj sliku"
  5. Posljednji korak u softveru je da sada memorirate prethodno stvorenu sliku u memoriju ploče

    1. Odaberite s glavne alatne trake SDK-a odaberite Xilinx Tools-> Program Flash Memory
    2. Uvjerite se da je odabrana ispravna hardverska platforma i da put slikovne datoteke 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 načina programiranja ploča (JP5) ispravno postavljen za odabir pokretanja s qspi -a (koji sadrži ono što ste upravo bljeskali) dok se pokreće BootROM.
  7. Sada jednostavno uključite uređaj i uključite uređaj i osigurajte da LED "Logic Configuration Done" (LED 10) svijetli zeleno.

Korak 11: Učinite Ernie simpatičnim

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

Preporučeni: