সুচিপত্র:

প্যান/টিল্ট কন্ট্রোল সহ ZYBO OV7670 ক্যামেরা: 39 টি ধাপ (ছবি সহ)
প্যান/টিল্ট কন্ট্রোল সহ ZYBO OV7670 ক্যামেরা: 39 টি ধাপ (ছবি সহ)

ভিডিও: প্যান/টিল্ট কন্ট্রোল সহ ZYBO OV7670 ক্যামেরা: 39 টি ধাপ (ছবি সহ)

ভিডিও: প্যান/টিল্ট কন্ট্রোল সহ ZYBO OV7670 ক্যামেরা: 39 টি ধাপ (ছবি সহ)
ভিডিও: Surveillance Car with ESP32 cam module & pan-tilt control 2024, নভেম্বর
Anonim
Image
Image
প্যান/টিল্ট কন্ট্রোল সহ ZYBO OV7670 ক্যামেরা
প্যান/টিল্ট কন্ট্রোল সহ ZYBO OV7670 ক্যামেরা

শুধু একটি 2-অক্ষের সার্ভো PWM কন্ট্রোলার তৈরির বিষয়ে বিস্তারিত জানার জন্য প্রথম ধাপে শুরু করুন।

সম্পূর্ণ প্রকল্পের জন্য বিশাল ব্লক ডায়াগ্রাম (ধাপ 19) থেকে শুরু করুন।

ক্যামেরা + প্যান/টিল্ট সেটআপ আমরা ব্যবহার করেছি:

ডিজিলেন্ট থেকে PmodCON3 সার্ভিস সংযোগ করার জন্য ব্যবহার করা হয়েছিল।

ধাপ 1: একটি PWM মডিউল তৈরি করা- উৎস ফাইল

ধাপ 2: একটি PWM মডিউল তৈরি করা- ভিভাদো সেটআপ

একটি PWM মডিউল তৈরি- Vivado সেটআপ
একটি PWM মডিউল তৈরি- Vivado সেটআপ

প্রথমে Xilinx ওয়েবসাইট থেকে Vivado Design Suite ডাউনলোড করুন। ভিভাদো সফটওয়্যার ডেভেলপমেন্ট কিট (এসডিকে) সহ সমস্ত ডিজাইন স্যুট ইনস্টল করুন। এই প্রকল্প 2017.2 সংস্করণ ব্যবহার করে।

ইতিমধ্যে, ডিজিলেন্ট অ্যাডপ্ট 2 একটি জাইবো বোর্ড ড্রাইভার হিসাবে ইনস্টল করা উচিত।

ধাপ 3: একটি PWM মডিউল তৈরি করা- একটি প্রকল্প ফাইল তৈরি করুন

একটি PWM মডিউল তৈরি করা- একটি প্রকল্প ফাইল তৈরি করুন
একটি PWM মডিউল তৈরি করা- একটি প্রকল্প ফাইল তৈরি করুন

একটি প্রজেক্ট ফাইল তৈরি করার আগে, আপনাকে নিশ্চিত করতে হবে যে আপনি এখানে টিউটোরিয়াল হিসাবে জাইবো ফাইলটি সঠিকভাবে ইনস্টল করেছেন:

ভিভাদো সংস্করণ 2015.1 এবং পরে বোর্ড ফাইল ইনস্টলেশন

Vivado 2017.2 খুলুন। কুইক স্টার্টে, প্রজেক্ট তৈরি করুন -> পরবর্তী -> প্রকল্পের নাম (এখানে আপনার প্রকল্পের নাম দিন) -> প্রকল্পের ধরনে ক্লিক করুন। প্রকল্পের প্রকারে, আরটিএল প্রকল্প নির্বাচন করুন এবং "এই সময়ে উত্স নির্দিষ্ট করবেন না" চিহ্নিত করুন। পরবর্তী, ডিফল্ট অংশের জন্য, ডিসপ্লে নাম হিসাবে "বোর্ড" এবং "জাইবো" নির্বাচন করুন। পরবর্তী, প্রকল্পটি শুরু করতে শেষ ক্লিক করুন।

ধাপ 4: একটি PWM মডিউল তৈরি করা- ব্লক ডিজাইন এবং কনস্ট্রেন্ট ফাইল সেটিং (I)

একটি PWM মডিউল তৈরি করা- ব্লক ডিজাইন এবং কনস্ট্রেন্ট ফাইল সেটিং (I)
একটি PWM মডিউল তৈরি করা- ব্লক ডিজাইন এবং কনস্ট্রেন্ট ফাইল সেটিং (I)

ফ্লো নেভিগেটরে, "" ব্লক ডিজাইন তৈরি করুন "এ ক্লিক করুন, তারপরে ওকে টিপুন। প্রয়োজনীয় আইপি যোগ করতে "+" চিহ্নটিতে ক্লিক করুন। যোগ করুন:

  • একটি ZYNQ7 প্রসেসিং সিস্টেম দুই AXI টাইমার
  • দুই AXI টাইমার

ধাপ 5: একটি PWM মডিউল তৈরি করা- ব্লক ডিজাইন এবং কনস্ট্রেন্ট ফাইল সেটিং (II)

একটি PWM মডিউল তৈরি করা- ব্লক ডিজাইন এবং কনস্ট্রেন্ট ফাইল সেটিং (II)
একটি PWM মডিউল তৈরি করা- ব্লক ডিজাইন এবং কনস্ট্রেন্ট ফাইল সেটিং (II)

আইপি যুক্ত করার পরে, ব্লক অটোমেশন এবং সংযোগ অটোমেশন চালান। একবার অটোমেশন সম্পন্ন হলে, ব্লক “axi_timer_0” এ, pwm0 -> Make External এ ডান ক্লিক করুন। Pwm0 বহিরাগত পিনের নাম pwm_Xaxis। এছাড়াও, "axi_timer_1" ব্লকে উপরের প্রক্রিয়াটি পুনরাবৃত্তি করুন এবং pwm0 বহিরাগত পিনের নাম pwm_Zaxis দিন।

ধাপ 6: একটি PWM মডিউল তৈরি করা- ব্লক ডিজাইন এবং কনস্ট্রেন্ট ফাইল সেটিং (III)

একটি PWM মডিউল তৈরি করা- ব্লক ডিজাইন এবং কনস্ট্রেন্ট ফাইল সেটিং (III)
একটি PWM মডিউল তৈরি করা- ব্লক ডিজাইন এবং কনস্ট্রেন্ট ফাইল সেটিং (III)

লক্ষ্য করুন প্রতিবার যখন আমরা ভিভাদোতে ব্লক ডিজাইন শেষ করি, তখন আমাদের একটি এইচডিএল মোড়ক তৈরি করতে হবে। যেহেতু এটি প্রতিটি প্রকল্পের জন্য শীর্ষ স্তরের মডিউল হবে।

ধাপ 7: একটি PWM মডিউল তৈরি করা- ব্লক ডিজাইন এবং কনস্ট্রেন্ট ফাইল সেটিং (IV)

একটি PWM মডিউল তৈরি করা- ব্লক ডিজাইন এবং কনস্ট্রেন্ট ফাইল সেটিং (IV)
একটি PWM মডিউল তৈরি করা- ব্লক ডিজাইন এবং কনস্ট্রেন্ট ফাইল সেটিং (IV)

এখন, আমাদের ব্লক ডায়াগ্রামের সাথে সংযুক্ত পিনগুলি বরাদ্দ করতে আমাদের সীমাবদ্ধতা ফাইল সেট আপ করতে হবে। ব্লক ডিজাইন উইন্ডো বন্ধ করুন, সোর্স ট্যাবে, "উৎস যোগ করুন"-> সীমাবদ্ধতা যোগ করুন বা তৈরি করুন-> আমাদের সীমাবদ্ধতা ফাইল হিসাবে Zybo-Master.xdc যোগ করুন।

ধাপ 8: একটি PWM মডিউল তৈরি করা- ব্লক ডিজাইন এবং কনস্ট্রেন্ট ফাইল সেটিং (V)

একটি PWM মডিউল তৈরি করা- ব্লক ডিজাইন এবং কনস্ট্রেন্ট ফাইল সেটিং (V)
একটি PWM মডিউল তৈরি করা- ব্লক ডিজাইন এবং কনস্ট্রেন্ট ফাইল সেটিং (V)

সীমাবদ্ধতা ফোল্ডার থেকে Zybo-Master.xdc নামক সীমাবদ্ধতা ফাইলটি খুলুন, যেসব পোর্টগুলিকে আমরা আউটপুট সিগন্যাল হিসাবে উল্লেখ করতে চাই সেগুলিকে অসম্পূর্ণ করুন এবং “get_ports {XXXX}” নামকরণ করুন, যা XXXX ব্লক ডায়াগ্রামে নাম দেওয়া বাহ্যিক পিনকে নির্দেশ করে। সীমাবদ্ধতা ফাইলের সেটিং চিত্রে দেখানো হয়েছে।

ধাপ 9: একটি PWM মডিউল তৈরি করা- হার্ডওয়্যার ইনস্টলেশন

একটি PWM মডিউল নির্মাণ- হার্ডওয়্যার ইনস্টলেশন
একটি PWM মডিউল নির্মাণ- হার্ডওয়্যার ইনস্টলেশন

Pmod CON3 এর সাথে সার্ভো মোটর সংযুক্ত করুন। TowerPro SG90 হল সার্ভো মোটর মডেল যা আমরা এই প্রকল্পে ব্যবহার করেছি। Servo মোটর তারের জন্য, কমলা তারের PWM সংকেত প্রতিনিধিত্ব করে, Pmod CON3 এ SIG পিনের সাথে সংযুক্ত। লাল তারের Vcc হল Pmod CON3 এ VS পিনের সাথে সংযুক্ত একটি পাওয়ার তার। অবশেষে, বাদামী তারের Gnd হল GND পিনের সাথে সংযুক্ত একটি স্থল তার। পরবর্তীতে, Zybo বোর্ডে JD পোর্টের উপরের সারিতে Pmod CON3 োকান।

ধাপ 10: একটি PWM মডিউল তৈরি করা- বিটস্ট্রিম তৈরি করুন এবং SDK চালু করুন

1. প্রকল্প ন্যাভিগেটর ট্যাবে, জেনারেট বিটস্ট্রিম চালান।

2. এক্সপোর্ট হার্ডওয়্যার: ফাইল> এক্সপোর্ট> এক্সপোর্ট হার্ডওয়্যার-> "বিটস্ট্রিম অন্তর্ভুক্ত করুন"-> ঠিক আছে 3. লঞ্চ এসডিকে: ফাইল-> এসডিকে চালু করুন।

ধাপ 11: একটি PWM মডিউল তৈরি করা- Xilinx SDK তে একটি নতুন অ্যাপ্লিকেশন তৈরি করুন

একটি PWM মডিউল তৈরি করা- Xilinx SDK তে একটি নতুন অ্যাপ্লিকেশন তৈরি করুন
একটি PWM মডিউল তৈরি করা- Xilinx SDK তে একটি নতুন অ্যাপ্লিকেশন তৈরি করুন

একটি নতুন অ্যাপ্লিকেশন তৈরি করুন:

ফাইল> নতুন> অ্যাপ্লিকেশন প্রকল্প -> আপনার প্রকল্পের নাম লিখুন -> শেষ করুন

প্রকল্প এক্সপ্লোরারের অধীনে, তিনটি ফোল্ডার থাকা উচিত।

এই ক্ষেত্রে, “design_1_wrapper_hw_platform_0” হল সেই ফোল্ডার যা আগে ভিভাডো রপ্তানি করেছিল। Axis_2_PWM_SDK_bsp হল বোর্ড সাপোর্ট প্যাকেজ ফোল্ডার। এবং Axis_2_PWM_SDK হল SDK তে আমাদের প্রধান প্রকল্প ফোল্ডার। আপনি Axis_2_PWM_SDK এর "src" ফোল্ডারের অধীনে "helloworld.c" ফাইলটি দেখতে পারেন, যেখানে "helloworld.c" প্রধান ফাইল।

ধাপ 12: একটি PWM মডিউল তৈরি করা- প্রকল্প এক্সপ্লোরার (I) এর ওভারভিউ

একটি PWM মডিউল তৈরি করা- প্রকল্প এক্সপ্লোরার (I) এর ওভারভিউ
একটি PWM মডিউল তৈরি করা- প্রকল্প এক্সপ্লোরার (I) এর ওভারভিউ

প্রকল্প এক্সপ্লোরারের অধীনে কিছু ফাইল পরীক্ষা করা যাক। প্রথমে, "design_1_wrapper_hw_platform_0" ফোল্ডারে, "system.hdf" খুলুন। এই ফাইলটি প্রসেসর ps7_cortex9 এবং আমাদের নকশায় উপস্থিত আইপি ব্লকের ঠিকানা মানচিত্র প্রদর্শন করে।

ধাপ 13: একটি PWM মডিউল তৈরি করা- প্রকল্প এক্সপ্লোরার (II) এর ওভারভিউ

একটি পিডব্লিউএম মডিউল তৈরি করা- প্রকল্প এক্সপ্লোরারের সংক্ষিপ্ত বিবরণ (II)
একটি পিডব্লিউএম মডিউল তৈরি করা- প্রকল্প এক্সপ্লোরারের সংক্ষিপ্ত বিবরণ (II)

তারপর, "Axis_2_PWM_SDK_bsp" ফোল্ডারের অধীনে "অন্তর্ভুক্ত করুন" এবং "libsrc" ফাইলটি পরীক্ষা করুন। এখানে লাইব্রেরির ফাইলগুলি আমাদের "প্লে" রেজিস্টার ছাড়াই হার্ডওয়্যার পেরিফেরালগুলির সাথে যোগাযোগ করতে সক্ষম করে।

ধাপ 14: একটি PWM মডিউল তৈরি করা- প্রকল্প এক্সপ্লোরারের সংক্ষিপ্ত বিবরণ (III)

একটি পিডব্লিউএম মডিউল তৈরি করা- প্রকল্প এক্সপ্লোরারের সংক্ষিপ্ত বিবরণ (III)
একটি পিডব্লিউএম মডিউল তৈরি করা- প্রকল্প এক্সপ্লোরারের সংক্ষিপ্ত বিবরণ (III)

BSP ডকুমেন্টেশনের মাধ্যমে, xtmrctr.h AXI টাইমার সম্পর্কিত Xilinx টাইমার কন্ট্রোল লাইব্রেরি হিসাবে পাওয়া যায়। সাধারণত, আমরা এখানে পছন্দসই PWM ফাংশন খুঁজে পেতে পারি। যাইহোক, যদি আপনি ডকুমেন্টেশন "tmrctr_v4_3" পড়েন, তাহলে দেখা যাচ্ছে যে ড্রাইভার বর্তমানে ডিভাইসের PWM অপারেশন সমর্থন করে না। PWM ফাংশনে ঘাটতির কারণে, আমাদের xtmrctr.h এবং AXI টাইমার v2.0 LogiCORE IP প্রোডাক্ট গাইডের সাহায্যে আমাদের PWM ফাংশনটি গুটিয়ে নিতে হবে।

ধাপ 15: একটি PWM মডিউল তৈরি করা- PWM ফাংশনটি মোড়ানো (I)

একটি PWM মডিউল নির্মাণ- PWM ফাংশন মোড়ানো (I)
একটি PWM মডিউল নির্মাণ- PWM ফাংশন মোড়ানো (I)

মূল ফাইল "helloworld.c" এ ফিরে যান, নিম্নলিখিত শিরোনাম ফাইলগুলি অন্তর্ভুক্ত করুন:

ধাপ 16: একটি PWM মডিউল নির্মাণ- PWM ফাংশন মোড়ানো (II)

একটি PWM মডিউল নির্মাণ- PWM ফাংশন মোড়ানো (II)
একটি PWM মডিউল নির্মাণ- PWM ফাংশন মোড়ানো (II)

"Xparameters.h" এর মাধ্যমে দুটি AXI TImer- এর বেস ঠিকানা নির্ধারণ করুন।

ধাপ 17: একটি PWM মডিউল তৈরি করা- PWM ফাংশন মোড়ানো (III)

একটি PWM মডিউল নির্মাণ- PWM ফাংশন মোড়ানো (III)
একটি PWM মডিউল নির্মাণ- PWM ফাংশন মোড়ানো (III)

পছন্দসই PWM ফাংশন তৈরি করুন।

ডিউটি_ভাল: ডিগ্রি মানকে ডিউটি চক্রে রূপান্তরিত করে। ঘড়ির সময়ও বরাদ্দ করা উচিত।

PWM_START: PWM রেজিস্টার ঠিকানা বরাদ্দ করুন এবং PWM তৈরি করা শুরু করুন।

PWM_STOP: PWM রেজিস্টার ঠিকানা বরাদ্দ করুন এবং PWM তৈরি বন্ধ করুন।

বাকী ডেমো কোডটি "অ্যাক্সিস_2_PWM_SDK" এর অধীনে "helloworld.c" এ দেখানো হয়েছে

ধাপ 18: একটি PWM মডিউল তৈরি করা- এটি চালান

1. SDK এর মাধ্যমে FPGA প্রোগ্রাম করুন

  • ইউএসবি পোর্টের মাধ্যমে জাইবো বোর্ডকে পিসিতে সংযুক্ত করুন।
  • Xilinx সরঞ্জাম -> প্রোগ্রাম FPGA

2. প্রোগ্রাম চালান

"রান" আইকনে ক্লিক করুন এবং মেনু ড্রপ ডাউন করুন -> এইভাবে চালান -> হার্ডওয়্যারে চালু করুন

3. এসডিকে টার্মিনাল

  • এসডিকে টার্মিনাল খুলুন -> সিরিয়াল পোর্টে সংযোগ করুন -> ঠিক আছে
  • প্রোগ্রাম চালান। যদি ডেমো কোড সফলভাবে চলতে থাকে, তাহলে আপনাকে দেখতে হবে "শুরু করা হয়েছে!" এসডিকে টার্মিনালে।

ধাপ 19: OV7670 দিয়ে ডিজিলেন্ট ZYBO- এ স্ট্রিমিং ভিডিও প্রসেসিং

সম্পূর্ণ আর্কাইভ ফাইল সংযুক্ত।

ধাপ 20: সম্পূর্ণ ব্লক ডায়াগ্রাম

সম্পূর্ণ ব্লক ডায়াগ্রাম
সম্পূর্ণ ব্লক ডায়াগ্রাম

এটি প্রকল্পের সমস্ত সংযোগ এবং আইপি ব্লকের সম্পূর্ণ চিত্র দেখায়

ধাপ 21: OY7670 কে ZYBO এর সাথে সংযুক্ত করুন

OY7670 কে ZYBO এর সাথে সংযুক্ত করুন
OY7670 কে ZYBO এর সাথে সংযুক্ত করুন

ZYBO Pmods- এর সাথে ov7670 মডিউলটি সংযুক্ত করার জন্য একটি সংযোগ তৈরি করুন

ডাটা Pmod হল Pmod D

নিয়ন্ত্রণ Pmod হল Pmod C

উপরন্তু, এই টিউটোরিয়ালের প্রথমার্ধে নির্দিষ্ট করে PmodCON3 এবং servos সংযোগ করুন

ধাপ 22: ব্লক ডিজাইন তৈরি করুন

ব্লক ডিজাইন তৈরি করুন
ব্লক ডিজাইন তৈরি করুন

ফ্লো নেভিগেটরে, "ব্লক ডিজাইন তৈরি করুন" এ ক্লিক করুন, তারপরে ওকে টিপুন।

ধাপ 23: OV7670 ক্যামেরা নিয়ন্ত্রণ এবং ক্যাপচারের জন্য VHDL ফাইল যোগ করুন

এই ধাপে সংযুক্ত ভিএইচডিএল ফাইলগুলি প্রকল্পে যুক্ত করুন

ধাপ 24: সীমাবদ্ধতা ফাইল যোগ করুন

আপনার প্রকল্পে সংযুক্ত সীমাবদ্ধতা ফাইল যোগ করুন।

ধাপ 25: HLS IP এর জন্য IP Repo যোগ করুন

HLS IP এর জন্য IP Repo যোগ করুন
HLS IP এর জন্য IP Repo যোগ করুন

জিপ ফাইলটি সংযুক্ত করুন এবং এটিকে "HLS_repo" নামে একটি নতুন ডিরেক্টরিতে (ফোল্ডার) অনুরূপ একটি নতুন ফোল্ডারে আনজিপ করুন।

আইপি ক্যাটালগে গিয়ে আপনার প্রকল্পে একটি আইপি রিপোজিটরি যুক্ত করুন এবং "অ্যাড রিপোজিটরি …" নির্বাচন করে ডান ক্লিক করুন।

আপনার "HLS_repo" ডিরেক্টরিতে নেভিগেট করুন এবং এটি নির্বাচন করুন।

Ptionচ্ছিক: নিজের জন্য HLS ভিডিও প্রসেসিং ব্লক তৈরি করুন!

ধাপ 26: মডিউল এবং আইপি যোগ করুন

মডিউল এবং আইপি যোগ করুন
মডিউল এবং আইপি যোগ করুন
মডিউল এবং আইপি যোগ করুন
মডিউল এবং আইপি যোগ করুন

Ov7670_axi_stream_capture, debounce এবং ov7670_controller মডিউলগুলিকে ব্লক ডায়াগ্রামে যোগ করুন ডান পটভূমিতে ক্লিক করে এবং "মডিউল যোগ করুন …" নির্বাচন করে

একইভাবে, আইপি যোগ করুন:

  • HLS_Video_Track
  • ভিডিও ফ্রেম বাফার লিখুন
  • ভিডিও ফ্রেম বাফার পড়া
  • ভিডিও টাইমিং কন্ট্রোলার
  • AXI4- স্ট্রিম টু ভিডিও আউট
  • "স্লাইস" এর 3 টি
  • ধ্রুব
  • AXI টাইমারের 2

ধাপ 27: আইপি কনফিগারেশন সেটিংস

আইপি কনফিগারেশন সেটিংস
আইপি কনফিগারেশন সেটিংস
আইপি কনফিগারেশন সেটিংস
আইপি কনফিগারেশন সেটিংস
আইপি কনফিগারেশন সেটিংস
আইপি কনফিগারেশন সেটিংস

ছবিতে যেমন দেখানো হয়েছে

ধাপ 28: পিএস আইপি ব্লক যুক্ত করুন এবং কনফিগার করুন

পিএস আইপি ব্লক যুক্ত করুন এবং কনফিগার করুন
পিএস আইপি ব্লক যুক্ত করুন এবং কনফিগার করুন
পিএস আইপি ব্লক যুক্ত করুন এবং কনফিগার করুন
পিএস আইপি ব্লক যুক্ত করুন এবং কনফিগার করুন

ব্লক ডায়াগ্রামে ZYNQ7 প্রসেসিং সিস্টেম যুক্ত করুন

কনফিগারেশন সম্পাদনা করুন:

  • PS-PL কনফিগারেশন

    • এইচপি

      • এস এইচপি 0 সক্ষম করুন
      • এস এইচপি 1 সক্ষম করুন
  • ঘড়ি কনফিগারেশন

    • পিএল ফ্যাব্রিক ঘড়ি

      • FCLK_0 100MHz এ
      • 25MHz এ FCLK_1 (আউটপুটক্লক)
      • FLCK_2 35MHz (<= 50MHz) (CameraClock) এ

ধাপ 29: অংশ 1. Servo মোটরগুলির জন্য একটি PWM মডিউল তৈরি করা

Axi_timer_0 pwm0 কে নতুন আউটপুট পোর্ট pwm_Xaxis এ নিয়ে আসুন

নতুন আউটপুট পোর্ট pwm_Zaxis এ axi_timer_1 pwm0 বের করুন

ধাপ 30: ভিডিও ইনপুট সাইড সংযোগ (aclk হাইলাইট করা)

ভিডিও ইনপুট সাইড সংযোগ (aclk হাইলাইট করা)
ভিডিও ইনপুট সাইড সংযোগ (aclk হাইলাইট করা)

ভিডিও ইনপুট সাইড আইপি ব্লক সঠিকভাবে সংযুক্ত করুন

(* এই সংযোগগুলি সংযোগ অটোমেশনের সময় সঠিক বিকল্পগুলি নির্বাচন করে তৈরি করা উচিত) axi_stream_capture থেকে "aclk" এ যায়:

  • ap_clk ভিডিও ফ্রেম বাফারে লিখুন
  • ap_clk HLS ভিডিও স্ট্রিম প্রসেসিং ব্লকে
  • *ভিডিও ফ্রেম বাফার থেকে AXI স্মার্টকানেক্ট আইপি তে aclk S_AXI_HP0 এ লিখুন
  • *HLS ভিডিও প্রসেসিং ব্লকের S_AXI চ্যানেলের জন্য AXI ইন্টারকানেক্ট আইপি চ্যানেলগুলির সাথে সম্পর্কিত aclk এবং ভিডিও ফ্রেম বাফার PS ব্লকে S_AXI_HP0_ACLK লিখুন

ভিডিও স্ট্রিম সিগন্যালটি কেবল ক্যাপচার ব্লক থেকে Zynq মেমরি ইন্টারফেসে সিরিজের সাথে সংযুক্ত।

  • ভিডিও ক্যাপচার ব্লক থেকে HLS প্রসেসিং ব্লকে যায়।
  • HLS ব্লক থেকে প্রসেসড ভিডিও ফ্রেম বাফার রাইট ব্লকে যায়।
  • *ফ্রেম বাফার রাইট ব্লক Zynq PS ব্লকে HP0 ইন্টারফেসের সাথে সংযোগ স্থাপন করে।
  • ক্যাপচার ব্লকের আউটপুট থেকে m_axis_tuser সিগন্যাল HLS প্রসেসিং ব্লকে ভিডিও_ইন_টুসার ইনপুট সিগন্যাল এবং একই ব্লকে ap_start সিগন্যাল উভয়ে ম্যানুয়ালি ওয়্যার্ড করা হয়।

TUSER (tuser) সংকেত AXI ভিডিও স্ট্রিম প্রোটোকল দ্বারা ভিডিওটির একটি ফ্রেমের সূচনার জন্য ব্যবহার করা হয়। AP_Start HLS ব্লককে প্রসেসিং শুরু করতে বলে। ভিতরে আসে। যখন একটি বাসের একটি সিগন্যাল সংযোগ করে এবং এই পদ্ধতিতে এটিকে বিভক্ত করে তখন এটিকে বাসের বাকি অংশের স্বাভাবিক সমাপ্তি বিন্দুতে সংযুক্ত করা প্রয়োজন। ভিভাদো অনুমান করে যে আপনি যদি সিগন্যালটি ম্যানুয়ালি সংযুক্ত করেন তবে আপনি এটি সাধারণত সংযোগ করতে চান তা সংযোগ বিচ্ছিন্ন করতে চান।

আইপি ব্লকের কনফিগারেশন সেটিংস:

ভিডিও ফ্রেম বাফার লিখুন:

ভিডিও ফরম্যাট: RGB8

প্রতি ঘণ্টায় 1 টি নমুনা সর্বোচ্চ কলাম: 1280 (> = 640) সর্বোচ্চ সারি: 960 (> = 480) সর্বোচ্চ ডেটার প্রস্থ: 8

ধাপ 31: OV7670 এর সাথে সংযোগ

OV7670 এর সাথে সংযোগ
OV7670 এর সাথে সংযোগ

Ov7670_axi_stream_capture ব্লকে

  • সমস্ত ইনপুট বাহ্যিক করুন (একটি পিনে ডান ক্লিক করুন এবং মেনু থেকে নির্বাচন করুন, বা বাম ক্লিক-> ctrl+T)
  • নামগুলো যেমন আছে তেমন রেখে দিন

Ov7670_controller ব্লকে

  • সমস্ত ব্লক আউটপুট বাহ্যিক করুন
  • Config_finished পোর্টকে LED0 এ নামকরণ করুন
  • Clk কে CameraClock (<= 50MHz) (FCLK_2) এর সাথে সংযুক্ত করুন

ডিবাউন্স ব্লকে

  • বোতাম 1 ইনপুটটিকে একটি বহিরাগত ইনপুট পোর্টে সংযুক্ত করুন যাকে বলা হয় btn0
  • আউট 76 কে ov7670_controller IP ব্লকে রিসেন্ড লাইনে সংযুক্ত করুন
  • Btn3 নামক একটি বহিরাগত ইনপুট পোর্টের সাথে button2 ইনপুট সংযুক্ত করুন
  • ভিডিও ক্যাপচার ক্লক ডোমেনের জন্য প্রসেসর সিস্টেম রিসেট আইপি -তে ext_reset_in ইনপুটের সাথে out2n সংযোগ করুন। (*এই আইপি তৈরির পরে এটি করা প্রয়োজন হতে পারে*)
  • Clk কে CameraClock (<= 50MHz) (FCLK_2) এর সাথে সংযুক্ত করুন

ধাপ 32: ভিডিও আউট সাইডে সংযোগ

ভিডিও আউট সাইডে সংযোগ
ভিডিও আউট সাইডে সংযোগ
ভিডিও আউট সাইডে সংযোগ
ভিডিও আউট সাইডে সংযোগ
ভিডিও আউট সাইডে সংযোগ
ভিডিও আউট সাইডে সংযোগ
ভিডিও আউট সাইডে সংযোগ
ভিডিও আউট সাইডে সংযোগ

ব্লক ভিডিও টাইমিং কন্ট্রোলার (VTC), AXI4- স্ট্রিম থেকে ভিডিও আউট, এবং স্লাইসের জন্য সংযোগ

  • Vid_io_out_clk এবং VTC clk এর জন্য 25MHz ঘড়ি (FCLK_1) ব্যবহার করুন
  • AXI4- স্ট্রিম টু ভিডিও আউট এ aclk এর জন্য 100MHz ঘড়ি (FCLK_0) ব্যবহার করুন
  • vtiming_out থেকে vtiming_in
  • ভিডিও ফ্রেম বাফার m_axis_video পড়ুন AXI4- স্ট্রিম থেকে ভিডিও আউট ভিডিও_ইন
  • 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_blue
    • ব্লকের নাম অনুসারে ছবিতে দেখানো স্লাইস রেঞ্জ সেটআপ করুন
    • ছবিতে দেখানো হিসাবে প্রতিটি স্লাইস আউটপুট একটি বহিরাগত পোর্ট আউটপুট সংযোগ করুন।
  • vid_data [23: 0] প্রতিটি স্লাইসের জন্য ইনপুটগুলির সাথে সংযোগ করে (দিন [23: 0])

ধাপ 33: ব্লক এবং সংযোগ অটোমেশন চালান

ব্লক এবং সংযোগ অটোমেশন চালান
ব্লক এবং সংযোগ অটোমেশন চালান
ব্লক এবং সংযোগ অটোমেশন চালান
ব্লক এবং সংযোগ অটোমেশন চালান
ব্লক এবং সংযোগ অটোমেশন চালান
ব্লক এবং সংযোগ অটোমেশন চালান

ZYNQ7 PS ব্লক থেকে জিনিসগুলিকে সংযুক্ত করতে ব্লক অটোমেশন চালান। ছবি দ্বারা দেখানো হিসাবে।

সমস্ত আন্তconসংযোগ আইপি তৈরি করতে সংযোগ অটোমেশন চালান। প্রতিটি ছবিতে সমস্ত বিকল্পের দিকে মনোযোগ দিন।

ডিবাউন্স ব্লকে, আউটপুট 2n কে ভিডিও ক্যাপচার ক্লক ডোমেন প্রসেসর সিস্টেম রিসেট ext_reset_in ইনপুটের সাথে সংযুক্ত করুন।

ধাপ 34: এইচডিএল মোড়ক তৈরি করুন

এইচডিএল রra্যাপার তৈরি করুন
এইচডিএল রra্যাপার তৈরি করুন

আপনার ব্লক ডিজাইনের জন্য HDL রra্যাপার তৈরি করুন।

এটিকে শীর্ষ মডিউল হিসাবে সেট করুন।

ধাপ 35: বিটস্ট্রিম তৈরি করুন, এসডিকে হার্ডওয়্যার রপ্তানি করুন, ভিভাদো থেকে এসডিকে চালু করুন

রপ্তানিতে বিটস্ট্রিম অন্তর্ভুক্ত করতে ভুলবেন না।

বিটস্ট্রিম তৈরি করতে খুব বেশি সময় লাগতে পারে।

তারপর SDK চালু করুন

ধাপ 36: SDK (কোন ফ্রিআরটিওএস নেই)

SDK (কোন FreeRTOS নেই)
SDK (কোন FreeRTOS নেই)

এই সংস্করণটি ফ্রিআরটিওএস ব্যবহার না করে সবকিছু করে, কোডটি সুন্দরভাবে ঘনীভূত করে।

হার্ডওয়্যার ডিজাইনের উপর ভিত্তি করে একটি স্বতন্ত্র বিএসপি তৈরি করুন। ডিফল্ট বিকল্পগুলি ভাল হওয়া উচিত। নিশ্চিত করুন যে বিএসপি উত্স তৈরি হয়েছে।

ছবিতে দেখানো হিসাবে অ্যাপ তৈরি করুন। (খালি আবেদন)

স্বয়ংসম্পূর্ণ প্রধান মুছুন এবং সংযুক্ত ফাইলগুলি আমদানি করুন।

ধাপ 37: ফ্রিআরটিওএস বাস্তবায়ন

ফ্রিআরটিওএস বাস্তবায়ন
ফ্রিআরটিওএস বাস্তবায়ন

এই সংস্করণটি FreeRTOS ব্যবহার করে। হার্ডওয়্যার ডিজাইনের উপর ভিত্তি করে একটি FreeRTOS901 BSP তৈরি করুন। ডিফল্ট বিকল্পগুলি ভাল হওয়া উচিত। নিশ্চিত করুন যে বিএসপি উৎস তৈরি হয়েছে।

ছবিতে দেখানো হিসাবে অ্যাপ তৈরি করুন। (খালি আবেদন)

স্বয়ংসম্পূর্ণ প্রধান মুছুন এবং সংযুক্ত ফাইলগুলি আমদানি করুন।

ধাপ 38: ব্যবহারের নির্দেশাবলী

এই প্রকল্পটি চালানোর জন্য কিছুটা জটিল। ক্রম অনুসারে পদক্ষেপগুলি অনুসরণ করুন।

নিশ্চিত করুন যে আপনার ZYBO চালিত হওয়ার সময় কিছু স্ব-লোড হচ্ছে না। এর মানে হল যে সম্পন্ন LED আলো জ্বালানো উচিত নয়। এটি করার একটি উপায় হল বুট সোর্স জাম্পারকে JTAG এ সেট করা।

প্রকল্পটি খুলুন (ফ্রিআরটিওএস বা না) আপনি এসডিকে থেকে প্রোগ্রাম করতে চান

  1. আপনার ZYBO চালু করুন। সম্পন্ন LED আলো জ্বালানো উচিত নয়।
  2. বিট ফাইল দিয়ে FPGA প্রোগ্রাম করুন। সম্পন্ন LED আলো হওয়া উচিত। Led0 আলো জ্বালানো উচিত নয়।
  3. কোডটি চালান (যদি আপনি এটি করছেন তবে শুরু ব্রেকপয়েন্টটি অতিক্রম করতে ভুলবেন না)।

এই মুহুর্তে আপনার ভিজিএ ডিসপ্লেতে একটি আউটপুট পাওয়া উচিত।

পুনরায় আরম্ভ করতে (যদি এটি বাগ বা যাই হোক না কেন): দ্রুত PS-SRST বোতামটি আলতো চাপুন অথবা ZYBO বন্ধ করুন এবং তারপর আবার চালু করুন। ধাপ 2 থেকে চালিয়ে যান।

ডিবাগার দিয়ে প্রসেসর বন্ধ করলে ক্যামেরা চলার পরিবর্তে অবস্থান ধরে রাখবে। ভিডিও স্ট্রিম যাইহোক চলবে।

ধাপ 39: রেফারেন্স এবং লিঙ্ক

Xilinx রেফারেন্স গাইড এবং ডকুমেন্টেশন:

  • PG044 - AXI- স্ট্রিম থেকে ভিডিও আউট
  • PG278 - ভিডিও ফ্রেম বাফার পড়ুন/লিখুন

অন্যান্য লিঙ্ক:

  • লরির ব্লগ - VDMA ইনপুট
  • লরির ব্লগ - OV7670 থেকে BRG ব্যবহার করে VGA আউটপুট
  • হ্যামস্টারওয়ার্কস উইকি, মাইক ফিল্ডস দ্বারা, OV7670 কোডের মূল উৎস
  • ডেটশীট মৌলিক টাইমিং স্পেসিফিকেশন দেখাচ্ছে

প্রস্তাবিত: