Përmbajtje:

Si të bëni Ernie: 11 hapa
Si të bëni Ernie: 11 hapa
Anonim
Si ta bëni Ernie
Si ta bëni Ernie

Ky është një mësim se si të ndërtoni Ernie, robotin tuaj autonom të tingullit, duke përdorur një Bord Zybo. Do të mbulojë mënyrën se si: krijoni një projekt në Vivado, krijoni drejtues servo motorësh të ngjashëm me PWM në FPGA, ndërfaqe me dy sensorë të zërit, krijoni një ndryshim në kohën e IP të mbërritjes, përdorni freeRTOS dhe ekzekutoni zybo nga një paketë baterie. Ky ishte projekti ynë përfundimtar për një klasë të Sistemeve Operative në kohë reale (CPE 439) në Cal Poly SLO.

Lista e pajisjeve:

  • 1 - Bordi i Zhvillimit ZYBO Zynq 7000
  • 2 - Servo me rrotullim të vazhdueshëm parallaks
  • 2 - Sensori i zërit (Detektori i zërit SparkFun)
  • Paketë 1 - 5v bateri litium jon USB (për bordin)
  • 4 - bateri AA (për servos)
  • 1 - Paketë baterie AA (me 4 fole baterie)
  • 1 - Kabllo mikro USB
  • 1 - Tabela e bukës
  • shumë - Tela Mashkull në Mashkull
  • 1 - Shasi servo

Kërkesat e softuerit:

  • Suite Design Xilinx Vivado 2016.2
  • Agjenti Digilent 2.16.1

Hapi 1: Ngritja e një Projekti në Vivado për Ernie

Krijimi i një projekti në Vivado për Ernie
Krijimi i një projekti në Vivado për Ernie
Krijimi i një projekti në Vivado për Ernie
Krijimi i një projekti në Vivado për Ernie
Krijimi i një projekti në Vivado për Ernie
Krijimi i një projekti në Vivado për Ernie
  1. Një magjistar do të shfaqet
  2. Kliko Next
  3. Emri tjetër i projektit

    1. Asnjëherë mos përdorni një emër projekti ose rrugë drejtorie që ka hapësira në të !!!!!
    2. Ky do të jetë një projekt RTL.
  4. Ne nuk duam të specifikojmë burimet
  5. Duke klikuar Next, arrijmë në faqen e Pjesës. Ne po përdorim një ZYNQ XC7Z010-1CLG400C.

    1. Vivado nuk e ka Zybo të listuar si një nga tabelat e paracaktuara. Zgjidhni: "pjesë" dhe më pas kërkoni për xc7z010clg400-1.
    2. Nëse zgjidhni pjesën e gabuar gabimisht, mund të ndërroni patate të skuqura: Mjetet -> Cilësimet e projektit -> Të përgjithshme dhe klikoni pikat në të djathtë të "Pajisjes së Projektit"
  6. Klikoni Krijo Dizajn Blloku.

    Emërtojeni atë design_1 tani për tani

  7. Do të shihni një shirit të gjelbër që thotë Shto IP, klikoni mbi të.
  8. Kërkoni për Zynq.

    1. Klikoni dy herë në sistemin e përpunimit ZYNQ7,
    2. Ky bllok do të shfaqet në dizajnin tonë të bllokut.
  9. Do të shihni një shirit të gjelbër që thotë Run Block Automation, klikoni mbi të.
  10. Shkarkoni zybo_zynq_def.xml më poshtë.
  11. Në Vivado, klikoni "Importo Cilësimet XPS" dhe zgjidhni "zybo_zynq_def.xml"

    Kjo parapushon konfigurimin e bllokut Vivado me të gjitha pajisjet periferike të integruara të bordit Zybo dhe caktimet e kunjave

  12. Klikoni dy herë në bllokun ZYNQ.

    1. Konfigurimi MIO

      1. Aktivizo kohëmatësin 0 (nën Njësinë e Përpunuesit të Aplikimit - img 1)
      2. Aktivizo Watchdog (nën Njësinë e Përpunuesit të Aplikimit img 1)
      3. Aktivizo GPIO-> GPIO MIO (nën Njësinë e Përpunuesit të Aplikimit - img 2)
      4. Aktivizo Rivendosjen GPIO-> ENET (nën Periferikësh I/O- img 2)
    2. Konfigurimi i orës

      Çaktivizo FCLK0 (nën orët e rrobave PL - img 3)

  13. Kliko Ok.
  14. "Run Block Automation" tani.

    Do të ketë disa pyetje në lidhje me sinjalet, thoni OK

  15. Klikoni "Gjeneroni mbështjellësin HDL".

    Ne do të duam të kopjojmë mbështjellësin e krijuar për të lejuar redaktimet e përdoruesit

  16. Kliko OK.

Hapi 2: Krijimi i PWM i Ernie në Vivado

Krijimi i PWM i Ernie në Vivado
Krijimi i PWM i Ernie në Vivado
Krijimi i PWM i Ernie në Vivado
Krijimi i PWM i Ernie në Vivado

Ky hap do të gjenerojë një IP PWM me hyrje të dërguara përmes bibliotekës AXI.

  1. Krijoni bllokun AXI GPIO duke klikuar me të djathtën në sfond dhe duke klikuar "shtoni IP"

    shkruani "AXI_GPIO" në shiritin e kërkimit dhe zgjidhni këtë paketë

  2. Rregulloni IP-në duke klikuar dy herë në bllokun e ri axi_gpio_0

    1. nën GPIO, vendosni gjerësinë e GPIO në 2. Këto bit do të jenë sinjali PWM_ON për të drejtuar secilën shembull të modulit PWM.
    2. kliko "aktivizo kanalin e dyfishtë"
    3. nën GPIO 2, vendosni gjerësinë e GPIO në 2. Këto bit do të jenë sinjali PWM_FW për të vendosur drejtimin e secilës shembull të modulit PWM.
  3. Klikoni me të djathtën në portën e daljes axi_gpio_0 të etiketuar GPIO dhe zgjidhni "Bëni të jashtëm"

    1. Klikoni në daljen e re të etiketuar GPIO dhe lundroni te skedari "pronat" në shiritin e veglave të majtë dhe ndryshoni emrin në PWM_ON
    2. Klikoni në daljen e re të etiketuar GPIO2 dhe lundroni te skedari "pronat" në shiritin e veglave të majtë dhe ndryshoni emrin në PWM_FW
  4. Zgjidhni Run Connection Automation në flamurin e gjelbër mbi bllok diagramin.

    Nëse lidhni portat me dorë, adresat AXI mund të mos konfigurohen, duke çuar në probleme komunikimi më vonë

  5. Në panelin e navigatorit të rrjedhës, zgjidhni menaxherin e projektit -> Shto burime për të krijuar një bllok IP të ri të personalizuar

    1. zgjidhni "shtoni ose krijoni burime të projektimit" dhe klikoni tjetër
    2. klikoni "krijoni skedar", ndryshoni llojin e skedarit në "SystemVerilog" dhe shkruani "pwm" në fushën e emrit të skedarit, pastaj klikoni OK
    3. kliko Finish
    4. injoroni dritaren Define Module duke shtypur OK (ne do t'i rishkruajmë këto më vonë)

      nëse pyet nëse jeni i sigurt, klikoni Po

  6. Në skedën e burimeve, klikoni dy herë mbi pwm.sv (e vendosur në "Burimet e projektimit/design_1_wrapper")

    Kopjoni/ngjisni të gjithë kodin SystemVerilog nga skedari pwm.txt i bashkangjitur më poshtë

Hapi 3: Krijimi i TDOA të Ernie në Vivado

Krijimi i TDOA të Ernie në Vivado
Krijimi i TDOA të Ernie në Vivado
Krijimi i TDOA të Ernie në Vivado
Krijimi i TDOA të Ernie në Vivado

Ky hap do të krijojë një IP TDOA, prodhimi i të cilit mund të lexohet përmes bibliotekës AXI

  1. Krijoni bllokun AXI GPIO duke klikuar me të djathtën në sfond dhe duke klikuar "shtoni IP"

    shkruani "AXI_GPIO" në shiritin e kërkimit dhe zgjidhni këtë paketë

  2. Rregulloni IP-në duke klikuar dy herë në bllokun e ri axi_gpio_1

    1. nën GPIO, kontrolloni kutinë "Të gjitha hyrjet" dhe vendosni gjerësinë e GPIO në 32. Ky autobus do të jetë diferenca kohore e mbërritjes midis dy sensorëve.
    2. brenda bllokut axi_gpio_1, klikoni + pranë portës GPIO për të zbuluar gpio_io_i [31: 0].
  3. Klikoni me të djathtën në portën e daljes axi_gpio_1 të etiketuar gpio_io_i [31: 0], dhe zgjidhni "Bëni të jashtëm"

    Klikoni në hyrjen e re të etiketuar gpio_io_i [31: 0], dhe lundroni te skeda "pronat" në shiritin e veglave të majtë dhe ndryshoni emrin në TDOA_val

  4. Zgjidhni Run Connection Automation në flamurin e gjelbër mbi bllok diagramin.

    Nëse lidhni portat me dorë, adresat AXI mund të mos konfigurohen, duke çuar në probleme komunikimi më vonë

  5. Në panelin e navigatorit të rrjedhës, zgjidhni menaxherin e projektit -> Shto burime për të krijuar një bllok IP të ri të personalizuar

    1. zgjidhni "shtoni ose krijoni burime të projektimit" dhe klikoni tjetër
    2. klikoni "krijoni skedar", ndryshoni llojin e skedarit në "SystemVerilog" dhe shkruani "tdoa" në fushën e emrit të skedarit, pastaj klikoni OK
    3. kliko Finish
    4. injoroni dritaren Define Module duke shtypur OK (ne do t'i rishkruajmë këto më vonë)

      nëse pyet nëse jeni i sigurt, klikoni Po

  6. Në skedën e burimeve, klikoni dy herë në tdoa.sv (e vendosur në "Burimet e projektimit/design_1_wrapper")

    Kopjoni/ngjisni të gjithë kodin SystemVerilog nga skedari tdoa.txt i bashkangjitur më poshtë

Hapi 4: Mbështjellja dhe eksportimi i Ernie

Mbështjellja dhe eksportimi i Ernie
Mbështjellja dhe eksportimi i Ernie
  1. Verifikoni që diagrami i bllokut duket si pamja e ekranit e bashkangjitur
  2. Në skedën e burimeve, klikoni me të djathtën në design_1.bd dhe zgjidhni "Krijo mbështjellës HDL …"

    1. Zgjidhni "Kopjoni daljen e krijuar për të lejuar redaktimet e përdoruesit", pastaj shtypni "OK"
    2. Kopjoni kodin nga design_1_wrapper.txt bashkangjitur më poshtë dhe ngjiteni në vend të kodit të krijuar të dizajnit_1_wrapper.v
    3. ruani dizajnin_1_wrapper.v
  3. Në skedën e burimeve, klikoni dy herë në skedarin ZYBO_Master.xdc nën kufizimet/constrs1

    1. Kopjoni kodin nga ZYBO_Master.txt bashkangjitur më poshtë dhe ngjiteni në vend të kodit ekzistues ZYBO_Master.xdc
    2. Vini re kunjat e mëposhtme hyrëse/dalëse:

      1. L15: Sinjal PWM për motorin e majtë (Pmod JA2 në Zybo)
      2. L14: Sinjal PWM për motorin e duhur (Pmod JA8 në Zybo)
      3. V12: hyrja e portës nga sensori i zërit 1 (Pmod JE1 në Zybo)
      4. K16: hyrja e portës nga sensori i zërit 2 (Pmod JE2 në Zybo)
  4. Në panelin e navigatorit të rrjedhës, klikoni "Gjeneroni Bitstream" nën Programin dhe Korrigjimin

    nëse mendoni se është bërë menjëherë, ndoshta nuk është. seriozisht, bëj pak çaj

  5. Klikoni File-> Export-> Generate Hardware

    Kontrolloni "Përfshi Bitstream" dhe shtypni OK

  6. Klikoni File-> Launch SDK

Hapi 5: Ndërtimi i Ernie

Ndërtimi i Ernie
Ndërtimi i Ernie
Ndërtimi i Ernie
Ndërtimi i Ernie
  1. Montoni servot në shasinë servo.
  2. Duke ndjekur fletën e të dhënave për servos, bëni si më poshtë:

    1. lidhni tokën e servos me kunjat e tokëzuar në JA Pmod të Zybo (shikoni imazhin e bashkangjitur pinout)
    2. lidhni kunjin e energjisë të servos me paketën e baterisë AA

      Ne zbuluam se kur servot lidhen me Vdd të Zybo, bordi tërheq shumë rrymë, duke bërë që bordi të rivendoset vazhdimisht

    3. lidhni kunjat e sinjalit hyrës me kunjat e prodhimit të duhur të Zybo (majtas: JA2, djathtas: JA8)
  3. montoni sensorët e zërit në pjesën e përparme të shasisë, përballë përpara, duke i mbajtur ato sa më afër njëri -tjetrit
  4. përdorni udhëzuesin e lidhjes së sensorit të zërit për të integruar sensorët e zërit

    1. lidhni tokën dhe kunjat Vdd të secilit sensor të zërit në tokë dhe kunjat Vdd në JE Pmod të Zybo (shikoni imazhin e bashkëngjitur pinout)
    2. lidhni kunjin e Portës së sensorit të majtë të zërit në JE1
    3. lidhni pinin e Portës së sensorit të duhur të zërit në JE2

Hapi 6: BSP -ja e parë e Ernie -t

BSP e Parë e Ernie
BSP e Parë e Ernie
BSP e Parë e Ernie
BSP e Parë e Ernie
  1. Krijoni një BSP për të përfunduar platformën që sapo kemi krijuar.

    Ju mund ta merrni këtë përmes File -> New -> Package Support Package

  2. Një magjistar do të shfaqet për t'ju ndihmuar të krijoni BSP.

    1. Ne duam ta lidhim këtë BSP me Platformën tonë që sapo kemi krijuar, kështu
    2. Platforma e harduerit duhet të përputhet me atë që sapo kemi krijuar (shiko img 1)
    3. CPU -ja jonë do të jetë CPU _0.
    4. Kliko Finish
    5. Sigurohuni që të çaktivizoni lwip141 për përfshirjen me bsp tuaj në dritaren që shfaqet (shih img 2)

Hapi 7: FreeRTOS'ing Ernie

  1. Shkarkoni versionin më të fundit të FreeRTOS nga Sourceforge.

    Nëse shkarkimi është i ekzekutueshëm, ekzekutoni atë për të nxjerrë skedarët FreeRTOS në drejtorinë e projektit tuaj

  2. Mbajeni atë SDK të hapur dhe klikoni Skedar -> Import.
  3. Ne duam të klikojmë General-> From a Existing Workspace, dhe më pas do të dëshirojmë të lundrojmë atje ku kemi shkarkuar FreeRTOS.
  4. Demoja jonë do të gjendet në FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702. Me zgjedhjen e këtij dosje, ne duhet të shohim që shfaqen tre projekte (kodi ynë (OS), është BSP dhe Platforma HW).

    VETLM Importoni RTOSDemo në hapësirën tuaj aktuale të punës

  5. Në të gjitha projektet e dosjeve "blu" ndryshoni BSP -në e referuar

    1. Klikimi i djathtë dhe zgjedhja "Ndrysho BSP -në e Referuar".
    2. Zgjidhni BSP që sapo keni krijuar për Zybo tuaj
    3. Redaktimi i Kodit në dosjet SDK Blue të Xilinx janë projektet aktuale të kodit.

Hapi 8: Importimi i kodit C të Ernie

  1. Në drejtorinë RTOSDemo/src, mbishkruani main.c ekzistues me skedarin main.c të bashkangjitur këtu.
  2. Kopjoni skedarin main_sound.c në drejtorinë RTOSDemo/src.

Hapi 9: Debugging Ernie

  1. Zgjidhni Run -> Debug Configurations
  2. Në panelin e majtë krijoni një funksion të ri të Debugger të Sistemit
  3. Në skedën Setup Target,

    zgjidhni "Reset Entire System" në mënyrë që të dyja dhe ps7_init të zgjidhen

  4. Tani zgjidhni skedën Aplikimi.

    1. Zgjidhni "shkarkoni aplikacionin"
    2. Vendosni thelbin e cortexa9_0 në "të ndaluar në hyrjen e programit"
    3. Klikoni Apliko dhe Debug.
  5. Verifikoni që nuk ka gabime në procesin e korrigjimit
  6. Duke mbajtur një vëzhgim të ngushtë në robot, shtypni butonin Resume derisa programi të funksionojë pa goditur ndonjë pikë prishjeje
  7. Roboti tani duhet të kthehet dhe të lëvizë drejt zhurmave të forta. Po!

Hapi 10: Bërja e Ernie Autonome

  1. Pasi projekti juaj të jetë gati të fillojë (mund të punoni pa probleme përmes korrigjuesit) jeni gati ta ngarkoni atë në flash memorie në tabelën tuaj.
  2. Krijoni atë që quhet projekti i "ngarkuesit të fazës së parë" (FSBL) dhe përmban të gjitha udhëzimet që do t'ju nevojiten bordit tuaj për të ngarkuar skedarët e projektit tuaj (bit stream dhe OS) gjatë fillimit.

    1. Zgjidhni: Skedari-> E Re-> Projekti i Aplikimit dhe duhet të shfaqet dritarja e mëposhtme.
    2. Emërtojeni atë që dëshironi (p.sh. "FSBL")
    3. Sigurohuni që platforma harduerike është ajo me të cilën po punoni
    4. Shtypni tjetër (Mos shtypni Finish)
    5. Zgjidhni modelin Zynq FSBL
    6. Kliko në përfundim.
  3. Pasi të ketë përfunduar procesi i krijimit do të dini nëse gjithçka ka funksionuar nëse shihni dy dosjet e mëposhtme në dritaren e Project Explorer.
  4. Krijoni një Imazh të Boot Tani do t'ju duhet të krijoni imazhin Boot.

    1. Klikoni me të djathtën në dosjen e projektit tuaj (në këtë rast e imja quhet "RTOSDemo")
    2. Klikoni "Krijoni një imazh të nisjes" nga drop -down
    3. Nëse gjithçka është e lidhur në mënyrë korrekte, projekti do të dijë se për cilat skedarë ka nevojë dhe dritarja e mëposhtme do të duket siç shihni më poshtë (kryesore është që ju keni 3 ndarje nën seksionin Boot image, bootloader, skedarin tuaj bit dhe skedarin tuaj.elf)

      Nëse ky nuk është rasti, ndoshta ka diçka të gabuar me lidhjen e projektit tuaj. Sigurohuni që dosjet e projektit të jenë të lidhura me BSP -të e tyre përkatëse

    4. Klikoni në butonin "Krijo imazh"
  5. Hapi i fundit për të kryer në softuer është që tani të ndezni imazhin tuaj të krijuar më parë në kujtesën e tabelës

    1. Zgjidhni nga shiriti kryesor i veglave të SDK-së zgjidhni Xilinx Tools-> Memory Flash Program
    2. Sigurohuni që është zgjedhur platforma e saktë e harduerit dhe se rruga e skedarit të imazhit po tregon drejt skedarin. BIN të krijuar në hapin e mëparshëm.
    3. Zgjidhni "qspi single" nga lloji i Flash
    4. Shënoni "Verifiko pas ndezjes" për të siguruar integritetin, por nuk është e nevojshme
  6. Konfiguro Bordin tënd Së fundi duhet të sigurohesh që bluza e modalitetit të programimit të bordeve (JP5) është vendosur saktë për të zgjedhur për të nisur nga qspi (e cila përmban atë që sapo keni ndezur) kur BootROM është drejtuar.
  7. Tani thjesht qarkulloni me energji pajisjen dhe sigurohuni që "Konfigurimi Logjik LED u krye" (LED 10) të jetë ndezur me ngjyrë të gjelbër.

Hapi 11: Të bësh Ernie Cute

  1. Gëzof
  2. Shumë F Fr
  3. Sy te medhenj!
  4. … kapele

Recommended: