Talaan ng mga Nilalaman:

Paano Gumawa ng Ernie: 11 Mga Hakbang
Paano Gumawa ng Ernie: 11 Mga Hakbang

Video: Paano Gumawa ng Ernie: 11 Mga Hakbang

Video: Paano Gumawa ng Ernie: 11 Mga Hakbang
Video: Mga Hakbang sa Pagsulat ng Sulating Pananaliksik 2024, Nobyembre
Anonim
Paano Gawin si Ernie
Paano Gawin si Ernie

Ito ay isang tutorial sa kung paano bumuo ng Ernie, ang iyong autonomous na sumusunod na robot, gamit ang isang Zybo Board. Saklaw nito kung paano: lumikha ng isang proyekto sa Vivado, lumikha ng tulad ng mga driver ng servo motor na tulad ng PWM sa FPGA, interface na may dalawang mga sensor ng tunog, lumikha ng isang pagkakaiba-iba ng oras ng pagdating ng IP, gumamit ng freeRTOS, at patakbuhin ang zybo mula sa isang pack ng baterya. Ito ang aming pangwakas na proyekto para sa isang klase ng Real Time Operating Systems (CPE 439) sa Cal Poly SLO.

Listahan ng kagamitan:

  • 1 - ZYBO Zynq 7000 Development Board
  • 2 - Parallax Continuous Rotation Servo
  • 2 - Sound Sensor (SparkFun Sound Detector)
  • 1 - 5v Lithium Ion USB baterya pack (para sa board)
  • 4 - Mga baterya ng AA (para sa mga servo)
  • 1 - AA baterya pack (w / 4 na mga puwang ng baterya)
  • 1 - Micro USB cable
  • 1 - Breadboard
  • marami - Lalaki sa Mga Lalaki na Wires
  • 1 - Servo chassis

Mga kinakailangan sa software:

  • Xilinx Vivado Design Suite 2016.2
  • Digilent Adept 2.16.1

Hakbang 1: Pagse-set up ng isang proyekto sa Vivado para kay Ernie

Pagse-set up ng isang proyekto sa Vivado para kay Ernie
Pagse-set up ng isang proyekto sa Vivado para kay Ernie
Pagse-set up ng isang proyekto sa Vivado para kay Ernie
Pagse-set up ng isang proyekto sa Vivado para kay Ernie
Pagse-set up ng isang proyekto sa Vivado para kay Ernie
Pagse-set up ng isang proyekto sa Vivado para kay Ernie
  1. Ang isang wizard ay pop up
  2. Mag-click sa Susunod
  3. Susunod na pangalanan ang proyekto

    1. Huwag kailanman gumamit ng isang pangalan ng proyekto o path ng direktoryo na mayroong mga puwang dito !!!!!
    2. Ito ay magiging isang proyekto sa RTL.
  4. Hindi namin nais na tukuyin ang mga mapagkukunan
  5. Ang pag-click sa Susunod, nakarating kami sa pahina ng Bahagi. Gumagamit kami ng isang ZYNQ XC7Z010-1CLG400C.

    1. Ang Vivado ay walang nakalista na Zybo bilang isa sa mga paunang natukoy na board. Piliin ang: "mga bahagi" pagkatapos maghanap para sa xc7z010clg400-1.
    2. Kung napili mo ang maling bahagi nang hindi sinasadya maaari mong madaling lumipat ng mga chips: Mga Tool -> Mga Setting ng Proyekto -> Pangkalahatan at i-click ang mga tuldok sa kanan ng "Project Device"
  6. I-click ang Lumikha ng Disenyo ng Block.

    Pangalanan itong disenyo_1 sa ngayon

  7. Makakakita ka ng isang berdeng bar na nagsasabing Magdagdag ng IP, i-click ito.
  8. Maghanap para kay Zynq

    1. I-double click ang ZYNQ7 Processing System,
    2. Lilitaw ang block na ito sa aming disenyo ng block.
  9. Makakakita ka ng isang berdeng bar na nagsasabing Run Block Automation, i-click ito.
  10. Mag-download ng zybo_zynq_def.xml sa ibaba.
  11. Sa Vivado, i-click ang "I-import ang Mga Setting ng XPS" at piliin ang "zybo_zynq_def.xml"

    Pinupuno nito ang pagsasaayos ng bloke ng Vivado kasama ang lahat ng mga built-in na peripheral at takdang-aralin ng Zybo board

  12. Mag-double click sa ZYNQ block.

    1. Pag-configure ng MIO

      1. Paganahin ang Timer 0 (sa ilalim ng Application Processor Unit - img 1)
      2. Paganahin ang Watchdog (sa ilalim ng Application Processor Unit- img 1)
      3. Paganahin ang GPIO-> GPIO MIO (sa ilalim ng Application Processor Unit - img 2)
      4. Paganahin ang GPIO-> ENET Reset (sa ilalim ng I / O Peripherals- img 2)
    2. Pag-configure ng Orasan

      Huwag paganahin ang FCLK0 (sa ilalim ng PL Fabric Clocks - img 3)

  13. Mag-click sa Ok.
  14. "Run Block Automation" ngayon.

    Magkakaroon ng ilang mga katanungan tungkol sa mga senyas, sabihin na OK

  15. I-click ang "Bumuo ng HDL Wrapper".

    Gusto naming kopyahin ang nabuong balot upang payagan ang mga pag-edit ng gumagamit

  16. Mag-click sa OK.

Hakbang 2: Paglikha ng PWM ni Ernie sa Vivado

Paglikha ng PWM ni Ernie sa Vivado
Paglikha ng PWM ni Ernie sa Vivado
Paglikha ng PWM ni Ernie sa Vivado
Paglikha ng PWM ni Ernie sa Vivado

Ang hakbang na ito ay bubuo ng isang PWM IP na may mga input na ipinadala sa pamamagitan ng AXI library.

  1. Lumikha ng block ng AXI GPIO sa pamamagitan ng pag-right click sa background, at pag-click sa "idagdag ang IP"

    i-type ang "AXI_GPIO" sa search bar, at piliin ang package na ito

  2. Muling ipasadya ang IP sa pamamagitan ng pag-double click sa bagong block ng axi_gpio_0

    1. sa ilalim ng GPIO, itakda ang lapad ng GPIO sa 2. Ang mga bit na ito ay magiging signal ng PWM_ON upang himukin ang bawat halimbawa ng module ng PWM.
    2. i-click ang "paganahin ang dalawahang channel"
    3. sa ilalim ng GPIO 2, itakda ang lapad ng GPIO sa 2. Ang mga bit na ito ay magiging PWM_FW signal upang maitakda ang direksyon ng bawat halimbawa ng module ng PWM.
  3. Mag-right click sa axi_gpio_0 output port na may label na GPIO, at piliin ang "Make External"

    1. Mag-click sa bagong output na may label na GPIO, at mag-navigate sa tab na "mga pag-aari" sa kaliwang toolbar, at baguhin ang pangalan sa PWM_ON
    2. Mag-click sa bagong output na may label na GPIO2, at mag-navigate sa tab na "mga pag-aari" sa kaliwang toolbar, at baguhin ang pangalan sa PWM_FW
  4. Piliin ang Run Connection Automation sa berdeng banner sa itaas ng block diagram.

    Kung manu-mano mong ikonekta ang mga port, maaaring hindi mai-configure ang mga address ng AXI, na hahantong sa mga isyu sa komunikasyon sa paglaon

  5. Sa Flow Navigator Pane, piliin ang manager ng proyekto -> Magdagdag ng Mga Pinagmulan upang lumikha ng isang bagong pasadyang IP block

    1. piliin ang "magdagdag o lumikha ng mga mapagkukunan ng disenyo", at susunod na pindutin
    2. i-click ang "lumikha ng file", baguhin ang uri ng file sa "SystemVerilog", at i-type ang "pwm" sa patlang ng pangalan ng file, pagkatapos ay i-click ang OK
    3. i-click ang Tapusin
    4. huwag pansinin ang window na Tukuyin ang Module sa pamamagitan ng pagpindot sa OK (mai-o-overlap namin ito sa ibang pagkakataon)

      kung tatanungin nito kung sigurado ka, i-click ang Oo

  6. Sa tab na mga mapagkukunan, i-double click ang pwm.sv (matatagpuan sa "Mga Pinagmulan ng Disenyo / disenyo_1_wrapper")

    Kopyahin / i-paste ang buong SystemVerilog code mula sa pwm.txt file na nakakabit sa ibaba

Hakbang 3: Paglikha ng TDOA ni Ernie sa Vivado

Lumilikha ng TDOA ni Ernie sa Vivado
Lumilikha ng TDOA ni Ernie sa Vivado
Lumilikha ng TDOA ni Ernie sa Vivado
Lumilikha ng TDOA ni Ernie sa Vivado

Ang hakbang na ito ay bubuo ng isang TDOA IP na ang output ay maaaring mabasa sa pamamagitan ng AXI library

  1. Lumikha ng block ng AXI GPIO sa pamamagitan ng pag-right click sa background, at pag-click sa "idagdag ang IP"

    i-type ang "AXI_GPIO" sa search bar, at piliin ang package na ito

  2. Muling ipasadya ang IP sa pamamagitan ng pag-double click sa bagong block ng axi_gpio_1

    1. sa ilalim ng GPIO, lagyan ng tsek ang kahon na "Lahat ng Mga Input", at itakda ang lapad ng GPIO sa 32. Ang bus na ito ang magiging pagkakaiba sa oras ng pagdating sa pagitan ng dalawang sensor.
    2. sa loob ng axi_gpio_1 block, i-click ang + sa tabi ng port ng GPIO upang ihayag ang gpio_io_i [31: 0].
  3. Mag-right click sa axi_gpio_1 output port na may label na gpio_io_i [31: 0], at piliin ang "Make External"

    Mag-click sa bagong input na may label na gpio_io_i [31: 0], at mag-navigate sa tab na "mga pag-aari" sa kaliwang toolbar, at baguhin ang pangalan sa TDOA_val

  4. Piliin ang Run Connection Automation sa berdeng banner sa itaas ng block diagram.

    Kung manu-mano mong ikonekta ang mga port, maaaring hindi mai-configure ang mga address ng AXI, na hahantong sa mga isyu sa komunikasyon sa paglaon

  5. Sa Flow Navigator Pane, piliin ang manager ng proyekto -> Magdagdag ng Mga Pinagmulan upang lumikha ng isang bagong pasadyang IP block

    1. piliin ang "magdagdag o lumikha ng mga mapagkukunan ng disenyo", at susunod na pindutin
    2. i-click ang "lumikha ng file", baguhin ang uri ng file sa "SystemVerilog", at i-type ang "tdoa" sa patlang ng pangalan ng file, pagkatapos ay i-click ang OK
    3. i-click ang Tapusin
    4. huwag pansinin ang window na Tukuyin ang Module sa pamamagitan ng pagpindot sa OK (mai-o-overlap namin ito sa ibang pagkakataon)

      kung tatanungin nito kung sigurado ka, i-click ang Oo

  6. Sa tab na mga mapagkukunan, i-double click ang tdoa.sv (matatagpuan sa "Mga Pinagmulan ng Disenyo / disenyo_1_wrapper")

    Kopyahin / i-paste ang buong SystemVerilog code mula sa tdoa.txt file na nakakabit sa ibaba

Hakbang 4: Pagbabalot at Pag-export ng Ernie

Pagbabalot at Pag-export ng Ernie
Pagbabalot at Pag-export ng Ernie
  1. I-verify na ang diagram ng block ay katulad ng naka-attach na screenshot
  2. Sa tab na mga mapagkukunan, i-right click ang design_1.bd at piliin ang "Lumikha ng HDL Wrapper …"

    1. Piliin ang "Kopyahin ang nabuong output upang payagan ang mga pag-edit ng gumagamit", pagkatapos ay pindutin ang "OK"
    2. Kopyahin ang code mula sa design_1_wrapper.txt na nakakabit sa ibaba, at i-paste ito bilang kapalit ng nabuong disenyo_1_wrapper.v code
    3. i-save ang disenyo_1_wrapper.v
  3. Sa tab na mga mapagkukunan, i-double click ang ZYBO_Master.xdc file sa ilalim ng Constraints / constrs1

    1. Kopyahin ang code mula sa ZYBO_Master.txt na nakakabit sa ibaba, at i-paste ito bilang kapalit ng umiiral na ZYBO_Master.xdc code
    2. Tandaan ang sumusunod na mga input / output pin:

      1. L15: signal ng PWM para sa kaliwang motor (Pmod JA2 sa Zybo)
      2. L14: signal ng PWM para sa tamang motor (Pmod JA8 sa Zybo)
      3. V12: input ng gate mula sa sound sensor 1 (Pmod JE1 sa Zybo)
      4. K16: input ng gate mula sa sound sensor 2 (Pmod JE2 sa Zybo)
  4. Sa Flow Navigator Pane, I-click ang "Bumuo ng Bitstream" sa ilalim ng Program at Debug

    kung sa tingin mo tapos na agad, malamang hindi. seryoso, gumawa ng tsaa

  5. I-click ang File-> Export-> Bumuo ng Hardware

    Suriin ang "Isama ang Bitstream" at pindutin ang OK

  6. I-click ang File-> Ilunsad ang SDK

Hakbang 5: Pagbuo kay Ernie

Pagbuo ni Ernie
Pagbuo ni Ernie
Pagbuo ni Ernie
Pagbuo ni Ernie
  1. I-mount ang servos sa servo chassis.
  2. Kasunod sa datasheet para sa mga servos, gawin ang sumusunod:

    1. ikonekta ang lupa ng mga servo sa mga ground pin sa JA Pmod ng Zybo (tingnan ang kalakip na imahe ng pinout)
    2. ikonekta ang power pin ng mga servos sa pack ng baterya ng AA

      Nalaman namin na kapag ang mga servo ay konektado sa Vdd ng Zybo, ang board ay kumukuha ng labis na kasalukuyang, na sanhi ng patuloy na pag-reset ng board

    3. ikonekta ang mga input signal pin sa naaangkop na output pin ng Zybo (kaliwa: JA2, kanan: JA8)
  3. i-mount ang mga sensor ng tunog sa harap ng tsasis, nakaharap, pinapanatili ang mga ito nang mas malapit hangga't maaari
  4. gamitin ang gabay sa hookup ng sound sensor upang isama ang mga sensors ng tunog

    1. wire ang lupa at Vdd pin ng bawat tunog sensor sa lupa at Vdd pin sa Zybo's JE Pmod (tingnan ang kalakip na imaheng pinout)
    2. i-wire ang kaliwang sensor ng pintura ng Gate pin sa JE1
    3. i-wire ang kanang pin ng sensor ng tunog sa JE2

Hakbang 6: Ang Unang BSP ni Ernie

Ang Unang BSP ni Ernie
Ang Unang BSP ni Ernie
Ang Unang BSP ni Ernie
Ang Unang BSP ni Ernie
  1. Lumikha ng isang BSP upang ibalot ang platform na nilikha lamang namin.

    Maaari mo itong makuha sa pamamagitan ng File -> Bago -> Board Support Package

  2. Ang isang wizard ay pop up upang matulungan kang lumikha ng BSP.

    1. Nais naming itali ang BSP na ito sa aming Platform na nilikha namin, kaya
    2. Ang Hardware Platform ay dapat na pumila sa isa pa lamang nating nilikha (tingnan ang img 1)
    3. Ang aming CPU ay ang _0 CPU.
    4. I-click ang Tapusin
    5. Siguraduhing suriin ang lwip141 para sa pagsasama sa iyong bsp sa window na pop up (tingnan ang img 2)

Hakbang 7: FreeRTOS'ing Ernie

  1. I-download ang pinakabagong paglabas ng FreeRTOS mula sa Sourceforge.

    Kung ang pag-download ay naisakatuparan, patakbuhin ito upang makuha ang mga file ng FreeRTOS sa iyong direktoryo ng proyekto

  2. Panatilihing bukas ang SDK na iyon, at i-click ang File -> I-import.
  3. Nais naming i-click ang Pangkalahatan-> Mula sa isang Umiiral na Workspace, at pagkatapos ay gugustuhin naming mag-navigate patungo sa kung saan namin na-download ang FreeRTOS.
  4. Makikita ang aming demo sa FreeRTOS / Demo / CORTEX_A9_Zynq_ZC702. Sa pagpili ng folder na ito, dapat naming makita ang tatlong mga proyekto na pop up (ang aming code (OS), ito ay BSP, at ang HW Platform).

    LAMANG I-import ang RTOSDemo sa iyong kasalukuyang workspace

  5. Sa lahat ng mga "asul" na proyekto ng folder baguhin ang nasangguniang BSP

    1. Pag-right click at pagpili sa "Baguhin ang Referensyadong BSP."
    2. Piliin ang BSP na iyong nilikha lamang para sa iyong Zybo
    3. Ang Pag-edit ng Code sa mga folder ng SDK Blue ng Xilinx ang aktwal na mga proyekto sa code.

Hakbang 8: Pag-import ng C Code ni Ernie

  1. Sa direktoryo ng RTOSDemo / src, patungan ang umiiral na main.c na may kalakip na main.c na file dito.
  2. Kopyahin ang main_sound.c fiile sa direktoryo ng RTOSDemo / src.

Hakbang 9: Pag-debug kay Ernie

  1. Piliin ang Run -> Mga Configure ng Pag-debug
  2. Sa kaliwang pane lumikha ng isang bagong pagpapatakbo ng System Debugger
  3. Sa tab na Target na Pag-setup,

    piliin ang "I-reset ang Buong System" upang ang pareho at ps7_init ay napili

  4. Piliin ngayon ang tab na Application.

    1. Piliin ang "application sa pag-download"
    2. Itakda ang core ng cortexa9_0 sa "huminto sa pagpasok ng programa"
    3. I-click ang Ilapat at I-debug.
  5. I-verify na walang mga error sa proseso ng pag-debug
  6. Pagpapanatiling isang malapit na relo sa robot, pindutin ang pindutan ng Ipagpatuloy hanggang sa tumakbo ang programa nang hindi tumatama sa anumang mga breakpoint
  7. Ang robot ay dapat na lumiko at lumipat patungo sa malakas na ingay. Yay!

Hakbang 10: Paggawa ng Autonomous kay Ernie

  1. Kapag handa na ang iyong proyekto na pumunta (maaari kang tumakbo nang walang mga problema sa pamamagitan ng debugger) handa ka na itong mai-load sa flash memory sa iyong board.
  2. Lumikha ng tinatawag na proyekto ng "first stage boot loader" (FSBL) at naglalaman ng lahat ng tagubilin na kakailanganin ng iyong board upang mai-load ang iyong mga file ng proyekto (ang bit stream at OS) sa pagsisimula.

    1. Piliin: File-> Bago-> Application Project at dapat lumitaw ang sumusunod na window.
    2. Pangalanan ito kung ano ang gusto mo (hal. "FSBL")
    3. Tiyaking ang platform ng hardware ang iyong pinagtatrabahuhan
    4. Pindutin ang susunod (Huwag pindutin ang Tapusin)
    5. Piliin ang template ng Zynq FSBL
    6. Mag-click matapos.
  3. Kapag kumpleto na ang proseso ng paglikha malalaman mo kung gumagana ang lahat kung nakikita mo ang sumusunod na dalawang bagong folder sa window ng Project Explorer.
  4. Lumikha ng isang Boot Image Ngayon kakailanganin mong likhain ang Boot na imahe.

    1. Pag-right click sa iyong folder ng proyekto (sa kasong ito ang mine ay tinatawag na "RTOSDemo")
    2. I-click ang "Lumikha ng imahe ng Boot" mula sa drop down
    3. Kung ang lahat ay na-link nang tama, malalaman ng proyekto kung anong mga file ang kailangan nito at ang sumusunod na window ay titingnan tulad ng nakikita mo sa ibaba (ang pangunahing pagiging mayroon kang 3 mga partisyon sa ilalim ng seksyon ng imahe ng Boot, ang bootloader, iyong bit file, at ang iyong mga proyekto. File ng sarili).

      Kung hindi ito ang kaso may posibleng mali sa pag-link ng iyong proyekto. Siguraduhin na ang mga folder ng proyekto ay naka-link sa kani-kanilang mga BSP

    4. I-click ang pindutang "Lumikha ng Imahe"
  5. Ang huling hakbang upang maisagawa sa software ay upang i-flash ngayon ang memorya ng iyong board

    1. Pumili mula sa pangunahing tool bar ng SDK piliin ang Xilinx Tools-> Program Flash Memory
    2. Siguraduhin na ang tamang platform ng hardware ay napili at ang path ng file ng imahe ay tama na tumuturo sa. BIN file na nilikha sa nakaraang hakbang.
    3. Piliin ang "qspi single" mula sa uri ng Flash
    4. Lagyan ng tsek ang "Patunayan pagkatapos ng flash" upang masiguro ang integridad ngunit hindi ito kinakailangan
  6. I-configure ang iyong Lupon Panghuli kailangan mong i-insure na ang boards programming mode jumper (JP5) ay wastong itinakda upang pumili upang mag-boot mula sa qspi (na naglalaman ng kung ano mo lamang na-flash) kapag ang BootROM ay pinatakbo.
  7. Ngayon paikutin lamang ang kuryente ng aparato at iseguro ang "Logic Configuration Tapos na LED" (LED 10) ay naiilawan berde.

Hakbang 11: Ginagawang Cute si Ernie

  1. Balahibo
  2. Maraming Balahibo
  3. MALAKING mga mata!
  4. … tuktok na sumbrero

Inirerekumendang: