سنتز در FPGA ها به چه معناست و آیا اهمیتی دارد که جزئیات آن را یاد بگیریم؟

سنتز در FPGA هابیایید برای درک بهتر معنا و مفهوم سنتز در FPGA ها، با یک مثال ساده شروع کنیم.اگر در دوران مدرسه، خوب به حرفهای معلم علوم گوش کرده باشید، معنای سنتز را یاد گرفته اید! البته معلم علوم بنده، عموی من بود.به خاطر همین، برای اینکه به پدرم نگوید که من درس نمی خوانم، مجبور بودم حداقل درس علوم را خیلی خوب بخوانم.خلاصه اینکه در درس علوم خواندیم که گیاه ها فتوسنتز می کنند ( شاید گیاه ها FPGA را از ما بهتر بلدند ) فتوسنتز ینی تبدیل نور به یه چیز دیگه..، اینجا کلمه ی سنتز مورد نظر ما هست که ینی تبدیل..سنتز در FPGA ینی تبدیل کدی که ما مینویسیم به سخت افزاردرواقع نرم افزارهایی که کد رو سنتز میکنند دارن ساختار سخت افزار رو به زبان انسان نزدیکتر میکنن اما اگه واقعا قرار باشه برنامه رو به صورت حرفه ای و بهینه بنویسیم باید بدونیم پشت صحنه ی سنتز چه اتفاقی داره میوفتهدلایل ضرورت یادگیری نحوه ی سنتز مدار1- تغییر ساختار کد جهت پیاده سازی در سیستم های دیگرفرض کنید توی یکی از FPGA های شرکت Xilinx کد HDL نوشتید اما پروژه قراره توی یک FPGA دیگه مثلا شرکت (Intel Altera) پیاده سازی بشه2- بهینه سازی کد جهت دستیابی به توان پایینتر، عملکرد بالاتر و استفاده از منابع سخت افزاری کمترببینید رک بگم بهتون کد رو خیلیا مینویسن اما توی پروژه های بزرگ اگه بهینه نوشته نشه، همون که نوشته نشه سنگین تره3- پیدا کردن مسیر بحرانیتوی FPGA یه مفهوم مهم داریم به نام Critical Path ینی مسیر بحرانی، چه زمانی استفاده میشه؟وقتی که توی یک پروژه مخابراتی و یا نظامی کد HDL نوشته شده اما فرکانس کاری مدار پایینه، چه باید کرد؟ ببینید از من به شما نصیحت “توی یک سیستم، سرعت سیستم رو کندترین قسمت سیستم تعیین میکنه، اگه بخاید سیستم سریع بشه باید بگردید مسیربحرانی و یا همون قسمت کند رو پیدا کنید که راهش همون یادگیری نحوه ی سنتز هستش”4- تاثیر سنتز در FPGA بر مراحل بعدیبعضی اوقات سنتز مدار مشکلی نداره، فرکانس کاری مدار هم اصلا برامون مهم نیست و به نظر همه چیز عالی میاد،، بازهم نیاز به یادگیری نحوه ی سنتز مدار هست! چرا که برنامه نوشته شده جهت پیاده سازی بعد از سنتز FPGA باید یک سری مراحل دیگه رو هم طی بکنه مثل مکان یابی و مسیریابی … که اینجا سنتز در مراحل بعدی تاثیرگذار خواهد بود.5- استفاده صحیح از منابع جهت پیاده سازی حافظه هاتوی FPGA دو نوع حافظه داریم حافظه های Block RAM و حافظه های distributed RAMs که اولی حافظه های تعبیه شده در FPGA هست و فقط به عنوان حافظه استفاده میشه و دومی با استفاده از LUT ها ساخته میشه، اولی حجم بیشتری برای ذخیره سازی داره دومی کمتر، نحوه استفاده از این حافظه ها هم باید به صورت بهینه باشه مثلا برای جابجایی یک بار 9 تنی بصرفه نیست که از چندین وانت استفاده بشه به جای یک کامیون ده تن همونطوری که به صرفه نیست برای مسافرت چند نفر یک اتوبوس را اجاره کنیم!6- همون 5 مورد کافیه ولی …هرچند دلایل بازم هست اما همون دلایل کافیه که نحوه سنتز مدار رو یاد بگیریدیک نکته دیگه که باید بهش توجه کنید اینه که ابزار سنتز مداری که ما ازش استفاده میکنیم اسمش هست Vivado synthesis tool ابزارهای دیگه ای هم جهت سنتز مدار هستند که رفتارها و البته قابلیت های مشابهی دارند.مثال سنتز در FPGAبیاید یک نمونه برنامه نویسی HDL و بهینه سازی اون جهت سنتز بهتر رو بررسی کنیم.اول یه سیگنال تعریف میکنیم و بعد برنامه رو مینویسیم.Signal s:std_logic_vector(2 downto 0);قسمتی از برنامه به صورت زیر نوشته شدهIf(s>=4)thenB<=a;End if;اما اگه به سیگنال s که یه سیگنال سه بیتی هست توجه کنید متوجه میشید که میتونیم فقط یک بیتش رو معیار قرار بدیم، نه هر سه بیتش.برای اینکه هم سرعت مدار بالاتر بره هم از منابع کمتری استفاده کرده باشیم.If(s(2)=’1’)thenB<=a;End if;نحوه پیاده سازی کد در سخت افزار رو در آینده بیشتر توضیح خواهیم داد.ولی خلاصه یادتون باشه که نحوه سنتز مدار بحث بزرگ و البته مهمیه!موفق باشید.منبع سنتز در FPGA ها - iranfpga