Բովանդակություն:

Ինչպես պատրաստել Էռնի. 11 քայլ
Ինչպես պատրաստել Էռնի. 11 քայլ
Anonim
Ինչպես պատրաստել Էռնի
Ինչպես պատրաստել Էռնի

Սա ձեռնարկ է, թե ինչպես կարելի է կառուցել Էռնի ՝ ձեր ինքնուրույն ձայնային ռոբոտին հետևելով, օգտագործելով Zybo տախտակ: Այն կներառի, թե ինչպես `ստեղծել նախագիծ Vivado- ում, ստեղծել FWA- ում PWM- ի նման սերվո շարժիչների շարժիչներ, ինտերֆեյս երկու ձայնային տվիչներով, ստեղծել ժամանման IP- ի ժամանակային տարբերություն, օգտագործել freeRTOS և մարտկոցից զիբո գործարկել: Սա մեր վերջին ծրագիրն էր իրական ժամանակի օպերացիոն համակարգերի դասի համար (CPE 439) Cal Poly SLO- ում:

Սարքավորումների ցուցակ.

  • 1 - ZYBO Zynq 7000 զարգացման խորհուրդ
  • 2 - Parallax Continuous Rotation Servo
  • 2 - Ձայնի տվիչ (SparkFun Sound Detector)
  • 1 - 5 վ Lithium Ion USB մարտկոցի փաթեթ (տախտակի համար)
  • 4 - AA մարտկոցներ (սերվերի համար)
  • 1 - AA մարտկոցի փաթեթ (w/ 4 մարտկոցի բնիկ)
  • 1 - Միկրո USB մալուխ
  • 1 - Breadboard
  • շատերը - Արականից արական լարերը
  • 1 - Servo շասսի

Softwareրագրային ապահովման պահանջներ.

  • Xilinx Vivado Design Suite 2016.2
  • Digilent Adept 2.16.1

Քայլ 1. Նախագծի ստեղծում Vivado- ում Էռնիի համար

Էռնիի համար Նախագծի ստեղծում Vivado- ում
Էռնիի համար Նախագծի ստեղծում Vivado- ում
Նախագծի ստեղծում Vivado- ում Էռնիի համար
Նախագծի ստեղծում Vivado- ում Էռնիի համար
Նախագծի ստեղծում Vivado- ում Էռնիի համար
Նախագծի ստեղծում Vivado- ում Էռնիի համար
  1. Կհայտնվի կախարդ
  2. Կտտացրեք Հաջորդը
  3. Հաջորդը անվանեք նախագիծը

    1. Երբեք մի օգտագործեք ծրագրի անվանումը կամ գրացուցակի ուղին, որի մեջ բացատներ կան !!!!!
    2. Սա կլինի RTL նախագիծ:
  4. Մենք չենք ցանկանում աղբյուրներ նշել
  5. Սեղմելով Հաջորդը ՝ մենք անցնում ենք Մաս էջին: Մենք օգտագործում ենք ZYNQ XC7Z010-1CLG400C:

    1. Vivado- ում Zybo- ն նշված չէ որպես իր նախապես որոշված տախտակներից մեկը: Ընտրեք ՝ «մասեր», ապա որոնեք xc7z010clg400-1:
    2. Եթե սխալմամբ սխալ հատված եք ընտրում, կարող եք հեշտությամբ փոխել չիպերը ՝ Գործիքներ -> Settingsրագրի կարգավորումներ -> Ընդհանուր և կտտացրեք «Projectրագրի սարքի» աջ կողմում գտնվող կետերին:
  6. Կտտացրեք Ստեղծել բլոկի ձևավորում:

    Առայժմ անվանեք այն design_1

  7. Դուք կտեսնեք կանաչ բար, որն ասում է Ավելացնել IP, կտտացրեք այն:
  8. Որոնեք Zynq:

    1. Կրկնակի սեղմեք ZYNQ7 Processing System,
    2. Այս բլոկը կհայտնվի մեր բլոկի ձևավորման մեջ:
  9. Դուք կտեսնեք կանաչ սանդղակ, որն ասում է Run Block Automation, կտտացրեք այն:
  10. Ներբեռնեք zybo_zynq_def.xml ստորև:
  11. Vivado- ում կտտացրեք «Ներմուծեք XPS կարգավորումներ» և ընտրեք «zybo_zynq_def.xml»

    Սա նախապես համալրում է Vivado բլոկի կազմաձևը Zybo տախտակի ներկառուցված բոլոր ծայրամասային սարքերով և քորոցային առաջադրանքներով:

  12. Կրկնակի սեղմեք ZYNQ բլոկի վրա:

    1. MIO կազմաձևում

      1. Միացնել ժմչփ 0 -ը (Application Application Processor Unit - img 1)
      2. Միացնել Watchdog- ը (Application Application Processor Unit-img 1-ի ներքո)
      3. Միացնել GPIO-> GPIO MIO (Application Processor Unit - img 2)
      4. Միացնել GPIO-> ENET վերականգնումը (I/O Peripherals- ի ներքո img 2)
    2. Clամացույցի կազմաձևում

      Անջատել FCLK0- ը (PL գործվածքների ժամացույցների ներքո - img 3)

  13. Սեղմեք Ok:
  14. «Գործարկեք արգելափակման ավտոմատացումը» հիմա:

    Ազդանշանների վերաբերյալ որոշ հարցեր կլինեն, ասեք OK

  15. Կտտացրեք «Ստեղծեք HDL փաթաթիչ»:

    Մենք կցանկանանք պատճենել ստեղծված փաթաթանը ՝ օգտվողի խմբագրումները թույլ տալու համար:

  16. Սեղմեք OK:

Քայլ 2. Ստեղծեք Էռնիի PWM Vivado- ում

Էրնիի PWM- ի ստեղծում Vivado- ում
Էրնիի PWM- ի ստեղծում Vivado- ում
Էրնիի PWM- ի ստեղծում Vivado- ում
Էրնիի PWM- ի ստեղծում Vivado- ում

Այս քայլը կստեղծի PWM IP ՝ AXI գրադարանի միջոցով ուղարկվող մուտքերով:

  1. Ստեղծեք AXI GPIO բլոկ ՝ ֆոնին աջ սեղմելով և «ավելացնել IP»

    որոնման տողում մուտքագրեք «AXI_GPIO» և ընտրեք այս փաթեթը

  2. Նորից անհատականացրեք IP- ն ՝ նոր axi_gpio_0 բլոկը կրկնակի սեղմելով

    1. GPIO- ի ներքո, սահմանեք GPIO- ի լայնությունը 2. Այս բիթերը կլինեն PWM_ON ազդանշանը `PWM մոդուլի յուրաքանչյուր օրինակ վարելու համար:
    2. կտտացրեք «միացնել երկակի ալիքը»
    3. GPIO 2 -ի ներքո, սահմանեք GPIO- ի լայնությունը 2. Այս բիթերը կլինեն PWM_FW ազդանշանը `PWM մոդուլի յուրաքանչյուր օրինակի ուղղությունը սահմանելու համար:
  3. Աջ սեղմեք GPIO մակագրությամբ axi_gpio_0 ելքային պորտի վրա և ընտրեք «Արտաքին դարձնել»

    1. Կտտացրեք GPIO մակնշմամբ նոր ելքի վրա և անցեք ձախ մասում գտնվող «հատկություններ» ներդիրին և անունը փոխեք PWM_ON- ի
    2. Կտտացրեք GPIO2 պիտակով նոր ելքի վրա և անցեք ձախ մասում գտնվող «հատկություններ» ներդիրին և փոխեք անունը PWM_FW
  4. Բլոկ -դիագրամից վերև գտնվող կանաչ դրոշի մեջ ընտրեք Գործարկել միացման ավտոմատացումը:

    Եթե դուք ձեռքով միացնում եք նավահանգիստները, AXI հասցեները կարող են կազմաձևված չլինել, ինչը հետագայում կհանգեցնի հաղորդակցության խնդիրների

  5. Flow Navigator- ի պատուհանում ընտրեք ծրագրի կառավարիչ -> Ավելացնել աղբյուրներ ՝ նոր անհատականացված IP բլոկ ստեղծելու համար

    1. ընտրեք «ավելացնել կամ ստեղծել դիզայնի աղբյուրներ» և կտտացրեք հաջորդը
    2. կտտացրեք «ստեղծել ֆայլ», փոխեք ֆայլի տեսակը «SystemVerilog» և ֆայլի անվան դաշտում մուտքագրեք «pwm», այնուհետև կտտացրեք Լավ
    3. սեղմեք Ավարտել
    4. անտեսել Define Module- ի պատուհանը `սեղմելով OK (դրանք ավելի ուշ կգրենք)

      եթե հարցնում է ՝ վստահ եք, կտտացրեք Այո

  6. Աղբյուրների ներդիրում կրկնակի կտտացրեք pwm.sv- ին (գտնվում է «Դիզայնի աղբյուրներ/դիզայն_շղթա» բաժնում)

    Պատճենեք/տեղադրեք SystemVerilog- ի ամբողջ ծածկագիրը ստորև կցված pwm.txt ֆայլից

