INHOUDSOPGAWE:

Hoe om Ernie te maak: 11 stappe
Hoe om Ernie te maak: 11 stappe

Video: Hoe om Ernie te maak: 11 stappe

Video: Hoe om Ernie te maak: 11 stappe
Video: Omgaan met negatieve mensen. Hoe dan? | Sanny zoekt Geluk 2024, November
Anonim
Hoe om Ernie te maak
Hoe om Ernie te maak

Dit is 'n handleiding oor hoe u Ernie, u outonome klank na robot, met 'n Zybo -bord kan bou. Dit gaan oor hoe om: 'n projek in Vivado te skep, PWM-agtige servomotorbestuurders in die FPGA te skep, koppelvlak met twee klanksensors, 'n tydsverskil van aankoms-IP te skep, freeRTOS te gebruik en die zybo van 'n battery af te laai. Dit was ons laaste projek vir 'n Real Time Operating Systems -klas (CPE 439) by Cal Poly SLO.

Toerustinglys:

  • 1 - ZYBO Zynq 7000 Ontwikkelingsraad
  • 2 - Parallax Continuous Rotation Servo
  • 2 - Klanksensor (SparkFun -klankdetektor)
  • 1 - 5v litium -ion USB -batterypak (vir bord)
  • 4 - AA -batterye (vir servo's)
  • 1 - AA -batterypak (met 4 batterygleuwe)
  • 1 - Mikro -USB -kabel
  • 1 - Broodbord
  • baie - Manlike tot Manlike drade
  • 1 - Servo onderstel

Sagteware vereistes:

  • Xilinx Vivado Design Suite 2016.2
  • Digilent Adept 2.16.1

Stap 1: Stel 'n projek op in Vivado vir Ernie

Stel 'n projek op in Vivado vir Ernie
Stel 'n projek op in Vivado vir Ernie
Stel 'n projek op in Vivado vir Ernie
Stel 'n projek op in Vivado vir Ernie
Stel 'n projek op in Vivado vir Ernie
Stel 'n projek op in Vivado vir Ernie
  1. 'N towenaar verskyn
  2. Klik op Volgende
  3. Noem dan die projek

    1. Moet nooit 'n projeknaam of gidspad met spasies daarin gebruik nie !!!!!
    2. Dit sal 'n RTL -projek wees.
  4. Ons wil nie bronne spesifiseer nie
  5. As u op Volgende klik, kom ons na die deelbladsy. Ons gebruik 'n ZYNQ XC7Z010-1CLG400C.

    1. Die Zybo word nie by Vivado gelys as een van die vooraf gedefinieerde borde nie. Kies: "dele" en soek dan na xc7z010clg400-1.
    2. As u per ongeluk die verkeerde deel kies, kan u maklik die skyfies verander: Tools -> Project Settings -> General en klik op die kolletjies regs van "Project Device"
  6. Klik op Skep blokontwerp.

    Noem dit ontwerp_1 vir eers

  7. U sal 'n groen balk sien wat sê Voeg IP toe, klik daarop.
  8. Soek Zynq.

    1. Dubbelklik op die ZYNQ7 -verwerkingstelsel,
    2. Hierdie blok sal in ons blokontwerp verskyn.
  9. U sal 'n groen balk sien wat sê Run Block Automation, klik daarop.
  10. Laai zybo_zynq_def.xml hieronder af.
  11. Klik in Vivado op “Import XPS Settings” en kies “zybo_zynq_def.xml”

    Dit vul die Vivado-blokkonfigurasie vooraf in met al die ingeboude randapparatuur en pin-toewysings van die Zybo-bord

  12. Dubbelklik op die ZYNQ -blok.

    1. MIO -opset

      1. Aktiveer tydteller 0 (onder Toepassingsverwerkingseenheid - afb 1)
      2. Aktiveer waghond (onder Toepassingsverwerker-eenheid- afb 1)
      3. Aktiveer GPIO-> GPIO MIO (onder Toepassingsverwerkingseenheid - afb 2)
      4. Aktiveer GPIO-> ENET Herstel (onder I/O randapparatuur- afb 2)
    2. Opstelling van die klok

      Skakel FCLK0 uit (onder PL -stofklokke - afb 3)

  13. Klik op Ok.
  14. "Begin nou blokautomatisering".

    Daar sal 'n paar vrae oor seine wees, sê OK

  15. Klik op "Genereer HDL Wrapper".

    Ons sal die gegenereerde omslag wil kopieer om gebruikersbewerkings moontlik te maak

  16. Klik op OK.

Stap 2: Skep Ernie's PWM in Vivado

Skep Ernie se PWM in Vivado
Skep Ernie se PWM in Vivado
Skep Ernie se PWM in Vivado
Skep Ernie se PWM in Vivado

Hierdie stap genereer 'n PWM IP met insette wat via die AXI -biblioteek gestuur word.

  1. Skep AXI GPIO-blok deur met die rechtermuisknop op die agtergrond te klik en op "voeg IP" te klik

    tik "AXI_GPIO" in die soekbalk en kies hierdie pakket

  2. Pas die IP weer aan deur te dubbelklik op die nuwe axi_gpio_0 blok

    1. stel GPIO -breedte onder GPIO in op 2. Hierdie bisse sal die PWM_ON -sein wees om elke PWM -module -instansie aan te dryf.
    2. klik op "aktiveer tweekanaal"
    3. onder GPIO 2, stel GPIO -breedte op 2. Hierdie bisse is die PWM_FW -sein om die rigting van elke PWM -module -instansie in te stel.
  3. Klik met die rechtermuisknop op die axi_gpio_0 -uitvoerpoort met die naam GPIO en kies 'Maak ekstern'

    1. Klik op die nuwe uitvoer met die naam GPIO, en gaan na die oortjie "eienskappe" in die linker werkbalk en verander die naam na PWM_ON
    2. Klik op die nuwe uitvoer met die naam GPIO2, en gaan na die oortjie "eienskappe" in die linker werkbalk en verander die naam na PWM_FW
  4. Kies Run Connection Automation in die groen vaandel bo die blokdiagram.

    As u die poorte handmatig verbind, word AXI -adresse moontlik nie gekonfigureer nie, wat later kommunikasieprobleme kan veroorsaak

  5. Kies in die Flow Navigator -venster projekbestuurder -> Voeg bronne by om 'n nuwe pasgemaakte IP -blok te skep

    1. kies 'voeg by of skep ontwerpbronne' en klik dan verder
    2. klik op "skep lêer", verander lêertipe na "SystemVerilog" en tik "pwm" in die lêernaamveld, en klik dan op OK
    3. klik op Voltooi
    4. ignoreer die venster Definieer module deur op OK te druk (ons sal dit later oorskryf)

      As dit vra of u seker is, klik dan op Ja

  6. Dubbelklik op die bronne-oortjie op die pwm.sv (geleë in "Ontwerpbronne/design_1_wrapper")

    Kopieer/plak die hele SystemVerilog -kode uit die pwm.txt -lêer wat hieronder aangeheg is

Stap 3: Skep Ernie's TDOA in Vivado

Skep Ernie's TDOA in Vivado
Skep Ernie's TDOA in Vivado
Skep Ernie's TDOA in Vivado
Skep Ernie's TDOA in Vivado

Hierdie stap genereer 'n TDOA IP waarvan die uitset gelees kan word via die AXI -biblioteek

  1. Skep AXI GPIO-blok deur met die rechtermuisknop op die agtergrond te klik en op "voeg IP" te klik

    tik "AXI_GPIO" in die soekbalk en kies hierdie pakket

  2. Pas die IP weer aan deur te dubbelklik op die nuwe axi_gpio_1-blok

    1. onder GPIO, merk die boks "Alle insette" en stel die breedte van GPIO op 32. Hierdie bus is die tydsverskil tussen aankoms tussen die twee sensors.
    2. binne die axi_gpio_1 -blok, klik op die + langs die GPIO -poort om gpio_io_i [31: 0] te openbaar.
  3. Klik met die rechtermuisknop op die axi_gpio_1 -uitvoerpoort met die naam gpio_io_i [31: 0] en kies 'Maak ekstern'

    Klik op die nuwe invoer met die naam gpio_io_i [31: 0], en gaan na die oortjie "eienskappe" in die linker werkbalk, en verander die naam na TDOA_val

  4. Kies Run Connection Automation in die groen vaandel bo die blokdiagram.

    As u die poorte met die hand verbind, word AXI -adresse moontlik nie gekonfigureer nie, wat later kommunikasieprobleme kan veroorsaak

  5. Kies in die Flow Navigator -venster projekbestuurder -> Voeg bronne by om 'n nuwe pasgemaakte IP -blok te skep

    1. kies 'voeg by of skep ontwerpbronne' en klik daarop
    2. klik op "skep lêer", verander lêertipe na "SystemVerilog" en tik "tdoa" in die lêernaamveld, en klik dan op OK
    3. klik op Voltooi
    4. ignoreer die venster Definieer module deur op OK te druk (ons sal dit later oorskryf)

      As dit vra of u seker is, klik dan op Ja

  6. Dubbelklik op die tabblad bronne op die tdoa.sv (geleë in "Ontwerpbronne/design_1_wrapper")

    Kopieer/plak die hele SystemVerilog -kode uit die tdoa.txt -lêer wat hieronder aangeheg is

Stap 4: Verpak en voer Ernie uit

Toedraai en uitvoer Ernie
Toedraai en uitvoer Ernie
  1. Verifieer dat die blokdiagram lyk soos die aangehegte skermkiekie
  2. Klik met die rechtermuisknop op design_1.bd in die bronne-oortjie en kies "Skep HDL Wrapper …"

    1. Kies "Kopieer gegenereerde uitvoer om gebruikersbewerkings toe te laat", en druk dan "OK"
    2. Kopieer die kode van die ontwerp_1_wrapper.txt wat hieronder aangeheg is en plak dit in die plek van die gegenereerde design_1_wrapper.v -kode
    3. stoor design_1_wrapper.v
  3. Dubbelklik in die bronne-oortjie op die ZYBO_Master.xdc-lêer onder Beperkings/beperkings1

    1. Kopieer die kode van die onderstaande ZYBO_Master.txt en plak dit in die plek van die bestaande ZYBO_Master.xdc -kode
    2. Let op die volgende invoer/uitset penne:

      1. L15: PWM -sein vir die linkermotor (Pmod JA2 op die Zybo)
      2. L14: PWM -sein vir die regte motor (Pmod JA8 op die Zybo)
      3. V12: poortinvoer van klanksensor 1 (Pmod JE1 op die Zybo)
      4. K16: poortinvoer van klanksensor 2 (Pmod JE2 op die Zybo)
  4. Klik in die Flow Navigator -venster op "Genereer bitstroom" onder Program en ontfout

    as u dink dat dit dadelik gedoen is, is dit waarskynlik nie so nie. ernstig, maak tee

  5. Klik op File-> Export-> Generate Hardware

    Merk "Sluit Bitstream in" en druk OK

  6. Klik op File-> Launch SDK

Stap 5: Bou Ernie

Gebou Ernie
Gebou Ernie
Gebou Ernie
Gebou Ernie
  1. Monteer die servo's aan die servo -onderstel.
  2. Volg die datablad vir die servo's:

    1. verbind die grond van die servo's met grondpenne op die Zybo se JA Pmod (sien aangehegte pinout -prent)
    2. koppel die kragpen van die servo's aan die AA -battery

      Ons het gevind dat wanneer die servo's aan die Zybo's Vdd gekoppel is, die bord te veel stroom trek, wat veroorsaak dat die bord voortdurend herstel word

    3. verbind die ingangseinpenne met die gepaste uitsetpenne van die Zybo (links: JA2, regs: JA8)
  3. monteer die klanksensors aan die voorkant van die onderstel, vorentoe, en hou hulle so na as moontlik aan mekaar
  4. gebruik die aansluitingsgids van die klanksensor om die klanksensors te integreer

    1. Draai die grond- en Vdd -penne van elke klanksensor na die grond en Vdd -penne op die Zybo se JE Pmod (sien aangehegte pinout -prent)
    2. dra die poortpen van die linker klanksensor na JE1
    3. dra die poortpen van die regte klanksensor na JE2

Stap 6: Ernie se eerste BSP

Ernie se eerste BSP
Ernie se eerste BSP
Ernie se eerste BSP
Ernie se eerste BSP
  1. Skep 'n BSP om die platform wat ons pas geskep het, af te handel.

    U kan dit kry deur File -> New -> Board Support Package

  2. 'N Tovenaar verskyn om u te help om die BSP te skep.

    1. Ons wil hierdie BSP verbind met ons platform wat ons so pas geskep het
    2. Die hardeware -platform moet ooreenstem met die een wat ons pas geskep het (sien afb 1)
    3. Ons SVE sal die _0 SVE wees.
    4. Klik op Voltooi
    5. Maak seker dat u lwip141 afmerk vir opname met u bsp in die venster wat verskyn (sien afb 2)

Stap 7: FreeRTOS'e Ernie

  1. Laai die nuutste FreeRTOS -weergawe van Sourceforge af.

    As die aflaai uitvoerbaar is, voer dit uit om die FreeRTOS -lêers in u projekgids te onttrek

  2. Hou die SDK oop en klik op File -> Import.
  3. Ons wil op Algemeen-> Van 'n bestaande werkruimte klik, en dan sal ons wil navigeer na waar ons FreeRTOS afgelaai het.
  4. Ons demo sal in FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702 geleë wees. By die keuse van hierdie gids, moet ons sien dat drie projekte opduik (ons kode (bedryfstelsel), dit is BSP en die HW -platform).

    Voer SLEGS RTOSDemo in in u huidige werkruimte

  5. Op alle "blou" vouerprojekte verander die BSP waarna verwys word

    1. Klik met die rechtermuisknop en kies 'Verander BSP waarna verwys word.'
    2. Kies die BSP wat u pas vir u Zybo geskep het
    3. Kodebewerking in Xilinx se SDK Blue -vouers is die werklike kodeprojekte.

Stap 8: Die invoer van Ernie's C -kode

  1. Oorskryf in die RTOSDemo/src -gids die bestaande main.c met die main.c -lêer hier aangeheg.
  2. Kopieer die main_sound.c -lêer in die RTOSDemo/src -gids.

Stap 9: Ontfout Ernie

  1. Kies Uitvoer -> Ontfoutkonfigurasies
  2. Skep 'n nuwe stelselopsporingstelsel in die linkerpaneel
  3. Op die oortjie Doelopstelling,

    kies "Herstel hele stelsel" sodat beide die en ps7_init gekies word

  4. Kies nou die blad Toepassing.

    1. Kies 'aflaai -toepassing'
    2. Stel die cortexa9_0 kern op "stop by programinskrywing"
    3. Klik op Apply en ontfout.
  5. Verifieer dat daar geen foute in die ontfoutingsproses is nie
  6. Hou die robot fyn dop en druk op die hervat -knoppie totdat die program loop sonder om enige breekpunte te bereik
  7. Die robot moet nou draai en na harde geluide beweeg. Yay!

Stap 10: Maak Ernie outonoom

  1. Sodra u projek gereed is (u kan sonder probleme deur die ontfouter loop), is u gereed om dit na die flash -geheue op u bord te laai.
  2. Skep 'n sogenaamde 'first stage boot loader' (FSBL) -projek en bevat al die instruksies wat u raad nodig het om u projeklêers (die bitstroom en bedryfstelsel) tydens die opstart te laai.

    1. Kies: File-> New-> Application Project en die volgende venster moet verskyn.
    2. Noem dit wat u wil hê (dws "FSBL")
    3. Maak seker dat die hardeware -platform die een is waarmee u werk
    4. Druk volgende (Moenie op Voltooi druk nie)
    5. Kies die Zynq FSBL -sjabloon
    6. Klik klaar.
  3. Sodra die skeppingsproses voltooi is, sal u weet of alles gewerk het as u die volgende twee nuwe vouers in die Project Explorer -venster sien.
  4. Skep 'n opstartprent Nou moet u die opstartafbeelding skep.

    1. Klik met die rechtermuisknop op u projekmap (in hierdie geval word myne “RTOSDemo” genoem)
    2. Klik op 'Create Boot image' in die vervolg keuselys
    3. As alles korrek gekoppel is, sal die projek weet watter lêers dit nodig het, en die volgende venster sal soos u hieronder sien (die belangrikste is dat u 3 partisies onder Boot image -afdeling, die bootloader, u bit -lêer en u projekte.elf -lêer het)).

      As dit nie die geval is nie, is daar moontlik iets fout met die koppeling van u projek. Verseker dat die projekvouers gekoppel is aan hul onderskeie BSP's

    4. Klik op die knoppie "Skep prentjie"
  5. Die laaste stap om in sagteware uit te voer, is om u prent wat u voorheen gemaak het, nou in die geheue van die bord te flits

    1. Kies Xilinx Tools-> Program Flash Memory uit die hoofwerktuigbalk van die SDK
    2. Maak seker dat die korrekte hardeware -platform gekies is en dat die prentlêerpad korrek wys na die. BIN -lêer wat in die vorige stap geskep is.
    3. Kies 'qspi single' uit die Flash -tipe
    4. Merk die 'Verifieer na flits' om die integriteit te verseker, maar dit is nie nodig nie
  6. Stel u bord op U moet uiteindelik verseker dat die bordprogrammeringsmodus -jumper (JP5) korrek ingestel is om te kies om te begin vanaf die qspi (wat bevat wat u pas geflits het) wanneer die BootROM uitgevoer word.
  7. Skakel nou net die toestel aan en maak seker dat die "Logic Configuration Done LED" (LED 10) groen brand.

Stap 11: Maak Ernie oulik

  1. Bont
  2. Baie bont
  3. Groot oë!
  4. … keil

Aanbeveel: