عناوین مطالب
بررسی کدهای C فیلتر FIR
بهترین راه برای یادگیری نحوه استفاده از ابزارهای طراحی، ارائه مثالهای کاربردی است. فیلتر FIR یکی از ماژولهای بسیار پرکاربرد در الگوریتمهای پردازشی است. پیاده سازی این فیلتر به صورت کاملاً استاندارد در زبان C کار نسبتاً سادهای است. در این آموزش ابتدا کدهای C یک فیلتر FIR استاندارد را بررسی میکنیم و در نهایت جنبههای مختلف بهینه سازی و قابلیتهای آنالیز در Vivado HLS را به کمک این مثال توضیح میدهیم.
آنالیز طرح در Analysis Perspective
یکی از مهمترین ویژگیهای Vivado HLS امکان اعمال بهینه سازی روی طرح بدون ایجاد تغییر در ساختار کد است. یعنی با یک کد یکسان امکان دستیابی به پیاده سازیهای متفاوت از یک مدار وجود دارد. اما قبل از اعمال هر دایرکتیو یا پراگمای بهینه سازی به طرح، لازم است یک آنالیز کامل روی مدار پیاده سازی شده داشته باشیم. برای آنالیز طرح در Vivado HLS معمولاً از نمایش Analysis Perspective استفاده میشود. در این بخش علاوه بر معرفی قابلیتهای آنالیز و بخشهای مختلف Analysis Perspective ، مفاهیم زیر نیز پوشش داده میشود.
- بررسی گزارش سنتز
- بررسی ماشین حالت کنترلی و گامهای کنترلی
- بررسی نحوه زمانبندی عملکردها و عملیات محاسباتی
- بررسی نحوه به اشتراک گذاری منابع
- بررسی پارامترهای اختصاصی Vivado HLS برای گزارش کارایی مدار
در Vivado HLS کارایی طرح در قابل یکسری پارامتر بیان میشود که مهمترین آنها عبارتند از:
- پارامتر Trip count : تعداد دفعات تکرار حلقه
- پارامتر Latency : تعداد سیکل کلاک مورد نیاز برای اجرای کامل حلقه یا فانکشن و تولید همه خروجیها
- پارامتر Initiation Interval : تعداد سیکل کلاک مورد نیاز، قبل از اینکه فانکشن بتواند داده جدیدی را پردازش کند
- پارامتر Iteration Latency : تعداد سیکل کلاک مورد نیاز برای اجرای کامل یک تکرار از حلقه
بهینه سازی با استفاده از دایرکتیوها
از آنجایی که نوع اینترفیسها روی سایر بهینه سازیها در طرح تأثیر میگذارند، معمولاً کار بهینه سازی با تعیین پروتکلهای مناسب برای ورودی خروجی طرح شروع میشود. در ادامه بعد از تعیین اینترفیسهای مناسب گلوگاههای طرح با توجه به آنالیزی که انجام دادیم، شناسایی و برطرف میشود. دایرکتیوهایی که در این بخش معرفی میشوند به شرح زیر هستند:
- استفاده از دایرکتیو INTERFACE برای تعیین پروتکل ورودی خروجی
- استفاده از دایرکتیو ARRAY PARTITION برای کاهش تأخیر اجرای حلقه
افزایش ظرفیت خروجی با دایرکتیو PIPELINE
یکی از مهمترین عواملی که منجربه کاهش ظرفیت خروجی طرح میشود، پایپلاین نبودن حلقه یا حلقههای کد C است. با پایپلاین کردن حلقهها به Vivado HLS اجازه میدهیم که اجرای هر تکرار از حلقه قبل از اینکه کار اجرای تکرار قبلی به اتمام برسد شروع کند. در Vivado HLS این کار بدون نیاز به اعمال تغییر روی کد و تنها با استفاده از دایرکتیو PIPELINE امکان پذیر است. برای این کار کافی است:
- از دایرکتیو PIPLINE برای کاهش پارامتر Initiation Interval استفاده کنیم.
هر گونه سوال ، پیشنهاد یا انتقادی در رابطه با ویدئوهای آموزشی هگزالینکس دارید، در بخش دیدگاه ها مطرح نمایید تا بتوانیم بهترین آموزشها را برای شما علاقمندان تهیه کنیم. شما میتوانید فایلهای این آموزش را از اینجا دانلود کنید.