Სარჩევი:
- ნაბიჯი 1: შექმენით PWM მოდული- საწყისი ფაილი
- ნაბიჯი 2: PWM მოდულის შექმნა- Vivado Setup
- ნაბიჯი 3: შექმენით PWM მოდული- შექმენით პროექტის ფაილი
- ნაბიჯი 4: PWM მოდულის შექმნა- ბლოკის დიზაინი და შეზღუდვის ფაილის დაყენება (I)
- ნაბიჯი 5: PWM მოდულის შექმნა- ბლოკის დიზაინი და შეზღუდვის ფაილის დაყენება (II)
- ნაბიჯი 6: PWM მოდულის შექმნა- ბლოკის დიზაინი და შეზღუდვის ფაილის დაყენება (III)
- ნაბიჯი 7: PWM მოდულის შექმნა- ბლოკის დიზაინი და შეზღუდვის ფაილის დაყენება (IV)
- ნაბიჯი 8: PWM მოდულის შექმნა- ბლოკის დიზაინი და შეზღუდვის ფაილის დაყენება (V)
- ნაბიჯი 9: PWM მოდულის შექმნა- აპარატურის დაყენება
- ნაბიჯი 10: შექმენით PWM მოდული- შექმენით Bitstream და გაუშვით SDK
- ნაბიჯი 11: შექმენით PWM მოდული- შექმენით ახალი პროგრამა Xilinx SDK– ში
- ნაბიჯი 12: PWM მოდულის შექმნა- პროექტის Explorer- ის მიმოხილვა (I)
- ნაბიჯი 13: PWM მოდულის შექმნა- პროექტის Explorer- ის მიმოხილვა (II)
- ნაბიჯი 14: PWM მოდულის შექმნა- პროექტის Explorer- ის მიმოხილვა (III)
- ნაბიჯი 15: PWM მოდულის შექმნა- შეავსეთ PWM ფუნქცია (I)
- ნაბიჯი 16: PWM მოდულის შექმნა- შეავსეთ PWM ფუნქცია (II)
- ნაბიჯი 17: PWM მოდულის შექმნა- შეავსეთ PWM ფუნქცია (III)
- ნაბიჯი 18: შექმენით PWM მოდული- გაუშვით
- ნაბიჯი 19: ვიდეოს დამუშავება Digilent ZYBO– ზე OV7670– ით
- ნაბიჯი 20: დაასრულეთ ბლოკის დიაგრამა
- ნაბიჯი 21: შეაერთეთ OV7670 ZYBO– სთან
- ნაბიჯი 22: შექმენით ბლოკის დიზაინი
- ნაბიჯი 23: დაამატეთ VHDL ფაილები OV7670 კამერის კონტროლისა და გადაღებისთვის
- ნაბიჯი 24: დაამატეთ შეზღუდვების ფაილი
- ნაბიჯი 25: დაამატეთ IP რეპო HLS IP– სთვის
- ნაბიჯი 26: დაამატეთ მოდულები და IP
- ნაბიჯი 27: IP კონფიგურაციის პარამეტრები
- ნაბიჯი 28: დაამატეთ და დააკონფიგურირეთ PS IP ბლოკი
- ნაბიჯი 29: ნაწილი 1. სერვო მოტორსის PWM მოდულის შექმნა
- ნაბიჯი 30: ვიდეო შეყვანის გვერდითი კავშირები (მონიშნულია აკლ)
- ნაბიჯი 31: კავშირი OV7670- თან
- ნაბიჯი 32: კავშირები ვიდეო გარეთ მხარეს
- ნაბიჯი 33: გაუშვით ბლოკი და კავშირის ავტომატიზაცია
- ნაბიჯი 34: შექმენით HDL Wrapper
- ნაბიჯი 35: შექმენით Bitstream, აწარმოეთ აპარატურა SDK– ში, გაუშვით SDK Vivado– დან
- ნაბიჯი 36: SDK (FreeRTOS– ის გარეშე)
- ნაბიჯი 37: FreeRTOS დანერგვა
- ნაბიჯი 38: გამოყენების ინსტრუქცია
- ნაბიჯი 39: მითითებები და ბმულები
ვიდეო: ZYBO OV7670 კამერა პან/დახრის კონტროლით: 39 ნაბიჯი (სურათებით)
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:20
დაიწყეთ პირველი ნაბიჯი დეტალებისთვის მხოლოდ 2 ღერძიანი servo PWM კონტროლერის შექმნის შესახებ.
დაიწყეთ მასიური ბლოკ -დიაგრამით (ნაბიჯი 19) სრული პროექტისათვის.
კამერა + პან/დახრის დაყენება ჩვენ გამოვიყენეთ:
PmodCON3 Digilent– დან გამოიყენეს სერვოების დასაკავშირებლად.
ნაბიჯი 1: შექმენით PWM მოდული- საწყისი ფაილი
ნაბიჯი 2: PWM მოდულის შექმნა- Vivado Setup
პირველი, გადმოწერეთ Vivado Design Suite Xilinx ვებგვერდიდან. დააინსტალირეთ ყველა დიზაინის კომპლექტი, მათ შორის Vivado Software Development Kit (SDK). ეს პროექტი იყენებს 2017.2 ვერსიას.
იმავდროულად, Digilent Adept 2 ასევე უნდა იყოს დაინსტალირებული როგორც Zybo დაფის დრაივერი.
ნაბიჯი 3: შექმენით PWM მოდული- შექმენით პროექტის ფაილი
სანამ პროექტის ფაილს შექმნით, უნდა დარწმუნდეთ, რომ უკვე სწორად დაინსტალირებული გაქვთ Zybo ფაილი, როგორც სახელმძღვანელო აქ:
Vivado ვერსია 2015.1 და მოგვიანებით დაფის ფაილის ინსტალაცია
გახსენით Vivado 2017.2. სწრაფი დაწყებისას დააწკაპუნეთ პროექტის შექმნაზე -> შემდეგი -> პროექტის სახელზე (დაასახელეთ თქვენი პროექტის სახელი აქ) -> პროექტის ტიპი. პროექტის ტიპზე აირჩიეთ RTL პროექტი და მონიშნეთ "არ მიუთითოთ წყაროები ამ დროს". შემდეგი, ნაგულისხმევი ნაწილისთვის აირჩიეთ "დაფები" და "ზიბო", როგორც საჩვენებელი სახელი. შემდეგი, დააწკაპუნეთ დასრულება პროექტის დასაწყებად.
ნაბიჯი 4: PWM მოდულის შექმნა- ბლოკის დიზაინი და შეზღუდვის ფაილის დაყენება (I)
Flow Navigator– ზე დააწკაპუნეთ”” ბლოკის დიზაინის შექმნაზე”, შემდეგ დააჭირეთ OK. დააწკაპუნეთ ნიშანზე "+" საჭირო IP- ების დასამატებლად. დამატება:
- ერთი ZYNQ7 დამუშავების სისტემა ორი AXI ტაიმერი
- ორი AXI ტაიმერი
ნაბიჯი 5: PWM მოდულის შექმნა- ბლოკის დიზაინი და შეზღუდვის ფაილის დაყენება (II)
IP– ების დამატების შემდეგ გაუშვით ბლოკის ავტომატიზაცია და კავშირის ავტომატიზაცია. მას შემდეგ, რაც ავტომატიზაცია დასრულდება, ბლოკზე „axi_timer_0“, დააწკაპუნეთ მარჯვენა ღილაკით pwm0 -> Make External. დაასახელეთ pwm0 გარე pin როგორც pwm_Xaxis. ასევე, გაიმეორეთ ზემოაღნიშნული პროცესი ბლოკ „axi_timer_1“- ზე და დაასახელეთ pwm0 გარე pin როგორც pwm_Zaxis.
ნაბიჯი 6: PWM მოდულის შექმნა- ბლოკის დიზაინი და შეზღუდვის ფაილის დაყენება (III)
გაითვალისწინეთ, რომ ყოველ ჯერზე, როდესაც ჩვენ დავასრულებთ ბლოკის დიზაინს Vivado– ში, ჩვენ უნდა შევქმნათ HDL Wrapper. ვინაიდან ეს იქნება უმაღლესი დონის მოდული თითოეული პროექტისათვის.
ნაბიჯი 7: PWM მოდულის შექმნა- ბლოკის დიზაინი და შეზღუდვის ფაილის დაყენება (IV)
ახლა, ჩვენ უნდა შევქმნათ ჩვენი შეზღუდვის ფაილი, რათა მივაკუთვნოთ ჩვენს ბლოკ დიაგრამასთან დაკავშირებული ქინძისთავები. დახურეთ ბლოკის დიზაინის ფანჯარა, წყაროების ჩანართზე, „წყაროების დამატება“-> დაამატეთ ან შექმენით შეზღუდვები-> დაამატეთ Zybo-Master.xdc როგორც ჩვენი შეზღუდვის ფაილები.
ნაბიჯი 8: PWM მოდულის შექმნა- ბლოკის დიზაინი და შეზღუდვის ფაილის დაყენება (V)
გახსენით შეზღუდვების ფაილი Zybo-Master.xdc შეზღუდვების საქაღალდედან, დატოვეთ კომენტარი იმ პორტებზე, რომელთა ჩვენ გვინდა გამოვყოთ როგორც გამომავალი სიგნალები და დავარქვათ „get_ports {XXXX}“, რომელიც XXXX აღნიშნავს ბლოკის დიაგრამაში დასახელებულ გარე პინს. შეზღუდვის ფაილის პარამეტრი ნაჩვენებია ფიგურაში.
ნაბიჯი 9: PWM მოდულის შექმნა- აპარატურის დაყენება
შეაერთეთ სერვო ძრავები Pmod CON3- თან. TowerPro SG90 არის სერვო ძრავის მოდელი, რომელიც ჩვენ გამოვიყენეთ ამ პროექტში. სერვო ძრავის მავთულისთვის, ნარინჯისფერი მავთული წარმოადგენს PWM სიგნალს, რომელიც დაკავშირებულია SIG პინთან Pmod CON3- ში. წითელი მავთული Vcc არის დენის მავთული, რომელიც დაკავშირებულია VS pin– თან Pmod CON3– ში. დაბოლოს, ყავისფერი მავთული Gnd არის დაფარული მავთული, რომელიც დაკავშირებულია GND პინთან. შემდეგი, ჩადეთ Pmod CON3 JD პორტის ზედა რიგში Zybo Board- ში.
ნაბიჯი 10: შექმენით PWM მოდული- შექმენით Bitstream და გაუშვით SDK
1. Project Navigator ჩანართში გაუშვით გენერირება BitStream.
2. ატვირთეთ აპარატურა: ფაილი> ექსპორტი> ექსპორტი აპარატურა-> ნიშანი "მოიცავს ბიტსტრიმს"-> OK 3. გაუშვით SDK: ფაილი-> დაიწყეთ SDK.
ნაბიჯი 11: შექმენით 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 მოდულის შექმნა- პროექტის Explorer- ის მიმოხილვა (I)
მოდით შევამოწმოთ რამდენიმე ფაილი Project Explorer– ის ქვეშ. პირველი, საქაღალდეში "design_1_wrapper_hw_platform_0" გახსენით "system.hdf". ეს ფაილი აჩვენებს პროცესორის ps7_cortex9 მისამართის რუკას და ჩვენს დიზაინში არსებული IP ბლოკებს.
ნაბიჯი 13: PWM მოდულის შექმნა- პროექტის Explorer- ის მიმოხილვა (II)
შემდეგ, შეამოწმეთ ფაილი "მოიცავს" და "libsrc" "Axis_2_PWM_SDK_bsp" საქაღალდეში. ბიბლიოთეკის ფაილები გვაძლევს საშუალებას ვითანამშრომლოთ ტექნიკის პერიფერიულ მოწყობილობებთან რეგისტრაციის გარეშე.
ნაბიჯი 14: PWM მოდულის შექმნა- პროექტის 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)
დაუბრუნდით მთავარ ფაილს "helloworld.c", შეიყვანეთ სათაურის შემდეგი ფაილები:
ნაბიჯი 16: PWM მოდულის შექმნა- შეავსეთ PWM ფუნქცია (II)
განსაზღვრეთ ორი AXI TImer- ის ძირითადი მისამართები "xparameters.h" - ის საშუალებით.
ნაბიჯი 17: PWM მოდულის შექმნა- შეავსეთ PWM ფუნქცია (III)
შექმენით სასურველი PWM ფუნქცია.
Duty_val: გადააქცევს ხარისხის მნიშვნელობას მოვალეობის ციკლში. PWM_Freq_Duty: დააყენეთ სასურველი სიხშირე და მოვალეობათა ციკლი PWM გენერირებისთვის. საათის პერიოდი ასევე უნდა დაინიშნოს.
PWM_START: მიანიჭეთ PWM რეგისტრაციის მისამართი და დაიწყეთ PWM გენერირება.
PWM_STOP: მიანიჭეთ PWM რეგისტრაციის მისამართი და შეწყვიტეთ PWM გენერირება.
დანარჩენი დემო კოდი ნაჩვენებია "helloworld.c" - ში "Axis_2_PWM_SDK".
ნაბიჯი 18: შექმენით PWM მოდული- გაუშვით
1. პროგრამირება FPGA მეშვეობით SDK
- შეაერთეთ Zybo Board USB პორტის საშუალებით კომპიუტერთან.
- Xilinx ინსტრუმენტები -> პროგრამა FPGA
2. გაუშვით პროგრამა
დააწკაპუნეთ "გაშვება" ხატულაზე და ჩამოაგდეთ მენიუ -> გაუშვით როგორც -> გაუშვით აპარატურაზე
3. SDK ტერმინალი
- გახსენით SDK ტერმინალი -> დაკავშირება სერიულ პორტთან -> OK
- გაუშვით პროგრამა. თუ დემო კოდი წარმატებით მუშაობს, თქვენ უნდა ნახოთ "ინიციალიზაცია დასრულებულია!" SDK ტერმინალზე.
ნაბიჯი 19: ვიდეოს დამუშავება Digilent ZYBO– ზე OV7670– ით
დართულია არქივის სრული ფაილი.
ნაბიჯი 20: დაასრულეთ ბლოკის დიაგრამა
ეს გვიჩვენებს პროექტში ყველა კავშირისა და IP ბლოკის სრულ დიაგრამას
ნაბიჯი 21: შეაერთეთ OV7670 ZYBO– სთან
შექმენით კავშირი ov7670 მოდულის მავთულხლართზე ZYBO Pmods
მონაცემთა Pmod არის Pmod D
საკონტროლო Pmod არის Pmod C
გარდა ამისა, დააკავშირეთ PmodCON3 და სერვისები, როგორც ეს მითითებულია ამ გაკვეთილის პირველ ნახევარში
ნაბიჯი 22: შექმენით ბლოკის დიზაინი
Flow Navigator– ში დააწკაპუნეთ „ბლოკის დიზაინის შექმნაზე“, შემდეგ დააჭირეთ OK.
ნაბიჯი 23: დაამატეთ VHDL ფაილები OV7670 კამერის კონტროლისა და გადაღებისთვის
დაამატეთ პროექტზე ამ საფეხურზე თანდართული VHDL ფაილები
ნაბიჯი 24: დაამატეთ შეზღუდვების ფაილი
დაამატეთ თანდართული შეზღუდვების ფაილი თქვენს პროექტს.
ნაბიჯი 25: დაამატეთ IP რეპო HLS IP– სთვის
აიღეთ თანდართული Zip ფაილი და გახსენით იგი ახალ საქაღალდეში, სახელწოდებით ახალ დირექტორიაში (საქაღალდეში) სახელწოდებით "HLS_repo".
დაამატეთ IP საცავი თქვენს პროექტს, გადადით IP კატალოგში და დააწკაპუნეთ მარჯვენა ღილაკით, აირჩიეთ "საცავის დამატება …"
გადადით თქვენს "HLS_repo" დირექტორიაში და შეარჩიეთ იგი.
სურვილისამებრ: შექმენით HLS ვიდეო დამუშავების ბლოკი თქვენთვის!
ნაბიჯი 26: დაამატეთ მოდულები და IP
დაამატეთ ov7670_axi_stream_capture, debounce და ov7670_controller მოდულები ბლოკ დიაგრამაზე ფონის მარჯვენა დაწკაპუნებით და "მოდულის დამატება …" არჩევით.
ანალოგიურად, დაამატეთ IP მისამართები:
- HLS_Video_Track
- ვიდეო ჩარჩოს ბუფერული ჩაწერა
- ვიდეო ჩარჩოს ბუფერი წაკითხულია
- ვიდეო დროის კონტროლერი
- AXI4-ნაკადი ვიდეოდან
- 3 "ნაჭერი"
- მუდმივი
- 2 AXI ტაიმერი
ნაბიჯი 27: IP კონფიგურაციის პარამეტრები
როგორც სურათებშია ნაჩვენები
ნაბიჯი 28: დაამატეთ და დააკონფიგურირეთ PS IP ბლოკი
დაამატეთ ZYNQ7 დამუშავების სისტემა ბლოკ დიაგრამაზე
შეცვალეთ კონფიგურაცია:
-
PS-PL კონფიგურაცია
-
HP
- ჩართეთ S HP 0
- ჩართეთ S HP 1
-
-
საათის კონფიგურაცია
-
PL ნაჭრის საათები
- FCLK_0 100 მეგაჰერცზე
- FCLK_1 25 MHz (OutputClock)
- FLCK_2 35 MHz (<= 50 MHz) (CameraClock)
-
ნაბიჯი 29: ნაწილი 1. სერვო მოტორსის PWM მოდულის შექმნა
ამოიღეთ axi_timer_0 pwm0 ახალ გამომავალ პორტში pwm_Xaxis
გამოიყვანეთ axi_timer_1 pwm0 ახალ გამომავალ პორტში pwm_Zaxis
ნაბიჯი 30: ვიდეო შეყვანის გვერდითი კავშირები (მონიშნულია აკლ)
სწორად შეაერთეთ ვიდეო შეყვანის გვერდითი IP ბლოკები
(* ეს კავშირები უნდა შეიქმნას კავშირის ავტომატიზაციის დროს სწორი ვარიანტების შერჩევით) "aclk" axi_stream_capture მიდის:
- ap_clk ვიდეო ჩარჩოს ბუფერულ ჩაწერაზე
- ap_clk HLS ვიდეო ნაკადის დამუშავების ბლოკზე
- *გაეცანით AXI smartconnect IP– ს ვიდეო ჩარჩოს ბუფერიდან ჩაწერეთ S_AXI_HP0– ზე
- *ACLK, რომელიც შეესაბამება AXI ინტერკონექციის IP არხებს HLS ვიდეო დამუშავების ბლოკის S_AXI არხებისთვის და ვიდეო ჩარჩოს ბუფერული ჩაწერეთ S_AXI_HP0_ACLK PS ბლოკში
ვიდეო ნაკადის სიგნალი უბრალოდ სერიულად არის დაკავშირებული გადაღების ბლოკიდან Zynq მეხსიერების ინტერფეისთან.
- ვიდეო გადადის გადაღების ბლოკიდან HLS დამუშავების ბლოკში.
- HLS ბლოკიდან დამუშავებული ვიდეო გადადის ჩარჩო ბუფერის ჩაწერის ბლოკში.
- *ჩარჩო ბუფერის ჩაწერის ბლოკი უკავშირდება HP0 ინტერფეისს Zynq PS ბლოკში.
- M_axis_tuser სიგნალი გადაღების ბლოკის გამომავალი ხელით არის დაკავშირებული როგორც HLS დამუშავების ბლოკზე ვიდეო_ინ_ტუსერში, ასევე იმავე ბლოკზე ap_start სიგნალზე.
TUSER (tuser) სიგნალი გამოიყენება AXI ვიდეო ნაკადის პროტოკოლით, რათა მიუთითოს ვიდეოს ჩარჩოს დაწყება. AP_Start ეუბნება HLS ბლოკს, რომ დაიწყოს დამუშავება. ჩვენ ამგვარად ვიყენებთ tuser- ს, რათა გამოიწვიოს HLS ბლოკი თითოეული ჩარჩოს დამუშავებისათვის შემოდის. ავტობუსის ერთი სიგნალის შეერთებისას და მისი გაყოფისას, თქვენ ასევე უნდა დააკავშიროთ იგი ავტობუსის დანარჩენი ნორმალური ტერმინალის წერტილთან. Vivado ვარაუდობს, რომ თუ თქვენ აკავშირებთ სიგნალს ხელით, რომ გსურთ გათიშოთ ის, რასაც ჩვეულებრივ დაუკავშირდებოდა.
IP ბლოკების კონფიგურაციის პარამეტრები:
ვიდეო ჩარჩოს ბუფერი ჩაწერეთ:
ვიდეო ფორმატები: RGB8
საათში 1 ნიმუში მაქსიმალური სვეტები: 1280 (> = 640) მაქსიმალური რიგები: 960 (> = 480) მონაცემთა მაქსიმალური სიგანე: 8
ნაბიჯი 31: კავშირი OV7670- თან
Ov7670_axi_stream_capture ბლოკზე
- გააკეთეთ ყველა შეყვანა გარედან (დააწკაპუნეთ მარჯვენა ღილაკით პინზე და აირჩიეთ მენიუდან, ან მარცხენა დაწკაპუნება-> ctrl+T)
- დატოვე სახელები ისეთი, როგორიც არის
Ov7670_controller ბლოკზე
- ბლოკის ყველა გამოსავალი გარეგანი გახადეთ
- შეცვალეთ config_finished პორტი led0
- clk დაკავშირება CameraClock- თან (<= 50MHz) (FCLK_2)
სადებიუტო ბლოკზე
- დააკავშირეთ ღილაკი 1 შეყვანის გარე შეყვანის პორტს, რომელსაც ეწოდება btn0
- დაუკავშირეთ out1 ხელახლა გაგზავნის ხაზს ov7670_controller IP ბლოკში
- დააკავშირეთ ღილაკი 2 შესასვლელი გარე შეყვანის პორტთან, რომელსაც ეწოდება btn3
- დააკავშირეთ out2n ext_reset_in შეყვანის პროცესორის სისტემის გადატვირთვის IP ვიდეო გადაღების საათის დომენისთვის. (*ეს შეიძლება საჭირო გახდეს IP– ის გენერირების შემდეგ*)
- clk დაკავშირება CameraClock- თან (<= 50MHz) (FCLK_2)
ნაბიჯი 32: კავშირები ვიდეო გარეთ მხარეს
კავშირები ბლოკებისთვის ვიდეო დროის კონტროლერი (VTC), AXI4-Stream to Video Out და ნაჭრები
- გამოიყენეთ 25MHz საათი (FCLK_1) vid_io_out_clk და VTC clk
- გამოიყენეთ 100MHz საათი (FCLK_0) aclk– ზე AXI4– სტრიუმზე ვიდეოს გამოსასვლელად
- vtiming_out to vtiming_in
- ვიდეოს ჩარჩოს ბუფერი
- vtg_ce გადადის gen_clken– ზე
- მიაბით VTC clken, aclken, vid_io_out_ce მუდმივ დუტს [0: 0]
- გამოიყვანეთ vid_hsync და vid_vsync გარე გამომავალი პორტებში vga_hs და vga_vs, შესაბამისად. (სურათზე არაა)
ნაჭრები:
-
ნაჭრები უნდა იყოს დაყენებული, როგორც ეს მოცემულია თანდართულ სურათებში
- გადაარქვით ბლოკებს slice_red, slice_green და slice_blu
- ბლოკის სახელის მიხედვით ნაჭრების დიაპაზონის დაყენება
- დააკავშირეთ თითოეული ნაჭერი გამომავალი გარე პორტის გამომუშავებასთან, როგორც ეს ნაჩვენებია სურათზე.
- vid_data [23: 0] აკავშირებს თითოეული ნაჭრის შესასვლელთან (Din [23: 0])
ნაბიჯი 33: გაუშვით ბლოკი და კავშირის ავტომატიზაცია
გაუშვით ბლოკის ავტომატიზაცია ZYNQ7 PS ბლოკიდან ნივთების დასაკავშირებლად. როგორც ნაჩვენებია სურათზე.
გაუშვით კავშირის ავტომატიზაცია, რათა შეიქმნას ყველა კავშირის IP. დიდი ყურადღება მიაქციეთ თითოეულ სურათზე მოცემულ ყველა ვარიანტს.
დებიუნციის ბლოკზე, დაუკავშირდით out2n ვიდეო გადაღების საათის დომენს პროცესორის სისტემის გადატვირთვა ext_reset_ in input.
ნაბიჯი 34: შექმენით HDL Wrapper
შექმენით HDL Wrapper თქვენი ბლოკის დიზაინისთვის.
დააყენეთ ის, როგორც ზედა მოდული.
ნაბიჯი 35: შექმენით Bitstream, აწარმოეთ აპარატურა SDK– ში, გაუშვით SDK Vivado– დან
დარწმუნდით, რომ ჩართეთ ბიტ სტრიმი ექსპორტში.
ბიტ სტრიმის წარმოქმნას შეიძლება ძალიან დიდი დრო დასჭირდეს.
შემდეგ გაუშვით SDK
ნაბიჯი 36: SDK (FreeRTOS– ის გარეშე)
ეს ვერსია ყველაფერს აკეთებს FreeRTOS– ის გამოყენების გარეშე, კოდის ლამაზად კონდენსაციისას.
შექმენით დამოუკიდებელი BSP ტექნიკის დიზაინის საფუძველზე. ნაგულისხმევი პარამეტრები კარგად უნდა იყოს. დარწმუნდით, რომ შეიქმნა BSP წყაროები.
შექმენით აპლიკაცია, როგორც ნაჩვენებია სურათზე. (ცარიელი აპლიკაცია)
წაშალეთ ავტოგენერირებული მთავარი და შემოიტანეთ თანდართული ფაილები.
ნაბიჯი 37: FreeRTOS დანერგვა
ეს ვერსია იყენებს FreeRTOS- ს. შექმენით FreeRTOS901 BSP ტექნიკის დიზაინის საფუძველზე. ნაგულისხმევი პარამეტრები კარგად უნდა იყოს. დარწმუნდით, რომ შეიქმნა BSP წყაროები.
შექმენით აპლიკაცია, როგორც ნაჩვენებია სურათზე. (ცარიელი აპლიკაცია)
წაშალეთ ავტოგენერირებული მთავარი და შემოიტანეთ თანდართული ფაილები.
ნაბიჯი 38: გამოყენების ინსტრუქცია
ეს პროექტი ცოტა სახიფათოა გასაშვებად. მიჰყევით ნაბიჯებს თანმიმდევრობით.
დარწმუნდით, რომ თქვენი ZYBO არ იტვირთება არაფერს, როდესაც ის ირთვება. ეს ნიშნავს, რომ შესრულებული LED არ უნდა ანათებდეს. ამის ერთ -ერთი გზაა ჩატვირთვის წყაროს ჯუმპერის დაყენება JTAG- ზე.
გახსენით პროექტი (FreeRTOS თუ არა), რომლის დაპროგრამებაც გსურთ SDK– დან
- ჩართეთ თქვენი ZYBO. შესრულებული LED არ უნდა ანათებდეს.
- პროგრამირება FPGA ბიტი ფაილით. შესრულებული LED უნდა აანთოს. Led0 არ უნდა ანათებდეს.
- გაუშვით კოდი (დაიმახსოვრეთ, რომ გასცდით საწყის შესვენების წერტილს, თუ ამას აკეთებთ).
ამ დროს თქვენ უნდა მიიღოთ გამოსავალი თქვენს VGA ეკრანზე.
გადატვირთვისთვის (თუ ის გაუმართავია ან რა): სწრაფად შეეხეთ PS-SRST ღილაკს ან გამორთეთ ZYBO და შემდეგ ისევ ჩართეთ. განაგრძეთ ნაბიჯი 2.
პროცესორის გამართვის აღმოფხვრა გამოიწვევს კამერის პოზიციის შენარჩუნებას მოძრაობის ნაცვლად. ვიდეო ნაკადი მაინც გაგრძელდება.
ნაბიჯი 39: მითითებები და ბმულები
Xilinx საცნობარო სახელმძღვანელო და დოკუმენტაცია:
- PG044 - AXI -Stream to Video Out
- PG278 - ვიდეო ჩარჩოს ბუფერი კითხვა/წერა
სხვა ბმულები:
- ლაურის ბლოგი - VDMA შეყვანა
- ლაურის ბლოგი - OV7670 to VGA გამომავალი BRAM გამოყენებით
- Hamsterworks ვიკი, მაიკ ფილდსის მიერ, OV7670 კოდის საწყისი წყარო
- მონაცემთა ცხრილი აჩვენებს დროის ძირითად მახასიათებლებს
გირჩევთ:
მარტივი დახრის დაფუძნებული ფერის შეცვლა უკაბელო რუბიკის კუბის ნათურა: 10 ნაბიჯი (სურათებით)
მარტივი დახრის დაფუძნებული ფერი იცვლება უსადენო რუბიკის კუბის ნათურა: დღეს ჩვენ ვაშენებთ ამ გასაოცარ რუბიკის კუბურ ლამპარს, რომელიც იცვლის ფერს იმის მიხედვით, თუ რომელი მხარეა ზემოთ. კუბი მუშაობს პატარა LiPo ბატარეაზე, დამუხტული სტანდარტული მიკრო USB კაბელით და, ჩემი ტესტირებისას, აქვს ბატარეის ხანგრძლივობა რამდენიმე დღე. ეს
სამკუთხედი წინა დახრის ძრავით .: 5 ნაბიჯი (სურათებით)
ტრიკოპტერი წინა დახრის ძრავით: ასე რომ, ეს არის პატარა ექსპერიმენტი, რომელიც იმედია მიგვიყვანს ჰიბრიდულ ტრიკოპტერზე/გიროკოპტერზე? ასე რომ, ამ სამგზავროში ნამდვილად არაფერია ახალი, ის ძირითადად იგივეა, რაც ჩემი ჩვეულებრივი ტრიკოპტერი, როგორც ეს ნაჩვენებია ინსტრუქციებში. თუმცა ეს უკვე დიდი ხანია
პან დახრა აკონტროლებს მობილურ ტელეფონს: 4 ნაბიჯი
Pan Tilt აკონტროლებს მობილური ტელეფონი: გამარჯობა ყველას, ამ ჩემს ახალ პროექტში მე გაგაცნობთ Pan-Tilt- ს, რომელსაც აკონტროლებს მობილური ტელეფონი. მობილური ტელეფონის ყველა მოძრაობა რეპროდუცირდება პან-დახრის მოწყობილობაში Bluetooth- ის საშუალებით. კონსტრუქცია ძალიან მარტივი Arduino R3 (ან მსგავსი) და ორი
მათხოვარი რობოტი სახის კონტროლით და კონტროლით Xbox Controller - Arduino: 9 ნაბიჯი (სურათებით)
მათხოვარი რობოტი სახის კონტროლით და კონტროლი Xbox კონტროლერის მიერ - არდუინო: ჩვენ ვაპირებთ შევქმნათ მათხოვარი რობოტი. ეს რობოტი შეეცდება გააღიზიანოს ან მიიქციოს გამვლელ ადამიანთა ყურადღება. ის გამოავლენს მათ სახეებს და შეეცდება მათზე ლაზერების გადაღებას. თუ რობოტს მონეტას აძლევთ, ის იმღერებს სიმღერას და იცეკვებს. რობოტს დასჭირდება
დისტანციური მართვის პან და დახრის თავი: 7 ნაბიჯი
დისტანციური მართვის პან და დახრის თავი: მე ყოველთვის მინდოდა დისტანციური მართვის ტაფა და დახრის თავი. შესაძლოა, ეს იყო ჩემი ვიდეოკამერისთვის, რეზინის ზოლის მსროლელისთვის ან წყლის იარაღის გამანადგურებლისთვის. ნამდვილად არ აქვს მნიშვნელობა რას დადებთ ზედა გემბანზე (სანამ ის არ არის ძალიან მძიმე), ამ პატარა პროექტით თქვენ