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

ZYBO OV7670 տեսախցիկ ՝ թավայի/թեքության վերահսկմամբ ՝ 39 քայլ (նկարներով)
ZYBO OV7670 տեսախցիկ ՝ թավայի/թեքության վերահսկմամբ ՝ 39 քայլ (նկարներով)

Video: ZYBO OV7670 տեսախցիկ ՝ թավայի/թեքության վերահսկմամբ ՝ 39 քայլ (նկարներով)

Video: ZYBO OV7670 տեսախցիկ ՝ թավայի/թեքության վերահսկմամբ ՝ 39 քայլ (նկարներով)
Video: Видеокамера для снимков видео, или фото #arduino #ардуино #подключение 2024, Նոյեմբեր
Anonim
Image
Image
ZYBO OV7670 տեսախցիկ ՝ թավայի/թեքության վերահսկմամբ
ZYBO OV7670 տեսախցիկ ՝ թավայի/թեքության վերահսկմամբ

Սկսեք առաջին քայլից ՝ 2 առանցքի servo PWM վերահսկիչ ստեղծելու մանրամասների համար:

Սկսեք զանգվածային բլոկ -դիագրամից (Քայլ 19) ամբողջական նախագծի համար:

Տեսախցիկ + թավայի/թեքության կարգավորում, որն օգտագործել ենք ՝

Սպասարկիչները միացնելու համար օգտագործվել է Digilent- ի PmodCON3- ը:

Քայլ 1. Կառուցեք PWM մոդուլ- Աղբյուր ֆայլ

Քայլ 2. Կառուցեք PWM մոդուլ- Vivado Setup

Կառուցեք PWM մոդուլ- Vivado Setup
Կառուցեք PWM մոդուլ- Vivado Setup

Նախ, ներբեռնեք Vivado Design Suite- ը Xilinx կայքից: Տեղադրեք դիզայնի ամբողջ փաթեթը, ներառյալ Vivado Software Development Kit- ը (SDK): Այս նախագիծը օգտագործում է 2017.2 տարբերակը:

Այդ ընթացքում Digilent Adept 2 -ը նույնպես պետք է տեղադրվի որպես Zybo տախտակի վարորդ:

Քայլ 3. Կառուցեք PWM մոդուլ- Ստեղծեք ծրագրի ֆայլ

Կառուցեք PWM մոդուլ- Ստեղծեք ծրագրի ֆայլ
Կառուցեք PWM մոդուլ- Ստեղծեք ծրագրի ֆայլ

Նախքան նախագծի ֆայլ ստեղծելը, դուք պետք է համոզվեք, որ արդեն ճիշտ եք տեղադրել Zybo ֆայլը ՝ որպես ձեռնարկ այստեղ:

Vivado տարբերակ 2015.1 և ավելի ուշ տախտակի ֆայլերի տեղադրում

Բաց Vivado 2017.2. Արագ մեկնարկի ժամանակ կտտացրեք Ստեղծել նախագիծ -> Հաջորդ -> Nameրագրի անուն (նշեք ձեր ծրագրի անունը այստեղ) -> Typeրագրի տեսակը: Projectրագրի տիպի վրա ընտրեք RTL Project և նշեք «Այս պահին աղբյուրներ մի նշեք»: Հաջորդը, կանխադրված մասի համար որպես ցուցադրման անուն ընտրեք «Տախտակներ» և «Zybo»: Հաջորդը, կտտացրեք Ավարտել ՝ նախագիծը սկսելու համար:

Քայլ 4. Կառուցել PWM մոդուլ. Արգելափակման ձևավորում և սահմանափակումների ֆայլի կարգավորում (I)

Կառուցել PWM մոդուլ- Արգելափակման ձևավորում և սահմանափակումների ֆայլի կարգավորում (I)
Կառուցել PWM մոդուլ- Արգելափակման ձևավորում և սահմանափակումների ֆայլի կարգավորում (I)

Flow Navigator- ում կտտացրեք «Ստեղծեք բլոկի ձևավորում», այնուհետև կտտացրեք OK: կտտացրեք «+» նշանին ՝ անհրաժեշտ IP հասցեներ ավելացնելու համար: Ավելացնել:

  • Մեկ ZYNQ7 մշակման համակարգ Երկու AXI ժմչփ
  • Երկու AXI ժմչփ

Քայլ 5. Կառուցեք PWM մոդուլ- Արգելափակման ձևավորում և սահմանափակումների ֆայլի կարգավորում (II)

Կառուցել PWM մոդուլ- Արգելափակման ձևավորում և սահմանափակումների ֆայլի կարգավորում (II)
Կառուցել PWM մոդուլ- Արգելափակման ձևավորում և սահմանափակումների ֆայլի կարգավորում (II)

IP- ների ավելացումից հետո գործարկեք Block Automation և միացման ավտոմատացում: Ավտոմատացման ավարտից հետո «axi_timer_0» բլոկում աջ սեղմեք pwm0 -> Make External: Անվանեք pwm0 արտաքին քորոցը որպես pwm_Xaxis: Բացի այդ, կրկնել վերը նշված գործընթացը «axi_timer_1» բլոկի վրա և անվանել pwm0 արտաքին քորոցը որպես pwm_Zaxis:

Քայլ 6. Կառուցել PWM մոդուլ. Արգելափակման ձևավորում և սահմանափակումների ֆայլի կարգավորում (III)

Կառուցել PWM մոդուլ- Արգելափակման ձևավորում և սահմանափակումների ֆայլի կարգավորում (III)
Կառուցել PWM մոդուլ- Արգելափակման ձևավորում և սահմանափակումների ֆայլի կարգավորում (III)

Ուշադրություն դարձրեք, որ ամեն անգամ, երբ ավարտում ենք Block Design- ը Vivado- ում, մենք պետք է ստեղծենք HDL Wrapper: Քանի որ դա կլինի ամենաբարձր մակարդակի մոդուլ յուրաքանչյուր ծրագրի համար:

Քայլ 7. Կառուցեք PWM մոդուլ- Արգելափակման ձևավորում և սահմանափակումների ֆայլի կարգավորում (IV)

Կառուցել PWM մոդուլ- Արգելափակման ձևավորում և սահմանափակումների ֆայլի կարգավորում (IV)
Կառուցել PWM մոդուլ- Արգելափակման ձևավորում և սահմանափակումների ֆայլի կարգավորում (IV)

Այժմ, մենք պետք է ստեղծենք մեր սահմանափակման ֆայլը `մեր բլոկ -դիագրամին միացված կապում նշանակելու համար: Փակեք Արգելափակման ձևավորման պատուհանը, Աղբյուրների վրա, «Ավելացնել աղբյուրներ»-> Ավելացնել կամ ստեղծել սահմանափակումներ-> ավելացնել Zybo-Master.xdc- ը որպես մեր սահմանափակման ֆայլեր:

Քայլ 8. Կառուցեք PWM մոդուլ- Արգելափակման ձևավորում և սահմանափակումների ֆայլի կարգավորում (V)

Կառուցեք PWM մոդուլ- Արգելափակման ձևավորում և սահմանափակումների ֆայլի կարգավորում (V)
Կառուցեք PWM մոդուլ- Արգելափակման ձևավորում և սահմանափակումների ֆայլի կարգավորում (V)

Բացեք սահմանափակումների ֆայլը Zybo-Master.xdc սահմանափակումների թղթապանակից, մեկնաբանեք այն նավահանգիստները, որոնք մենք ցանկանում ենք նշել որպես ելքային ազդանշաններ և վերանվանեք «get_ports {XXXX}», որը XXXX- ը նշում է Block Diagram- ում նշված արտաքին քորոցը: Սահմանափակման ֆայլի կարգավորումը ցույց է տրված նկարում:

Քայլ 9. Կառուցեք PWM մոդուլ- Սարքավորումների տեղադրում

Կառուցեք PWM մոդուլ- Սարքավորումների տեղադրում
Կառուցեք PWM մոդուլ- Սարքավորումների տեղադրում

Սերվո շարժիչները միացրեք Pmod CON3- ին: TowerPro SG90- ը servo շարժիչի մոդելն է, որը մենք օգտագործել ենք այս նախագծում: Servo շարժիչի լարերի համար նարնջագույն մետաղալարը ներկայացնում է PWM ազդանշանը, որը միացված է Pmod CON3- ի SIG կապին: Vcc կարմիր մետաղալարն էլեկտրալար է, որը միացված է Pmod CON3- ի VS կապին: Վերջապես, շագանակագույն մետաղալարերը Gnd- ը GND կապին միացված հիմնավորված մետաղալար է: Հաջորդը, տեղադրեք Pmod CON3- ը Jybo տախտակի JD նավահանգստի վերին շարքում:

Քայլ 10. Կառուցեք PWM մոդուլ. Ստեղծեք Bitstream և գործարկեք SDK

1. Project Navigator ներդիրում գործարկեք Generate BitStream- ը:

2. Արտահանեք սարքավորումներ. Ֆայլ> Արտահանել> Արտահանել սարքավորում-> «ներառել բիթսթրիմը»-> OK 3. Գործարկել SDK- ն ՝ Ֆայլը-> Գործարկել SDK- ն:

Քայլ 11. Կառուցեք PWM մոդուլ. Ստեղծեք նոր ծրագիր Xilinx SDK- ում

Կառուցեք PWM մոդուլ- Ստեղծեք նոր ծրագիր Xilinx SDK- ում
Կառուցեք PWM մոդուլ- Ստեղծեք նոր ծրագիր Xilinx SDK- ում

Ստեղծեք նոր ծրագիր.

Ֆայլ> Նոր> Կիրառման նախագիծ -> Մուտքագրեք ձեր նախագծի անունը -> Ավարտել

Project Explorer- ի ներքո պետք է լինի երեք թղթապանակ:

Այս դեպքում «design_1_wrapper_hw_platform_0» - ը Vivado- ի կողմից նախկինում արտահանված թղթապանակն է: Axis_2_PWM_SDK_bsp- ը տախտակի աջակցության փաթեթի թղթապանակն է: Իսկ Axis_2_PWM_SDK- ը մեր հիմնական նախագծի թղթապանակն է SDK- ում: Դուք կարող եք տեսնել «helloworld.c» ֆայլը Axis_2_PWM_SDK- ի «src» թղթապանակի տակ, որտեղ «helloworld.c» - ն հիմնական ֆայլն է:

Քայլ 12. Կառուցեք PWM մոդուլ- Exploreրագրի Explorer- ի ակնարկ (I)

Կառուցել PWM մոդուլ- Exploreրագրի Explorer- ի ակնարկ (I)
Կառուցել PWM մոդուլ- Exploreրագրի Explorer- ի ակնարկ (I)

Եկեք ստուգենք որոշ ֆայլեր Project Explorer- ի ներքո: Նախ, «design_1_wrapper_hw_platform_0» թղթապանակում բացեք «system.hdf»: Այս ֆայլը ցույց է տալիս ps7_cortex9 պրոցեսորի հասցեի քարտեզը և մեր նախագծում առկա IP բլոկները:

Քայլ 13. Կառուցել PWM մոդուլ. Exploreրագրի Explorer- ի ակնարկ (II)

Կառուցելով PWM մոդուլ. Exploreրագրի Explorer- ի ակնարկ (II)
Կառուցելով PWM մոդուլ. Exploreրագրի Explorer- ի ակնարկ (II)

Այնուհետև ստուգեք «ներառել» և «libsrc» ֆայլերը «Axis_2_PWM_SDK_bsp» պանակի տակ: Գրադարանի ֆայլերը մեզ հնարավորություն են տալիս փոխազդել ապարատային ծայրամասային սարքերի հետ `առանց« նվագելու »գրանցամատյանների:

Քայլ 14. Կառուցել PWM մոդուլ. Exploreրագրի Explorer- ի ակնարկ (III)

Կառուցելով PWM մոդուլ. Exploreրագրի Explorer- ի ակնարկ (III)
Կառուցելով PWM մոդուլ. Exploreրագրի Explorer- ի ակնարկ (III)

BSP փաստաթղթերի միջոցով xtmrctr.h- ն հայտնաբերվում է որպես Xilinx ժամաչափի կառավարման գրադարան ՝ կապված AXI ժմչփի հետ: Սովորաբար, այստեղ մենք կարող ենք գտնել ցանկալի PWM գործառույթը: Այնուամենայնիվ, եթե կարդաք «tmrctr_v4_3» փաստաթղթերը, դա ցույց է տալիս, որ վարորդը ներկայումս չի աջակցում սարքի PWM գործունեությունը: PWM գործառույթի անբավարարության պատճառով մենք պետք է ամփոփենք մեր PWM գործառույթը xtmrctr.h և AXI Timer v2.0 LogiCORE IP արտադրանքի ուղեցույցի օգնությամբ:

Քայլ 15. Կառուցեք PWM մոդուլ- Փաթեթավորեք PWM գործառույթը (I)

Կառուցեք PWM մոդուլ- Փաթեթավորեք PWM գործառույթը (I)
Կառուցեք PWM մոդուլ- Փաթեթավորեք PWM գործառույթը (I)

Վերադառնալ «helloworld.c» հիմնական ֆայլին, ներառեք վերնագրի հետևյալ ֆայլերը.

Քայլ 16. Կառուցեք PWM մոդուլ- Փաթեթավորեք PWM գործառույթը (II)

Կառուցեք PWM մոդուլ- Փաթեթավորեք PWM գործառույթը (II)
Կառուցեք PWM մոդուլ- Փաթեթավորեք PWM գործառույթը (II)

Սահմանեք երկու AXI TImer- ի հիմնական հասցեները «xparameters.h» - ի միջոցով:

Քայլ 17. Կառուցեք PWM մոդուլ- Փաթեթավորեք PWM գործառույթը (III)

Կառուցեք PWM մոդուլ- Փաթեթավորեք PWM գործառույթը (III)
Կառուցեք PWM մոդուլ- Փաթեթավորեք PWM գործառույթը (III)

Կառուցեք ցանկալի PWM գործառույթը:

Duty_val. Փոխակերպում է աստիճանի արժեքը հերթապահության: Shouldամացույցի ժամանակահատվածը նույնպես պետք է նշանակվի:

PWM_START. Նշանակեք PWM գրանցամատյանի հասցեն և սկսեք արտադրել PWM:

PWM_STOP. Նշանակեք PWM գրանցման հասցեն և դադարեցրեք PWM- ի արտադրությունը:

Մնացած ցուցադրական կոդը ցուցադրվում է «helloworld.c» - ում «Axis_2_PWM_SDK» - ի ներքո

Քայլ 18. Կառուցեք PWM մոդուլ. Գործարկեք այն:

1. PGրագրեք FPGA- ն SDK- ի միջոցով

  • Միացրեք Zybo Board- ը USB պորտի միջոցով համակարգչին:
  • Xilinx գործիքներ -> Fրագիր FPGA

2. Գործարկել ծրագիրը

Կտտացրեք «Գործարկել» պատկերակին և բաց թողեք ընտրացանկը -> Գործարկել որպես -> Գործարկել սարքաշարի վրա

3. SDK տերմինալ

  • Բացեք SDK տերմինալը -> Միացեք սերիական նավահանգստին -> OK
  • Գործարկեք ծրագիրը: Եթե ցուցադրական ծածկագիրը հաջողությամբ գործարկվի, դուք պետք է տեսնեք «Նախնականացումը կատարված է»: SDK տերմինալում:

Քայլ 19. Հեռարձակեք տեսանյութերի մշակում Digilent ZYBO- ով OV7670- ով

Արխիվի ամբողջական ֆայլը կցված է:

Քայլ 20. Ամբողջական արգելափակման դիագրամ

Ամբողջական արգելափակման դիագրամ
Ամբողջական արգելափակման դիագրամ

Սա ցույց է տալիս նախագծի բոլոր կապերի և IP բլոկների ամբողջական դիագրամը

Քայլ 21. Միացրեք OV7670- ը ZYBO- ին

Միացրեք OV7670- ը ZYBO- ին
Միացրեք OV7670- ը ZYBO- ին

Ստեղծեք կապ ov7670 մոդուլը ZYBO Pmods- ին միացնելու համար

Տվյալների Pmod- ը Pmod D է

Control Pmod- ը Pmod C է

Բացի այդ, միացրեք PmodCON3- ը և սերվերը, ինչպես նշված է այս ձեռնարկի առաջին կեսում

Քայլ 22. Ստեղծեք բլոկի ձևավորում

Ստեղծեք բլոկի դիզայն
Ստեղծեք բլոկի դիզայն

Flow Navigator- ում կտտացրեք «Ստեղծեք բլոկի ձևավորում», այնուհետև կտտացրեք OK:

Քայլ 23. Ավելացրեք VHDL ֆայլեր OV7670 տեսախցիկի կառավարման և նկարահանման համար

Այս քայլին կցված VHDL ֆայլերը ավելացրեք նախագծին

Քայլ 24. Ավելացրեք սահմանափակումների ֆայլ

Ավելացրեք կցված սահմանափակումների ֆայլը ձեր նախագծին:

Քայլ 25. Ավելացրեք IP ռեպո HLS IP- ի համար

Ավելացրեք IP Repo HLS IP- ի համար
Ավելացրեք IP Repo HLS IP- ի համար

Վերցրեք կցված Zip ֆայլը և բացեք այն նոր թղթապանակի մեջ, որը կոչվում է նմանապես նոր գրացուցակում (թղթապանակում), որը կոչվում է «HLS_repo»:

Ձեր նախագծին ավելացրեք IP պահոց `գնալով IP կատալոգ և աջ սեղմելով ընտրեք« Ավելացնել պահեստ… »

Գնացեք դեպի ձեր «HLS_repo» գրացուցակը և ընտրեք այն:

Լրացուցիչ. Ստեղծեք HLS վիդեո մշակման բլոկ ձեզ համար:

Քայլ 26. Ավելացնել մոդուլներ և IP

Ավելացնել մոդուլներ և IP
Ավելացնել մոդուլներ և IP
Ավելացնել մոդուլներ և IP
Ավելացնել մոդուլներ և IP

Ավելացրեք ov7670_axi_stream_capture, debounce և ov7670_controller մոդուլները բլոկ -դիագրամին ՝ աջ սեղմելով ֆոնի վրա և ընտրելով «Ավելացնել մոդուլ…»

Նմանապես, ավելացրեք IP- ները.

  • HLS_Video_Track
  • Տեսանյութի շրջանակի բուֆեր գրել
  • Կադրի վիդեո շրջանակի բուֆեր
  • Տեսանյութի ժամանակի վերահսկիչ
  • AXI4-Stream to Video Out
  • 3 -րդ «շերտ»
  • Մշտական
  • 2 AXI ժմչփ

Քայլ 27: IP- ի կազմաձևման կարգավորումներ

IP- ի կազմաձևման կարգավորումներ
IP- ի կազմաձևման կարգավորումներ
IP- ի կազմաձևման կարգավորումներ
IP- ի կազմաձևման կարգավորումներ
IP- ի կազմաձևման կարգավորումներ
IP- ի կազմաձևման կարգավորումներ

Ինչպես ցույց է տրված նկարներում

Քայլ 28. Ավելացրեք և կազմաձևեք PS IP բլոկը

Ավելացնել և կարգավորել PS IP բլոկը
Ավելացնել և կարգավորել PS IP բլոկը
Ավելացնել և կարգավորել PS IP բլոկը
Ավելացնել և կարգավորել PS IP բլոկը

Ավելացրեք ZYNQ7 մշակման համակարգը բլոկ -դիագրամին

խմբագրել կազմաձևը.

  • PS-PL կազմաձևում

    • HP

      • Միացնել S HP 0 -ը
      • Միացնել S HP 1 -ը
  • Ockամացույցի կազմաձևում

    • PL Գործվածքների ժամացույցներ

      • FCLK_0 100 ՄՀց հաճախականությամբ
      • FCLK_1 25 ՄՀց հաճախականությամբ (OutputClock)
      • FLCK_2 35 ՄՀց (<= 50 ՄՀց) (CameraClock)

Քայլ 29. Մաս 1. Servo Motors- ի համար PWM մոդուլի կառուցում

Axi_timer_0 pwm0 դուրս բերեք pwm_Xaxis նոր ելքային պորտին

Բերեք axi_timer_1 pwm0 նոր ելքային պորտ pwm_Zaxis

Քայլ 30. Տեսանյութի ներածման կողային միացումներ (ընդգծված է ՝ նշելով)

Տեսանյութի մուտքի կողային կապեր
Տեսանյութի մուտքի կողային կապեր

Connectիշտ միացրեք տեսագրման մուտքի կողմի IP բլոկները

(* այս կապերը պետք է ստեղծվեն ՝ միացման ավտոմատացման ընթացքում ճիշտ ընտրանքներ ընտրելով) «aclk» axi_stream_capture- ից գնում է.

  • ap_clk վիդեո շրջանակի բուֆերի վրա գրել
  • ap_clk HLS վիդեո հոսքի մշակման բլոկի վրա
  • *AClk AXI խելացի միացման IP- ի վրա ՝ Video Frame Buffer- ից Գրել S_AXI_HP0- ին
  • *ACLK, որը համապատասխանում է AXI Interconnect IP- ի ալիքներին HLS վիդեո մշակման բլոկի S_AXI ալիքների համար և վիդեո շրջանակի բուֆերի վրա PS բլոկում գրել S_AXI_HP0_ACLK

Տեսահոսքի ազդանշանը պարզապես միացված է սերիայի մեջ ՝ գրավման բլոկից մինչև Zynq հիշողության ինտերֆեյս:

  • Տեսանյութը գրավման բլոկից անցնում է HLS մշակման բլոկի:
  • HLS բլոկից մշակված տեսանյութը գնում է շրջանակի բուֆերային գրելու բլոկ:
  • *Շրջանակի բուֆերային գրելու բլոկը միանում է Zynq PS բլոկի HP0 ինտերֆեյսի հետ:
  • Գրավման բլոկի ելքից m_axis_tuser ազդանշանը ձեռքով միացված է ինչպես HLS մշակման բլոկի տեսանյութի_ին_ՏՈERՍԵՐԻ մուտքի ազդանշանին, այնպես էլ նույն բլոկի ap_start ազդանշանին:

TUSER (tuser) ազդանշանը օգտագործվում է AXI վիդեո հոսքի արձանագրության միջոցով ՝ տեսահոլովակի շրջանակի սկիզբը նշելու համար: AP_Start- ը HLS բլոկին ասում է, որ սկսի մշակումը: Այսպիսով, մենք օգտագործում ենք tuser- ը ՝ HLS բլոկը գործարկելու համար, որպեսզի յուրաքանչյուր շրջանակ մշակի այնպես, ինչպես դա է: ներս է մտնում: Ավտոբուսի մեկ ազդանշանը միացնելիս և այն անջատելիս անհրաժեշտ է նաև այն միացնել ավտոբուսի մնացած հատվածի սովորական ավարտի կետին: Vivado- ն ենթադրում է, որ եթե դուք միացնում եք ազդանշանը ձեռքով, ապա ցանկանում եք անջատել այն, ինչին այն սովորաբար միանում էր:

IP բլոկների կազմաձևման կարգավորումներ.

Տեսանյութի շրջանակի բուֆեր գրեք

Տեսանյութի ձևաչափեր ՝ RGB8

Sampleամացույցի 1 նմուշ Առավելագույն սյուներ ՝ 1280 (> = 640) Առավելագույն տողեր ՝ 960 (> = 480) Տվյալների առավելագույն լայնություն ՝ 8

Քայլ 31. Միացումներ OV7670- ին

Միացումներ OV7670- ին
Միացումներ OV7670- ին

Ov7670_axi_stream_capture բլոկի վրա

  • Բոլոր մուտքերը դարձրեք արտաքին (աջ սեղմեք քորոցի վրա և ընտրեք ընտրացանկից, կամ ձախ կտտացրեք-> ctrl+T)
  • Անունները թողեք այնպես, ինչպես կան

Ov7670_controller բլոկի վրա

  • Արգելափակման բոլոր ելքերը դարձրեք արտաքին
  • Վերանվանել config_finished նավահանգիստը led0
  • միացրեք clk- ը CameraClock- ին (<= 50 ՄՀց) (FCLK_2)

Դեբունսի բլոկի վրա

  • button1 մուտքը միացրեք արտաքին մուտքի պորտին, որը կոչվում է btn0
  • միացրեք out1- ը ov7670_controller IP բլոկի վերագրանցման տողին
  • button2 մուտքը միացրեք արտաքին մուտքի պորտին, որը կոչվում է btn3
  • միացրեք out2n- ը ext_reset_in մուտքագրմանը Processor System Reset IP- ում `տեսագրման ժամացույցի տիրույթի համար: (*Դա կարող է անհրաժեշտ լինել անել այդ IP- ի ստեղծումից հետո*)
  • միացրեք clk- ը CameraClock- ին (<= 50 ՄՀց) (FCLK_2)

Քայլ 32. Միացումներ Video Out Side- ում

Միացումներ Video Out Side- ում
Միացումներ Video Out Side- ում
Միացումներ Video Out Side- ում
Միացումներ Video Out Side- ում
Միացումներ Video Out Side- ում
Միացումներ Video Out Side- ում
Միացումներ Video Out Side- ում
Միացումներ Video Out Side- ում

Արգելափակումների համար Video Timing Controller (VTC), AXI4-Stream to Video Out և շերտերի միացումներ

  • Օգտագործեք 25 ՄՀց ժամացույց (FCLK_1) vid_io_out_clk- ի և VTC clk- ի համար
  • Օգտագործեք 100 ՄՀց ժամացույց (FCLK_0) AXI4-Stream- ի տեսանյութերի ելքի համար aclk- ի համար
  • vtiming_out- ից vtiming_in
  • Վիդեո շրջանակի բուֆեր
  • vtg_ce գնում է gen_clken
  • ՎՏԿ -ն clken, aclken, vid_io_out_ce կապել Constant dout- ին [0: 0]
  • Vid_hsync և vid_vsync համապատասխանաբար դուրս բերեք vga_hs և vga_vs արտաքին ելքային պորտեր: (պատկերված չէ)

Շերտեր:

  • Կտրուկները պետք է տեղադրվեն այնպես, ինչպես ցույց է տրված կից նկարներում

    • բլոկները վերանվանել slice_red, slice_green և slice_ble
    • կարգաբերման հատվածը տատանվում է, ինչպես ցույց է տրված նկարներում ՝ ըստ բլոկի անվան
    • միացրեք յուրաքանչյուր հատվածի ելքը արտաքին պորտի ելքին, ինչպես ցույց է տրված նկարում:
  • vid_data [23: 0] միանում է յուրաքանչյուր հատվածի մուտքերին (Din [23: 0])

Քայլ 33: Գործարկեք Block and Connection Automation

Գործարկեք Block and Connection Automation
Գործարկեք Block and Connection Automation
Գործարկեք Block and Connection Automation
Գործարկեք Block and Connection Automation
Գործարկեք Block and Connection Automation
Գործարկեք Block and Connection Automation

Գործարկեք Block Automation- ը ՝ ZYNQ7 PS բլոկից իրերը միացնելու համար: Ինչպես ցույց է տրված նկարում:

Գործարկեք միացման ավտոմատացումը ՝ բոլոր փոխկապակցման IP- ն ստեղծելու համար: Ուշադիր ուշադրություն դարձրեք յուրաքանչյուր նկարի բոլոր տարբերակներին:

Դեբունսային բլոկում միացրեք out2n- ը տեսագրման ժամացույցի տիրույթին Processor System Reset ext_reset_in մուտքագրում:

Քայլ 34. Ստեղծեք HDL փաթաթիչ

Ստեղծեք HDL Wrapper
Ստեղծեք HDL Wrapper

Ստեղծեք HDL Wrapper ձեր բլոկի ձևավորման համար:

Սահմանեք այն որպես վերին մոդուլ:

Քայլ 35. Ստեղծեք Bitstream, Արտահանեք սարքաշար SDK- ին, գործարկեք SDK Vivado- ից

Համոզվեք, որ bitstream- ը ներառեք արտահանման մեջ:

Bitstream- ի ստեղծումը կարող է շատ երկար տևել:

Այնուհետեւ գործարկեք SDK- ն

Քայլ 36. SDK (առանց FreeRTOS)

SDK (ոչ FreeRTOS)
SDK (ոչ FreeRTOS)

Այս տարբերակը ամեն ինչ անում է առանց FreeRTOS- ի օգտագործման ՝ գեղեցիկ խտացնելով ծածկագիրը:

Ստեղծեք ինքնուրույն BSP ՝ հիմնված ապարատային դիզայնի վրա: Լռելյայն ընտրանքները պետք է լավ լինեն: Համոզվեք, որ ստեղծվել են BSP աղբյուրներ:

Ստեղծեք հավելված, ինչպես ցույց է տրված Նկարում: (դատարկ դիմում)

Deնջել ավտոգեներացված հիմնականը և ներմուծել կցված ֆայլերը:

Քայլ 37. FreeRTOS- ի ներդրում

FreeRTOS- ի ներդրում
FreeRTOS- ի ներդրում

Այս տարբերակն օգտագործում է FreeRTOS- ը: Ստեղծեք FreeRTOS901 BSP ՝ հիմնված ապարատային դիզայնի վրա: Լռելյայն ընտրանքները պետք է լավ լինեն: Համոզվեք, որ ստեղծվել են BSP աղբյուրներ:

Ստեղծեք հավելված, ինչպես ցույց է տրված Նկարում: (դատարկ դիմում)

Deնջել ավտոգեներացված հիմնականը և ներմուծել կցված ֆայլերը:

Քայլ 38. Օգտագործման հրահանգներ

Այս նախագիծը մի փոքր բարդ է գործարկելու համար: Հետևեք քայլերին ըստ հերթականության:

Համոզվեք, որ ձեր ZYBO- ն ոչինչ չի ինքնաբեռնում, երբ այն միանում է: Սա նշանակում է, որ Կատարված LED- ը չպետք է լուսավորվի: Դա անելու եղանակներից մեկն այն է, որ բեռնման աղբյուրի jumper- ը սահմանվի JTAG:

Բացեք նախագիծը (FreeRTOS, թե ոչ), որը ցանկանում եք ծրագրավորել SDK- ից

  1. Միացրեք ձեր ZYBO- ն: Կատարված LED- ը չպետք է լուսավորվի:
  2. Programրագրեք FPGA- ն բիթ ֆայլով: Կատարված LED- ը պետք է լուսավորվի: Led0- ը չպետք է լուսավորվի:
  3. Գործարկեք ծածկագիրը (հիշեք, որ դա անում եք, անցեք սկզբնական ճեղքման կետից):

Այս պահին դուք պետք է ելք ստանաք ձեր VGA էկրանին:

Վերագործարկելու համար (եթե այն սխալ է կամ որևէ այլ բան). Արագ հպեք PS-SRST կոճակին կամ անջատեք ZYBO- ն, ապա նորից միացրեք: Շարունակեք 2 -րդ քայլից:

Պրոցեսորը վրիպազերծիչի հետ կանգնեցնելու դեպքում տեսախցիկը կշարունակի պահել դիրքը ՝ տեղաշարժվելու փոխարեն: Տեսահոլովակն ամեն դեպքում կշարունակվի:

Քայլ 39. հղումներ և հղումներ

Xilinx- ի տեղեկատու ուղեցույցներ և փաստաթղթեր.

  • PG044 - AXI -Stream to Video Out
  • PG278 - Տեսանյութի շրջանակի բուֆեր Կարդալ/գրել

Այլ հղումներ.

  • Լաուրիի բլոգը `VDMA մուտքագրում
  • Լաուրիի բլոգ - OV7670 դեպի VGA ելք ՝ օգտագործելով BRAM
  • Hamsterworks վիքի, Մայք Ֆիլդսի կողմից, OV7670 ծածկագրի սկզբնական աղբյուրը
  • Տվյալների թերթիկ, որը ցույց է տալիս ժամանակի հիմնական բնութագրերը

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