Քայլ 3. Ստեղծեք Էռնիի TDOA- ն Vivado- ում

Էրնիի TDOA- ի ստեղծում Vivado- ում
Էրնիի TDOA- ի ստեղծում Vivado- ում
Էրնիի TDOA- ի ստեղծում Vivado- ում
Էրնիի TDOA- ի ստեղծում Vivado- ում

Այս քայլը կստեղծի TDOA IP, որի արտադրանքը կարելի է կարդալ AXI գրադարանի միջոցով

  1. Ստեղծեք AXI GPIO բլոկ ՝ ֆոնին աջ սեղմելով և «ավելացնել IP»

    որոնման տողում մուտքագրեք «AXI_GPIO» և ընտրեք այս փաթեթը

  2. Նորից անհատականացրեք IP- ն ՝ նոր axi_gpio_1 բլոկը կրկնակի սեղմելով

    1. GPIO- ի ներքո նշեք «Բոլոր մուտքերը» վանդակը և սահմանեք GPIO- ի լայնությունը 32 -ի վրա: Այս ավտոբուսը կլինի երկու տվիչների միջև ժամանման տարբերությունը:
    2. axi_gpio_1 բլոկի ներսում կտտացրեք + GPIO նավահանգստի կողքին + ՝ gpio_io_i [31: 0] բացահայտելու համար:
  3. Աջ սեղմեք gpio_io_i պիտակավորված axi_gpio_1 ելքային պորտի վրա [31: 0] և ընտրեք «Արտաքին դարձնել»

    Կտտացրեք gpio_io_i պիտակավորված նոր մուտքագրման վրա [31: 0], և գնացեք դեպի «հատկություններ» ներդիրը ձախ գործիքագոտու վրա և փոխեք անունը TDOA_val

  4. Բլոկ -դիագրամից վերև գտնվող կանաչ դրոշի մեջ ընտրեք Գործարկել միացման ավտոմատացումը:

    Եթե դուք ձեռքով միացնում եք նավահանգիստները, AXI հասցեները կարող են չկարգավորվել, ինչը հետագայում կհանգեցնի հաղորդակցության խնդիրների

  5. Flow Navigator- ի պատուհանում ընտրեք ծրագրի կառավարիչ -> Ավելացնել աղբյուրներ ՝ նոր անհատականացված IP բլոկ ստեղծելու համար

    1. ընտրեք «ավելացնել կամ ստեղծել դիզայնի աղբյուրներ» և կտտացրեք հաջորդը
    2. կտտացրեք «ստեղծել ֆայլ», փոխեք ֆայլի տեսակը «SystemVerilog» և ֆայլի անվան դաշտում մուտքագրեք «tdoa», այնուհետև կտտացրեք OK
    3. սեղմեք Ավարտել
    4. անտեսել Define Module- ի պատուհանը `սեղմելով OK (դրանք ավելի ուշ կգրենք)

      եթե հարցնում է ՝ վստահ եք, կտտացրեք Այո

  6. Աղբյուրների ներդիրում կրկնակի կտտացրեք tdoa.sv- ին (գտնվում է «Դիզայնի աղբյուրներ/դիզայն_շղթա» բաժնում)

    Պատճենեք/տեղադրեք SystemVerilog- ի ամբողջ ծածկագիրը ստորև կցված tdoa.txt ֆայլից

Քայլ 4. Էռնիի փաթաթում և արտահանում

Էռնիի փաթաթում և արտահանում
Էռնիի փաթաթում և արտահանում
  1. Ստուգեք, որ բլոկ -դիագրամը նման է կցված սքրինշոթին
  2. Աղբյուրների ներդիրում աջ սեղմեք design_1.bd և ընտրեք «Ստեղծել HDL փաթաթիչ …»

    1. Ընտրեք «Պատճենել արտադրված ելքը ՝ օգտվողի խմբագրումները թույլատրելու համար», այնուհետև կտտացրեք «OK»
    2. Պատճենեք կոդը ներքևում կցված design_1_wrapper.txt- ից և տեղադրեք այն գեներացված դիզայնի_ wrapper.v ծածկագրի փոխարեն
    3. պահպանել design_1_wrapper.v
  3. Աղբյուրների ներդիրում կրկնակի սեղմեք ZYBO_Master.xdc ֆայլը ՝ Սահմանափակումներ/constrs1

    1. Պատճենեք ծածկագիրը ստորև կցված ZYBO_Master.txt- ից և տեղադրեք այն գոյություն ունեցող ZYBO_Master.xdc կոդի փոխարեն
    2. Նշեք հետևյալ մուտքային/ելքային կապերը.

      1. L15: PWM ազդանշան ձախ շարժիչի համար (Pmod JA2 Zybo- ում)
      2. L14: PWM ազդանշան աջ շարժիչի համար (Pmod JA8 Zybo- ում)
      3. V12. Դարպասի մուտքագրում ձայնի տվիչից 1 (Pmod JE1 Zybo- ի վրա)
      4. K16. Դարպասի մուտքագրում ձայնային տվիչից 2 (Pmod JE2 Zybo- ի վրա)
  4. Flow Navigator- ի պատուհանում կտտացրեք «Ստեղծել Bitstream» ծրագրի և կարգաբերման ներքո

    եթե կարծում եք, որ դա անմիջապես արվել է, հավանաբար դա այդպես չէ: լուրջ, թեյ պատրաստիր

  5. Կտտացրեք Ֆայլ-> Արտահանում-> Ստեղծեք սարքավորում

    Ստուգեք «Ներառեք Bitstream» - ը և կտտացրեք OK

  6. Կտտացրեք Ֆայլ-> Գործարկել SDK

Քայլ 5. Էռնի կառուցելը

Էռնիի կառուցում
Էռնիի կառուցում
Էռնիի կառուցում
Էռնիի կառուցում
  1. Տեղադրեք սերվերը սերվո շասսիին:
  2. Հետևելով սերվերի տվյալների թերթիկին ՝ կատարեք հետևյալը.

    1. միացրեք servos- ի հիմքը Zybo's JA Pmod- ի գրունտային կապումներին (տե՛ս կից պատկերված պատկերը)
    2. միացրեք սերվերի հոսանքի կապը AA մարտկոցի փաթեթին

      Մենք պարզեցինք, որ երբ սպասարկողները միացված են Zybo- ի Vdd- ին, տախտակը չափազանց շատ հոսանք է ընդունում ՝ պատճառելով, որ խորհուրդը անընդհատ վերակայվի:

    3. միացրեք մուտքային ազդանշանի կապերը Zybo- ի համապատասխան ելքային կապերին (ձախ ՝ JA2, աջ ՝ JA8)
  3. տեղադրեք ձայնի տվիչները շասսիի առջևի կողմը ՝ ուղղված դեպի առաջ ՝ դրանք հնարավորինս մոտ պահելով միմյանց
  4. ձայնային տվիչների ինտեգրման համար օգտագործեք ձայնային տվիչի միացման ուղեցույցը

    1. յուրաքանչյուր ձայնային տվիչի գետնին և Vdd կապումներն ամրացրեք գետնին և Vdd կապում Zybo's JE Pmod- ի վրա (տե՛ս կցված եզրագծի պատկերը)
    2. միացրեք ձախ ձայնային տվիչի Gate քորոցը JE1- ին
    3. միացրեք ձայնի տվիչի Gate քորոցը դեպի JE2

Քայլ 6: Էռնիի առաջին BSP- ը

Էռնիի առաջին BSP- ն
Էռնիի առաջին BSP- ն
Էռնիի առաջին BSP- ն
Էռնիի առաջին BSP- ն
  1. Ստեղծեք BSP ՝ մեր ստեղծած հարթակը ամփոփելու համար:

    Դուք կարող եք դա ստանալ Ֆայլ -> Նոր -> Տախտակի աջակցության փաթեթի միջոցով:

  2. Կհայտնվի մի հրաշագործ, որը կօգնի ձեզ ստեղծել BSP:

    1. Մենք ցանկանում ենք այս BSP- ն կապել մեր ստեղծած Հարթակի հետ, այնպես որ
    2. Սարքավորումների պլատֆորմը պետք է համընկնի մեր ստեղծածի հետ (տես նկար 1)
    3. Մեր պրոցեսորը կլինի _0 պրոցեսորը:
    4. Կտտացրեք Ավարտել
    5. Համոզվեք, որ անջատեք lwip141- ը ՝ ձեր bsp- ով հայտնվող պատուհանում ներառելու համար (տե՛ս նկար 2)

Քայլ 7: FreeRTOS'ing Ernie

  1. Ներբեռնեք FreeRTOS- ի վերջին թողարկումը Sourceforge- ից:

    Եթե ներբեռնումը գործարկելի է, գործարկեք այն ՝ FreeRTOS ֆայլերը ձեր ծրագրի գրացուցակում հանելու համար:

  2. Պահեք այդ SDK- ն բաց և կտտացրեք Ֆայլ -> Ներմուծում:
  3. Մենք ցանկանում ենք սեղմել Ընդհանուր-> գոյություն ունեցող աշխատանքային տարածքից, այնուհետև մենք կցանկանանք նավարկել դեպի այն վայրը, որտեղ մենք ներբեռնել ենք FreeRTOS- ը:
  4. Մեր ցուցադրական ցուցադրումը տեղադրվելու է FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702 հասցեում: Այս թղթապանակն ընտրելուց մենք պետք է տեսնենք, որ երեք նախագիծ է հայտնվում (մեր ծածկագիրը (ՕՀ), դա BSP- ն և HW պլատֆորմը):

    ՄԻԱՅՆ ներմուծեք RTOSDemo ձեր ընթացիկ աշխատանքային տարածք:

  5. Բոլոր «կապույտ» թղթապանակի նախագծերում փոխվում է հղված BSP- ն

    1. Աջ սեղմեք և ընտրեք «Փոխել հղված BSP- ը»:
    2. Ընտրեք BSP- ը, որը դուք պարզապես ստեղծել եք ձեր Zybo- ի համար
    3. Կոդի խմբագրումը Xilinx- ի SDK Blue թղթապանակներում իրական կոդի նախագծեր են:

Քայլ 8. Էռնիի C կոդի ներմուծում

  1. RTOSDemo/src գրացուցակում վերագրեք գոյություն ունեցող main.c- ն ՝ այստեղ կցված main.c ֆայլով:
  2. Պատճենեք main_sound.c ֆայլը RTOSDemo/src գրացուցակում:

Քայլ 9. Էռնիի կարգաբերում

  1. Ընտրեք Run -> Debug Configurations
  2. Ձախ վահանակում ստեղծեք System Debugger- ի նոր աշխատանք
  3. Target Setup ներդիրում,

    ընտրեք «Վերականգնել ամբողջ համակարգը», այնպես որ ընտրված են և՛ այն, և՛ ps7_init- ը

  4. Այժմ ընտրեք «Դիմում» ներդիրը:

    1. Ընտրեք «Ներբեռնեք ծրագիրը»
    2. Cortexa9_0 միջուկը սահմանեք «կանգ առնել ծրագրի մուտքի մոտ»
    3. Կտտացրեք Դիմել և կարգաբերել:
  5. Ստուգեք, որ վրիպազերծման գործընթացում սխալներ չկան
  6. Ռոբոտի վրա ուշադիր հետևելով ՝ սեղմեք «Վերսկսել» կոճակը, մինչև ծրագիրը չաշխատի առանց որևէ կետի հարվածելու
  7. Այժմ ռոբոտը պետք է շրջվի և շարժվի դեպի բարձր ձայներ: Այո

Քայլ 10. Էռնի ինքնավար դարձնելը

  1. Երբ ձեր նախագիծը պատրաստ լինի ավարտին (դուք կարող եք առանց խնդիրների աշխատել վրիպազերծիչի միջոցով) դուք պատրաստ եք այն բեռնել ձեր տախտակի ֆլեշ հիշողության վրա:
  2. Ստեղծեք այն, ինչ կոչվում է «առաջին փուլի բեռնիչ» (FSBL) նախագիծ և պարունակում է այն բոլոր հրահանգները, որոնք անհրաժեշտ կլինեն ձեր տախտակին ՝ ձեր նախագծի ֆայլերը (բիթ հոսքը և ՕՀ) գործարկման ժամանակ բեռնելու համար:

    1. Ընտրեք ՝ Ֆայլ-> Նոր-> Կիրառման նախագիծ և պետք է հայտնվի հետևյալ պատուհանը:
    2. Անվանեք այն, ինչ ցանկանում եք (այսինքն ՝ «FSBL»)
    3. Համոզվեք, որ ապարատային հարթակն այն է, որի հետ աշխատում եք
    4. Սեղմեք հաջորդ (Մի սեղմեք Ավարտել)
    5. Ընտրեք Zynq FSBL ձևանմուշը
    6. Կտտացրեք ավարտին:
  3. Ստեղծման գործընթացն ավարտվելուց հետո դուք կիմանաք, թե արդյոք ամեն ինչ աշխատե՞լ է, եթե Project Explorer- ի պատուհանում տեսնում եք հետևյալ երկու նոր թղթապանակները:
  4. Ստեղծեք Boot Image Այժմ դուք պետք է ստեղծեք Boot պատկերը:

    1. Աջ սեղմեք ձեր ծրագրի թղթապանակի վրա (այս դեպքում իմը կոչվում է «RTOSDemo»)
    2. Կտտացրեք «Ստեղծել բեռնախցիկի պատկեր» բացվող ներքևում
    3. Եթե ամեն ինչ ճիշտ է կապված, նախագիծը կիմանա, թե ինչ ֆայլերի կարիք ունի, և հետևյալ պատուհանը տեսք կունենա, ինչպես տեսնում եք ստորև (հիմնականը այն է, որ Boot image բաժնի տակ ունեք 3 միջնապատկեր, bootloader, ձեր բիթ ֆայլը և ձեր.elf ֆայլը:):

      Եթե դա այդպես չէ, հնարավոր է ՝ ինչ -որ բան այն չէ, որ ձեր նախագիծը կապում է: Ապահովեք, որ ծրագրի թղթապանակները կապված լինեն իրենց համապատասխան BSP- ներին

    4. Կտտացրեք «Ստեղծել պատկեր» կոճակը
  5. Stepրագրային ապահովման մեջ կատարելու վերջին քայլն այն է, որ ձեր նախկինում ստեղծված պատկերը ցատկեն գրատախտակին

    1. SDK- ի հիմնական գործիքի տողից ընտրեք Xilinx Tools-> Program Flash Memory
    2. Համոզվեք, որ ընտրված է ճիշտ ապարատային հարթակը և որ պատկերի ֆայլի ուղին ճիշտ է ցույց տալիս նախորդ քայլին ստեղծված. BIN ֆայլը:
    3. Flash տիպից ընտրեք «qspi single»
    4. Նշեք «Ստուգեք բռնկումից հետո» ՝ ամբողջականությունն ապահովելու համար, բայց դրա կարիքը չկա
  6. Կարգավորեք ձեր տախտակը Վերջապես դուք պետք է համոզվեք, որ տախտակների ծրագրավորման ռեժիմի jumper- ը (JP5) ճիշտ է դրված, որպեսզի BootROM- ը գործարկելիս սկսի բեռնաթափումը qspi- ից (որը պարունակում է այն, ինչ նոր բռնկվել եք):
  7. Այժմ պարզապես միացրեք սարքը և ապահովեք, որ «Տրամաբանական կազմաձևումն արված է» (LED 10) վառվի կանաչ:

Քայլ 11: Էռնիի գեղեցիկ դարձնելը

  1. Մորթու
  2. Շատ մորթուց
  3. Մեծ աչքեր!
  4. … ցիլինդր

Խորհուրդ ենք տալիս: