Indholdsfortegnelse:

Sådan laver du Ernie: 11 trin
Sådan laver du Ernie: 11 trin

Video: Sådan laver du Ernie: 11 trin

Video: Sådan laver du Ernie: 11 trin
Video: Дешевое отопление из алюминия 2024, November
Anonim
Sådan laver du Ernie
Sådan laver du Ernie

Dette er en vejledning i, hvordan du opbygger Ernie, din autonome lyd efter robot, ved hjælp af et Zybo Board. Det vil dække, hvordan du: opretter et projekt i Vivado, opretter PWM-lignende servomotordrivere i FPGA, grænseflade med to lydsensorer, opretter en tidsforskel ved ankomst-IP, bruger freeRTOS og kører zyboen fra en batteripakke. Dette var vores sidste projekt for en Real Time Operating Systems -klasse (CPE 439) på Cal Poly SLO.

Udstyrsliste:

  • 1 - ZYBO Zynq 7000 Development Board
  • 2 - Parallax kontinuerlig rotationsservo
  • 2 - Lydsensor (SparkFun lyddetektor)
  • 1 - 5v litiumion USB -batteripakke (til bord)
  • 4 - AA -batterier (til servoer)
  • 1 - AA batteripakke (m/ 4 batteriåbninger)
  • 1 - Micro USB -kabel
  • 1 - Brødbræt
  • mange - mandlige til mandlige ledninger
  • 1 - Servokabinet

Softwarekrav:

  • Xilinx Vivado Design Suite 2016.2
  • Digilent Adept 2.16.1

Trin 1: Opsætning af et projekt i Vivado for Ernie

Opsætning af et projekt i Vivado for Ernie
Opsætning af et projekt i Vivado for Ernie
Opsætning af et projekt i Vivado for Ernie
Opsætning af et projekt i Vivado for Ernie
Opsætning af et projekt i Vivado for Ernie
Opsætning af et projekt i Vivado for Ernie
  1. En guide vil dukke op
  2. Klik på Næste
  3. Næste navn på projektet

    1. Brug aldrig et projektnavn eller en biblioteksti, der har mellemrum i det !!!!!
    2. Dette bliver et RTL -projekt.
  4. Vi ønsker ikke at angive kilder
  5. Ved at klikke på Næste kommer vi til siden Del. Vi bruger en ZYNQ XC7Z010-1CLG400C.

    1. Vivado har ikke Zybo opført som et af sine foruddefinerede tavler. Vælg: “dele”, og søg derefter efter xc7z010clg400-1.
    2. Hvis du ved en fejl vælger den forkerte del, kan du nemt skifte chips: Værktøjer -> Projektindstillinger -> Generelt og klik på prikkerne til højre for "Project Device"
  6. Klik på Opret blokdesign.

    Navngiv det design_1 for nu

  7. Du vil se en grøn bjælke, der siger Tilføj IP, klik på den.
  8. Søg efter Zynq.

    1. Dobbeltklik på ZYNQ7 Processing System,
    2. Denne blok vises i vores blokdesign.
  9. Du vil se en grøn bjælke, der siger Run Block Automation, klik på den.
  10. Download zybo_zynq_def.xml herunder.
  11. I Vivado skal du klikke på "Importer XPS -indstillinger" og vælge "zybo_zynq_def.xml"

    Dette udfylder på forhånd Vivado-blokkonfigurationen med alle Zybo-plades indbyggede eksterne enheder og pin-tildelinger

  12. Dobbeltklik på ZYNQ -blokken.

    1. MIO -konfiguration

      1. Aktiver timer 0 (under applikationsprocessorenhed - billede 1)
      2. Aktiver vagthund (under applikationsprocessorenhed- billede 1)
      3. Aktiver GPIO-> GPIO MIO (under Application Processor Unit - billede 2)
      4. Aktiver GPIO-> ENET Reset (under I/O Peripherals- img 2)
    2. Urkonfiguration

      Deaktiver FCLK0 (under PL Fabric Clocks - billede 3)

  13. Klik på Ok.
  14. "Kør Block Automation" nu.

    Der vil være nogle spørgsmål om signaler, sig OK

  15. Klik på "Generer HDL Wrapper".

    Vi vil gerne kopiere den genererede indpakning for at tillade brugerredigeringer

  16. Klik på OK.

Trin 2: Oprettelse af Ernies PWM i Vivado

Oprettelse af Ernies PWM i Vivado
Oprettelse af Ernies PWM i Vivado
Oprettelse af Ernies PWM i Vivado
Oprettelse af Ernies PWM i Vivado

Dette trin genererer en PWM IP med input sendt via AXI -biblioteket.

  1. Opret AXI GPIO-blok ved at højreklikke på baggrunden og klikke på "tilføj IP"

    skriv "AXI_GPIO" i søgelinjen, og vælg denne pakke

  2. Tilpas IP igen ved at dobbeltklikke på den nye axi_gpio_0 blok

    1. under GPIO, skal du indstille GPIO -bredden til 2. Disse bits vil være PWM_ON -signalet til at drive hver PWM -modulinstans.
    2. klik på "aktiver dobbelt kanal"
    3. under GPIO 2, skal du indstille GPIO -bredden til 2. Disse bits vil være PWM_FW -signalet for at indstille retningen for hver PWM -modulinstans.
  3. Højreklik på axi_gpio_0 outputporten mærket GPIO, og vælg "Lav ekstern"

    1. Klik på det nye output mærket GPIO, og naviger til fanen "egenskaber" i venstre værktøjslinje, og skift navnet til PWM_ON
    2. Klik på det nye output mærket GPIO2, og naviger til fanen "egenskaber" i venstre værktøjslinje, og skift navnet til PWM_FW
  4. Vælg Kør forbindelsesautomatisering i det grønne banner over blokdiagrammet.

    Hvis du tilslutter portene manuelt, konfigureres AXI -adresser muligvis ikke, hvilket kan føre til kommunikationsproblemer senere

  5. I projektor i Flow Navigator skal du vælge projektleder -> Tilføj kilder for at oprette en ny brugerdefineret IP -blok

    1. vælg "tilføj eller opret designkilder", og tryk derefter på
    2. klik på "opret fil", skift filtype til "SystemVerilog", og skriv "pwm" i filnavnet, og klik derefter på OK
    3. klik på Afslut
    4. ignorer vinduet Definer modul ved at trykke på OK (vi overskriver disse senere)

      Hvis den spørger, om du er sikker, skal du klikke på Ja

  6. I fanen Kilder skal du dobbeltklikke på pwm.sv (placeret i "Designkilder/design_1_wrapper")

    Kopier/indsæt hele SystemVerilog -koden fra filen pwm.txt, der er vedhæftet nedenfor

Trin 3: Oprettelse af Ernies TDOA i Vivado

Oprettelse af Ernies TDOA i Vivado
Oprettelse af Ernies TDOA i Vivado
Oprettelse af Ernies TDOA i Vivado
Oprettelse af Ernies TDOA i Vivado

Dette trin genererer en TDOA IP, hvis output kan læses via AXI -biblioteket

  1. Opret AXI GPIO-blok ved at højreklikke på baggrunden og klikke på "tilføj IP"

    skriv "AXI_GPIO" i søgelinjen, og vælg denne pakke

  2. Tilpas IP igen ved at dobbeltklikke på den nye axi_gpio_1-blok

    1. under GPIO skal du markere afkrydsningsfeltet "Alle indgange" og indstille GPIO -bredden til 32. Denne bus er tidsforskellen ved ankomst mellem de to sensorer.
    2. inde i blokken axi_gpio_1 skal du klikke på + ud for GPIO -porten for at vise gpio_io_i [31: 0].
  3. Højreklik på axi_gpio_1 outputporten mærket gpio_io_i [31: 0], og vælg "Make External"

    Klik på det nye input mærket gpio_io_i [31: 0], og naviger til fanen "egenskaber" i venstre værktøjslinje, og skift navnet til TDOA_val

  4. Vælg Kør forbindelsesautomatisering i det grønne banner over blokdiagrammet.

    Hvis du tilslutter portene manuelt, konfigureres AXI -adresser muligvis ikke, hvilket kan føre til kommunikationsproblemer senere

  5. I projektor i Flow Navigator skal du vælge projektleder -> Tilføj kilder for at oprette en ny brugerdefineret IP -blok

    1. vælg "tilføj eller opret designkilder", og tryk derefter på
    2. klik på "opret fil", skift filtype til "SystemVerilog", og skriv "tdoa" i filnavnfeltet, klik derefter på OK
    3. klik på Afslut
    4. ignorer vinduet Definer modul ved at trykke på OK (vi overskriver disse senere)

      Hvis den spørger, om du er sikker, skal du klikke på Ja

  6. I fanen Kilder skal du dobbeltklikke på tdoa.sv (placeret i "Designkilder/design_1_wrapper")

    Kopier/indsæt hele SystemVerilog -koden fra tdoa.txt -filen vedhæftet nedenfor

Trin 4: Indpakning og eksport af Ernie

Indpakning og eksport af Ernie
Indpakning og eksport af Ernie
  1. Kontroller, at blokdiagrammet ligner det vedhæftede skærmbillede
  2. På fanen kilder skal du højreklikke på design_1.bd og vælge "Opret HDL-indpakning …"

    1. Vælg "Kopier genereret output for at tillade brugerredigeringer", og tryk derefter på "OK"
    2. Kopiér koden fra design_1_wrapper.txt vedhæftet nedenfor, og indsæt den i stedet for den genererede design_1_wrapper.v -kode
    3. gem design_1_wrapper.v
  3. På fanen kilder skal du dobbeltklikke på filen ZYBO_Master.xdc under Begrænsninger/constrs1

    1. Kopiér koden fra ZYBO_Master.txt vedhæftet nedenfor, og indsæt den i stedet for den eksisterende ZYBO_Master.xdc -kode
    2. Bemærk følgende input/output pins:

      1. L15: PWM -signal til venstre motor (Pmod JA2 på Zybo)
      2. L14: PWM -signal til den højre motor (Pmod JA8 på Zybo)
      3. V12: gate -input fra lydsensor 1 (Pmod JE1 på Zybo)
      4. K16: gate -input fra lydsensor 2 (Pmod JE2 på Zybo)
  4. I ruden Flow Navigator skal du klikke på "Generer Bitstream" under Program og fejlfinding

    hvis du tror, det er gjort med det samme, er det sandsynligvis ikke. seriøst, lav noget te

  5. Klik på Fil-> Eksport-> Generer hardware

    Marker "Inkluder Bitstream", og tryk på OK

  6. Klik på Fil-> Start SDK

Trin 5: Bygning af Ernie

Bygger Ernie
Bygger Ernie
Bygger Ernie
Bygger Ernie
  1. Monter servoerne på servokabinettet.
  2. Følg databladet for servoerne:

    1. slut jorden til servoer til jordstifter på Zybo's JA Pmod (se vedhæftede pinout -billede)
    2. tilslut servostyrets power -pin til AA -batteriet

      Vi fandt ud af, at når servoerne er forbundet med Zybo's Vdd, trækker brættet for meget strøm, hvilket får kortet til at nulstilles løbende

    3. tilslut indgangssignalstifterne til Zybo's passende udgangsstifter (venstre: JA2, højre: JA8)
  3. monter lydsensorerne på forsiden af chassiset, fremad, så de holdes så tæt på hinanden som muligt
  4. brug lydsensorens tilslutningsguide til at integrere lydsensorerne

    1. led jorden og Vdd -benene på hver lydsensor til jorden og Vdd -benene på Zybo's JE Pmod (se vedhæftede pinout -billede)
    2. tilslut den venstre lydsensors Gate -pin til JE1
    3. tilslut den rigtige lydsensors Gate -pin til JE2

Trin 6: Ernies første BSP

Ernies første BSP
Ernies første BSP
Ernies første BSP
Ernies første BSP
  1. Opret en BSP for at afslutte den platform, vi lige har oprettet.

    Du kan få dette via File -> New -> Board Support Package

  2. En guide vil dukke op for at hjælpe dig med at oprette BSP.

    1. Vi ønsker at binde denne BSP med vores platform, som vi lige har oprettet, så
    2. Hardwareplatform skal passe til den, vi lige har oprettet (se billede 1)
    3. Vores CPU vil være _0 CPU.
    4. Klik på Udfør
    5. Sørg for at markere lwip141 for inkludering med din bsp i det vindue, der dukker op (se billede 2)

Trin 7: FreeRTOS'ing Ernie

  1. Download den seneste FreeRTOS -udgivelse fra Sourceforge.

    Hvis overførslen er en eksekverbar fil, skal du køre den for at udtrække FreeRTOS -filerne til din projektmappe

  2. Hold den SDK åben, og klik på Fil -> Import.
  3. Vi vil klikke på Generelt-> Fra et eksisterende arbejdsområde, og derefter vil vi navigere til det sted, hvor vi downloadede FreeRTOS.
  4. Vores demo vil være placeret i FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702. Når vi vælger denne mappe, skal vi se tre projekter dukke op (vores kode (OS), det er BSP og HW -platformen).

    KUN importere RTOSDemo til dit nuværende arbejdsområde

  5. På alle "blå" mapprojekter ændrer den refererede BSP

    1. Højreklik og vælg "Skift refereret BSP."
    2. Vælg den BSP, du lige har oprettet til din Zybo
    3. Koderedigering i Xilinx’s SDK Blue -mapper er de faktiske kodeprojekter.

Trin 8: Import af Ernies C -kode

  1. I RTOSDemo/src -biblioteket skal du overskrive den eksisterende main.c med main.c -filen vedhæftet her.
  2. Kopier main_sound.c -fiilen til RTOSDemo/src -biblioteket.

Trin 9: Debugging Ernie

  1. Vælg Kør -> Debug -konfigurationer
  2. Opret en ny System Debugger -kørsel i venstre rude
  3. I fanen Målopsætning,

    vælg "Nulstil hele systemet", så både det og ps7_init vælges

  4. Vælg nu fanen Applikation.

    1. Vælg "download -applikation"
    2. Indstil cortexa9_0 -kernen til "stop ved programindgang"
    3. Klik på Apply and Debug.
  5. Kontroller, at der ikke er fejl i fejlfindingsprocessen
  6. Hold godt øje med robotten, tryk på knappen Genoptag, indtil programmet kører uden at ramme nogen brudpunkter
  7. Robotten skal nu dreje og bevæge sig mod høje lyde. Yay!

Trin 10: Gør Ernie autonom

  1. Når dit projekt er klar til at gå (du kan køre uden problemer gennem fejlfindingsprogrammet) er du klar til at indlæse det i flash -hukommelsen på dit bord.
  2. Opret det, der kaldes "first stage boot loader" (FSBL) -projektet og indeholder al den instruktion, som dit board skal bruge for at indlæse dine projektfiler (bitstrømmen og OS) ved opstart.

    1. Vælg: File-> New-> Application Project og det følgende vindue skal vises.
    2. Navngiv det, du ønsker (dvs. "FSBL")
    3. Sørg for, at hardware -platformen er den, du arbejder med
    4. Tryk på næste (Tryk ikke på Afslut)
    5. Vælg Zynq FSBL -skabelonen
    6. Klik på afslut.
  3. Når oprettelsesprocessen er fuldført, ved du, om alt fungerede, hvis du ser de følgende to nye mapper i vinduet Project Explorer.
  4. Opret et boot -billede Nu skal du oprette Boot -billedet.

    1. Højreklik på din projektmappe (i dette tilfælde hedder min "RTOSDemo")
    2. Klik på "Opret boot -billede" i rullemenuen
    3. Hvis alt er forbundet korrekt, ved projektet, hvilke filer det har brug for, og det følgende vindue ser ud som du ser nedenfor (nøglen er, at du har 3 partitioner under Boot image -sektionen, bootloaderen, din bitfil og dine projekter.elf -fil).

      Hvis dette ikke er tilfældet, er der muligvis noget galt med, at dit projekt linker. Sørg for, at projektmapperne er knyttet til deres respektive BSP'er

    4. Klik på knappen "Opret billede"
  5. Det sidste trin, der skal udføres i software, er nu at blinke dit tidligere oprettede billede til kortets hukommelse

    1. Vælg fra SDK's hovedværktøjslinje, vælg Xilinx Tools-> Program Flash Memory
    2. Sørg for, at den korrekte hardware -platform er valgt, og at billedfilens vej peger korrekt på. BIN -filen, der blev oprettet i det foregående trin.
    3. Vælg "qspi single" fra Flash -typen
    4. Marker "Verificer efter flash" for at sikre integriteten, men det er ikke nødvendigt
  6. Konfigurer dit kort Endelig skal du sikre dig, at kortene til programmeringsfunktionen (JP5) er korrekt indstillet til at vælge at starte fra qspi (som indeholder det, du lige har blinket), når BootROM køres.
  7. Nu skal du blot tænde for enheden og sikre, at "Logic Configuration Done LED" (LED 10) lyser grønt.

Trin 11: Gør Ernie Cute

  1. Pels
  2. Masser af pels
  3. Store øjne!
  4. … høj hat

Anbefalede: