সুচিপত্র:
- ধাপ 1: ভিভাদো এইচএলএস কি?
- ধাপ 2: এইচএলএস ভিডিও লাইব্রেরি
- ধাপ 3: সংশ্লেষণ
- ধাপ 4: রপ্তানির জন্য সংস্করণ এবং অন্যান্য তথ্য
- ধাপ 5: একটি ভিভাদো আইপি লাইব্রেরিতে রপ্তানি করা হচ্ছে
- ধাপ 6: সংশ্লেষণ এবং রপ্তানি বিশ্লেষণ
- ধাপ 7: ভিভাডোতে আইপি লাইব্রেরি যুক্ত করা
- ধাপ 8: একটি আপগ্রেড করা
- ধাপ 9: অতিরিক্ত বিবরণ এবং তথ্য
- ধাপ 10: আউটপুট এবং ইনপুট
- ধাপ 11: AXI নিবন্ধন ইন্টারফেসিং
- ধাপ 12: ডেটাফ্লো প্রাগমা
ভিডিও: ভিভাদো এইচএলএস ভিডিও আইপি ব্লক সংশ্লেষণ: 12 টি ধাপ
2024 লেখক: John Day | [email protected]. সর্বশেষ পরিবর্তিত: 2024-01-30 08:02
আপনি কি কখনও ভিডিওতে রিয়েল-টাইম প্রক্রিয়াকরণ করতে চেয়েছিলেন অনেকটা বিলম্ব না করে বা একটি এমবেডেড সিস্টেমে? FPGAs (ফিল্ড প্রোগ্রামযোগ্য গেট অ্যারে) কখনও কখনও এটি করতে ব্যবহৃত হয়; যাইহোক, ভিএইচডিএল বা ভেরিলগের মতো হার্ডওয়্যার স্পেসিফিকেশন ভাষায় ভিডিও প্রসেসিং অ্যালগরিদম লেখা সবচেয়ে ভাল হতাশাজনক। Vivado HLS লিখুন, Xilinx টুল যা আপনাকে C ++ পরিবেশে প্রোগ্রাম করতে এবং এটি থেকে হার্ডওয়্যার স্পেসিফিকেশন ল্যাঙ্গুয়েজ কোড তৈরি করতে দেয়।
প্রয়োজনীয় সফটওয়্যার:
- ভিভাদো এইচএলএস
- ভিভাদো
- (যদি আপনি AXI রেজিস্টার ব্যবহার করেন) Vivado SDK
(Alচ্ছিক) এখানে Xilinx তৈরি উদাহরণ ডাউনলোড করুন:
Xilinx HLS ভিডিও উদাহরণ
ধাপ 1: ভিভাদো এইচএলএস কি?
ভিভ্যাডো এইচএলএস হল একটি টুল যা সি ++ এর মত কোডকে হার্ডওয়্যার স্ট্রাকচারে রূপান্তর করতে পারে যা এফপিজিএ -তে প্রয়োগ করা যায়। এই উন্নয়ন করার জন্য এটি একটি আইডিই অন্তর্ভুক্ত করে। একবার আপনি এইচএলএস -এর জন্য কোডের ডেভেলপমেন্ট সম্পন্ন করলে আপনি আপনার জেনারেটেড আইপি একটি ফরম্যাটে এক্সপোর্ট করতে পারবেন। ভিভাদোর সাথে ব্যবহারের জন্য।
সংযুক্ত ফাইলগুলি ডাউনলোড করুন এবং সেগুলি যেখানে আপনি আপনার প্রকল্পটি তৈরি করবেন তার কাছে রাখুন। (যদি তাদের একটি র্যান্ডমাইজড নাম থাকে তবে তাদের আবার "top.cpp" এবং "top.h" নামকরণ করুন)
ধাপ 2: এইচএলএস ভিডিও লাইব্রেরি
এইচএলএস ভিডিও লাইব্রেরিতে এই কাগজে রেফারেন্স ডিজাইন সহ ডকুমেন্টেশন রয়েছে: XAPP1167 আরেকটি ভাল সম্পদ এটি সম্পর্কে Xilinx উইকি পৃষ্ঠা।
Vivado HLS শুরু করুন।
একটি নতুন প্রকল্প তৈরি করুন।
আপনি আগের ধাপে ডাউনলোড করা ফাইলগুলি নিন এবং সেগুলি সোর্স ফাইল হিসাবে যুক্ত করুন। (দ্রষ্টব্য: ফাইলগুলি প্রকল্পে অনুলিপি করা হয় না, বরং তারা যেখানে থাকে সেখানেই থাকে)
তারপর উপরের ফাংশন নির্বাচন করতে ব্রাউজ বাটন ব্যবহার করুন।
পরবর্তী পৃষ্ঠায়, আপনি যে Xilinx অংশটি ব্যবহার করছেন তা নির্বাচন করুন।
ধাপ 3: সংশ্লেষণ
সমাধান => সি সংশ্লেষণ চালান => সক্রিয় সমাধান
~ 227.218 সেকেন্ড পরে, এটি করা উচিত। (দ্রষ্টব্য: আপনার প্রকৃত সংশ্লেষণ সময় অনেক কারণের উপর ভিত্তি করে পরিবর্তিত হবে)
ধাপ 4: রপ্তানির জন্য সংস্করণ এবং অন্যান্য তথ্য
সংস্করণ নম্বরগুলি ভিভাদোর সাথে যোগাযোগ করে যাতে আপনি একটি ডিজাইনে আইপি আপডেট করতে সক্ষম হন। যদি এটি একটি ছোট সংস্করণ পরিবর্তন হয় তবে এটি জায়গায় করা যেতে পারে যখন প্রধান সংস্করণ পরিবর্তনের জন্য আপনাকে নতুন ব্লকে ম্যানুয়ালি যোগ করতে হবে এবং পুরানোটি সরিয়ে ফেলতে হবে। আপডেট আইপি বোতাম টিপে সম্পূর্ণ স্বয়ংক্রিয়ভাবে সম্পন্ন হয়। আপনি আপনার আইপি এর অবস্থা দেখতে ভিভাদো টিসিএল কনসোলে "report_ip_status" চালাতে পারেন।
সমাধান => সমাধান সেটিংসে সংস্করণ নম্বর এবং অন্যান্য তথ্য সেট করুন …
বিকল্পভাবে, এই সেটিংস রপ্তানির সময় সেট করা যেতে পারে।
ধাপ 5: একটি ভিভাদো আইপি লাইব্রেরিতে রপ্তানি করা হচ্ছে
সমাধান => এক্সপোর্ট আরটিএল
আপনি যদি আগের ধাপে আইপি লাইব্রেরির বিবরণ সেট না করেন, তাহলে আপনি এখনই এটি করতে পারেন।
ধাপ 6: সংশ্লেষণ এবং রপ্তানি বিশ্লেষণ
এই স্ক্রিনে আমরা আমাদের রপ্তানি করা মডিউল সম্পর্কে পরিসংখ্যান দেখতে পাচ্ছি, এটি দেখায় যে এটি আমাদের 10ns (100MHz) ঘড়ির সময় এবং এটি প্রতিটি সম্পদ কতটা ব্যবহার করে তা পূরণ করে।
এর সমন্বয়ে, আমাদের সিনথেসিস রিপোর্ট, এবং আমাদের ডেটাফ্লো বিশ্লেষণ, আমরা দেখতে পাই যে এটি 317338 ঘড়ি চক্র * 10ns ঘড়ির সময় * 14 পাইপলাইন পর্যায় = 0.04442732 সেকেন্ড সময় নেয়। এর মানে হল যে আমাদের ইমেজ প্রসেসিং দ্বারা যোগ করা মোট বিলম্ব একটি সেকেন্ডের এক বিংশেরও কম (যখন টার্গেটেড 100MHz এ ক্লক করা হয়)।
ধাপ 7: ভিভাডোতে আইপি লাইব্রেরি যুক্ত করা
আপনার সংশ্লেষিত আইপি ব্লক ব্যবহার করার জন্য আপনাকে এটি ভিভাদোতে যুক্ত করতে হবে।
ভিভাডোতে আইপি ক্যাটালগে গিয়ে আপনার প্রকল্পে একটি আইপি সংগ্রহস্থল যুক্ত করুন এবং "অ্যাড রিপোজিটরি …" নির্বাচন করে ডান ক্লিক করুন।
আপনার ভিভাদো এইচএলএস প্রজেক্ট ডিরেক্টরিতে নেভিগেট করুন এবং আপনার সমাধান ডিরেক্টরি নির্বাচন করুন।
এটি পাওয়া আইপি রিপোর্ট করা উচিত।
ধাপ 8: একটি আপগ্রেড করা
কখনও কখনও আপনাকে আপনার এইচএলএস ব্লকে ভিভাডো ডিজাইনে অন্তর্ভুক্ত করার পরে পরিবর্তন করতে হবে।
এটি করার জন্য, আপনি পরিবর্তনগুলি করতে পারেন এবং পুনরায় সংশ্লেষ করতে পারেন এবং উচ্চতর সংস্করণ নম্বর দিয়ে আইপি রপ্তানি করতে পারেন (প্রধান/ছোট সংস্করণ নম্বর পরিবর্তনের বিষয়ে পূর্ববর্তী ধাপে বিস্তারিত দেখুন)।
নতুন সংস্করণ রফতানি করার পরে, ভিভাদোতে আপনার আইপি সংগ্রহস্থলগুলি রিফ্রেশ করুন। এটি করা যেতে পারে যখন ভিভাদো লক্ষ্য করে আইপি রিপোজিটরিতে পরিবর্তিত হয়েছে, অথবা ম্যানুয়ালি সক্রিয় হয়েছে। (দ্রষ্টব্য, যদি আপনি শুরু করার পরে আপনার আইপি সংগ্রহস্থলগুলি রিফ্রেশ করেন তবে এইচএলএসে রপ্তানি শেষ হওয়ার আগে আইপি সাময়িকভাবে সেখানে থাকবে না, এটি শেষ হওয়ার জন্য অপেক্ষা করুন এবং আবার রিফ্রেশ করুন।)
এই মুহুর্তে একটি ডিস্কের উপর একটি আইপি পরিবর্তন করা হয়েছে এমন তথ্য সহ একটি উইন্ডো উপস্থিত হওয়া উচিত এবং এটি আপনাকে "আপগ্রেড সিলেক্টেড" বোতামের সাহায্যে আপডেট করার বিকল্প প্রদান করে। তারপরে সেই বোতাম টিপলে স্বয়ংক্রিয়ভাবে পুরানো আইপি নতুনের সাথে প্রতিস্থাপন হবে, অন্যথায় আরও কাজের প্রয়োজন হতে পারে।
ধাপ 9: অতিরিক্ত বিবরণ এবং তথ্য
HLS সিন্থেসিস কিভাবে কাজ করে এবং আপনি এর সাথে কি করতে পারেন সে সম্পর্কে আরও তথ্য প্রদান করে।
একটি এইচএলএস সংশ্লেষিত আইপি ব্লক ব্যবহার করে একটি প্রকল্পের উদাহরণের জন্য, এই নির্দেশাবলী দেখুন।
ধাপ 10: আউটপুট এবং ইনপুট
চূড়ান্ত আইপি ব্লকের আউটপুট এবং ইনপুটগুলি একটি বিশ্লেষণ থেকে নির্ধারিত হয় যা সিন্থেসাইজার উপরের ফাংশনে এবং বাইরে ডেটা প্রবাহের কাজ করে।
ভিএইচডিএল বা ভেরিলগের মতো, এইচএলএস আপনাকে আইপি -র মধ্যে সংযোগ সম্পর্কে বিশদ উল্লেখ করতে দেয়। এই লাইনগুলি এর উদাহরণ:
void image_filter (AXI_STREAM & video_in, AXI_STREAM & video_out, int & x, int & y) {
#pragma HLS INTERFACE axis port = video_in bundle = INPUT_STREAM #pragma HLS INTERFACE axis port = video_out bundle = OUTPUT_STREAM #pragma HLS INTERFACE s_axilite port = x bundle = CONSUL_SONT_SONT_ CONSUL_ CONSUL_ CONSUL_CONST = CONST = CONST_B0
আপনি দেখতে পারেন কিভাবে আইপি ব্লকে প্রদর্শিত পোর্টগুলি এই নির্দেশাবলীর দ্বারা প্রভাবিত হয়।
ধাপ 11: AXI নিবন্ধন ইন্টারফেসিং
আপনার আইপি ব্লক থেকে PS এ ইনপুট/আউটপুট পাওয়ার জন্য একটি AXI ইন্টারফেসের মাধ্যমে এটি করার একটি ভাল উপায়।
আপনি আপনার এইচএলএস কোডে এটি নির্দিষ্ট করতে পারেন, অফসেটগুলি সহ যা পরে মান অ্যাক্সেস করতে ব্যবহার করা হবে:
void image_filter (AXI_STREAM & video_in, AXI_STREAM & video_out, int & x, int & y) {
#pragma HLS INTERFACE s_axilite port = x bundle = CONTROL_BUS offset = 0x14
#pragma HLS INTERFACE s_axilite port = y bundle = CONTROL_BUS offset = 0x1C #pragma HLS dataflow
x = 42;
y = 0xDEADBEEF; }
একবার ভিভাডোতে সঠিকভাবে সংযুক্ত হয়ে গেলে, আপনি ভিভাদো এসডিকে এই কোডটি ব্যবহার করে মানগুলি অ্যাক্সেস করতে পারেন:
#অন্তর্ভুক্ত "পরামিতি। h"
#ডিফাইন xregoff 0x14 #ডিফাইন yregoff 0x1c x = Xil_In32 (XPAR_IMAGE_FILTER_0_S_AXI_CONTROL_BUS_BASEADDR+xregoff); y = Xil_In32 (XPAR_IMAGE_FILTER_0_S_AXI_CONTROL_BUS_BASEADDR+yregoff);
এটি আপনাকে x এর মধ্যে 42 এবং y এর মধ্যে 0xdeadbeef দিয়ে শেষ করবে
ধাপ 12: ডেটাফ্লো প্রাগমা
#Pragma DATAFLOW এর ভিতরে কোডটি যেভাবে বাস্তবায়িত হয় তা স্বাভাবিক C ++ থেকে পরিবর্তিত হয়। কোডটি পাইপলাইন করা হয়েছে যাতে সমস্ত নির্দেশাবলী সব সময় ডেটার বিভিন্ন অংশে চলমান থাকে (এটি একটি কারখানায় একটি সমাবেশ লাইনের মতো মনে করুন, প্রতিটি স্টেশন ক্রমাগত একটি ফাংশন করে কাজ করছে এবং এটি পরবর্তী স্টেশনে প্রেরণ করছে)
ছবি থেকে আপনি দেখতে পাচ্ছেন যে প্রতিটি নির্দেশনা
স্বাভাবিক ভেরিয়েবল হিসেবে উপস্থিত হওয়া সত্ত্বেও, img বস্তুগুলি আসলে কমান্ডের মধ্যে ছোট বাফার হিসাবে প্রয়োগ করা হয়। একটি ফাংশনে একটি ইনপুট হিসাবে একটি ছবি ব্যবহার করে এটি "গ্রাস" করে এবং এটি আর ব্যবহারযোগ্য করে না। (অতএব ডুপ্লিকেট কমান্ডের প্রয়োজন)
প্রস্তাবিত:
রাউটার আইপি ক্যামেরার জন্য ভিডিও রেকর্ডার হয়ে ওঠে: 3 টি ধাপ
রাউটার আইপি ক্যামেরার জন্য ভিডিও রেকর্ডার হয়ে ওঠে: কিছু রাউটার একটি বোর্ডে শক্তিশালী সিপিইউ এবং ইউএসবি-পোর্ট থাকে এবং রাউটিং ফাংশন ছাড়াও ভিডিও রেকর্ডার হিসাবে ব্যবহার করা যেতে পারে, যাতে আইপি-ক্যামেরা থেকে ভিডিও এবং শব্দ সংগ্রহ এবং বিতরণ করা যায় যা শুধুমাত্র প্রবাহিত হয় H264/265 RTSP (সবচেয়ে আধুনিক সস্তা হিসাবে
একটি সরাসরি ডিজিটাল সংশ্লেষণ (DDS) চিপ সহ MIDI- নিয়ন্ত্রিত স্টেপার মোটর: 3 টি ধাপ
একটি সরাসরি ডিজিটাল সংশ্লেষণ (DDS) চিপ সহ MIDI- নিয়ন্ত্রিত স্টেপার মোটর: আপনার কি কখনও একটি খারাপ ধারণা আছে যে আপনাকে কেবল একটি মিনি প্রকল্পে পরিণত করতে হয়েছিল? ঠিক আছে, আমি AD9833 ডাইরেক্ট ডিজিটাল সিনথেসিস (DDS) মডিউল দিয়ে সঙ্গীত তৈরির লক্ষ্যে Arduino কারণে আমার তৈরি করা একটি স্কেচ নিয়ে খেলছিলাম … এবং কিছু সময়ে আমি ভেবেছিলাম &
বিপরীতমুখী বক্তৃতা সংশ্লেষণ। পার্ট: 12 IoT, হোম অটোমেশন: 12 টি ধাপ (ছবি সহ)
বিপরীতমুখী বক্তৃতা সংশ্লেষণ। পার্ট: 12 আইওটি, হোম অটোমেশন: এই নিবন্ধটি হোম অটোমেশন ইন্সট্রাকটেবলের একটি সিরিজের 12 তম হল কিভাবে একটি আইওটি রেট্রো স্পিচ সিনথেসিস ডিভাইসকে একটি বিদ্যমান হোম অটোমেশন সিস্টেমে তৈরি করা এবং সংহত করা যায় যা সমস্ত প্রয়োজনীয় সফ্টওয়্যার কার্যকারিতা সহ টি
পিসি ভিডিও প্লেয়ারের জন্য বাচ্চা ভিডিও রিমোট: 6 টি ধাপ
পিসি ভিডিও প্লেয়ারের জন্য টডলার ভিডিও রিমোট: আমি একটি রিমোট কন্ট্রোল তৈরি করি যা ইউএসবি দিয়ে একটি পিসির সাথে সংযোগ স্থাপন করে। বড় রিমোট কন্ট্রোল আমার বাচ্চাকে একটি পুরানো কম্পিউটারে ভিডিও নির্বাচন এবং চালাতে দেয় এটি একটি অপেক্ষাকৃত সহজ প্রকল্প। মূল উপাদানটি হল একটি ইউএসবি কীপ্যাড বা একটি ওয়্যারলেস ইউএসবি কীপ্যাড। তারপর
আপনার কম্পিউটারে অ্যানালগ শব্দ সংশ্লেষণ: 10 টি ধাপ (ছবি সহ)
আপনার কম্পিউটারে অ্যানালগ সাউন্ড সিনথেসিস: সেই পুরনো অ্যানালগ সিনথেসাইজারের শব্দের মতো? আপনার নিজের সময়ে, আপনার নিজের জায়গায়, যতক্ষণ আপনি চান, বিনামূল্যে জন্য খেলতে চান? এখানেই আপনার বন্যতম মগ স্বপ্নগুলি সত্য হয়। আপনি একটি বৈদ্যুতিন রেকর্ডিং শিল্পী বা বিচারক হতে পারেন