برای انجام پروژه با FPGA باید به معماری آن توجه کرد. مثلا FPGA ها به دلیل معماری منحصر به فردشان روز به روز کامل تر می شوند.
روزی FPGA ها رقیب CPLD ها شناخته می شدند، اما رفته رفته با افزایش قابلیت های مختلف به این تراشه ها، دیگر قابل مقایسه با CPLD ها نیستند.
آیا FPGA همان CPLD است !؟
FPGA ها دارای تعداد منابع منطقی بالاتری هستند، در نتیجه قابلیت پیاده سازی مدارات دیجیتال بالاتری دارند. FPGA ها می توانند از چندین استاندارد ولتاژ در پایه های خود پشتیبانی کنند، در حالی که CPLD ها تک استاندارد هستند.
تأخیر در گیت های منطقی CPLD ها بیشتر از مدارات FPGA است. لذا مدارات با سرعت بیشتری کار خواهند کرد. سازماندهی کلاک در FPGA قابل مقایسه با CPLD ها نیست و بسیاری نکات دیگر که مهندسان را به انجام پروژه با FPGA ترغیب می کند.
FPGA رقیب DSP
تراشه DSP همانطور که از نامش پیداست، برای پردازش سیگنال ساخته شده است. در واقع این تراشه سخت افزارهای از پیش طراحی شده مختلفی جهت پیاده سازی سریع الگوریتم های مختلف پردازشی را دارد. اما با گذر زمان، FPGA های جدید قابلیت هایی بیشتر از پردازش سیگنال را پشتیبانی می کنند.
این رقابت از افزوده شدن ضرب کننده ها به تراشه های FPGA شروع شد. به نظر می رسد که FPGA ها دارند جای DSP ها را در پروژه های پردازش سیگنال می گیرند، اما این به طور کلی درست نیست. بهترین جمله برای توصیف این رقابت آن است که FPGA و DSP مکمل یکدیگر هستند.
طبق تجربه انجام پروژه با FPGA قدرت پیاده سازی بالاتری به طرح و مجری پروژه می دهد. به عبارتی، کاری که از DSP بر میاید از FPGA نیز ساخته است، اما ممکن است الگوریتمی که با FPGA پیاده سازی شده است، با DSP قابل پیاده سازی نباشد.
بنابراین انجام پروژه با FPGA می تواند پاسخگوی پیاده سازی بسیاری از الگوریتم ها باشد.

پیاده سازی پردازنده در FPGA
در انجام پروژه با FPGA ها میتوان با اتصال مناسب گیت ها یک پردازنده مانند میکروکنترلر ARM و AVR ساخت و آن را با زبان C برنامه ریزی کرد.
در FPGA های شرکت زایلینکس این پردازنده میکروبلیز نام دارد و در FPGA های شرکت آلترا، نیوس نامیده می شود.
در واقع این یک میکروکنترلر است که درون FPGA پیاده سازی شده است و میتوان آنها را با زبان های C و C++ برنامه ریزی کرد. علاوه بر آن در FPGA مدل ZYNQ علاوه بر قسمت FPGA که PL نامیده می شود یک بخش دیگر به نام PS داریم که خود چند هسته پردازنده ARM به صورت جدا است.

انتخاب پردازنده برای انجام پروژه با FPGA
تاکنون جهت بررسی انجام پروژه با FPGA به برخی قابلیت های کلیدی FPGA اشاره شد، اما بسته به نوع پردازش و کاربرد مدنظر، نوع داده های مورد پردازش، حجم پردازش، میزان هزینه مدنظر، زمان اجرای پروژه میتوان پردازنده های مختلفی را جهت تکمیل پروژه انتخاب کرد.
FPGA، ARM، AVR، GPU، CPU، PIC، CPLD و … تراشه هایی هستند که می توانند جهت انجام پروژه به عنوان پردازنده مورد استفاده قرار گیرند. در این مورد می توانید از گروه مهندسی آریادنا مشورت بگیرید.
زبان های انجام پروژه با FPGA
برای برنامه نویسی FPGA میتوان از زبان های مختلفی استفاده نمود. زبان های VHDL و Verilog یا به فارسی وریلاگ، زبان های متداولی هستند که در انجام پروژه با FPGA از آنها استفاده میشود.
اما نرم افزارهای جدید در حوزه برنامه نویسی FPGA به ما این امکان را میدهد که با زبانهای سطح بالاتر نیز بر روی FPGA برنامه نویسی کنیم.
مثلا در نرم افزار Vivado HLS که یکی از نرم افزارهای شرکت زایلینکس است، قابلیت برنامه نویسی به زبان های C و C++ برای FPGA نیز وجود دارد.
این قابلیت برای FPGA های شرکت آلترا نیز فراهم آمده است با نرم افزار Intel HLS compiler. همچنین برای برنامه نویسی ZYNQ که یک مدل FPGA با هسته پردازنده ARM است میتوان با پایتون نیز برنامه نویسی کرد که به آن PYNQ گفته میشود.
اما در انجام پروژه با FPGA اگر بخواهیم که پروژه در بهینه ترین حالت برنامه نویسی شود استفاده از زبان های سطح سخت افزار انتخاب بهتری هستند. در گروه مهندسی آریادنا جهت انجام پروژه با FPGA از زبان های مختلف برنامه نویسی طبق صلاح دید و همچنین ترجیح کارفرما انجام میشود.
برتری انجام پروژه با FPGA نسبت به CPU و ARM
در انجام پروژه میتوان از پردازنده های مختلفی استفاده کرد. بسته به نوع داده و حجم پردازش و عوامل تاثیرگذار دیگر ممکن است انجام پروژه با FPGA، ARM، GPU و …. باشد.
یکی از برتری های FPGA پردازش موازی است. به گونه ای که بسته به نوع برنامه نوشته شده میتواند چندین پردازش را به صورت همزمان به انجام رساند.
سوالاتی که باید برای انجام پروژه با FPGA پاسخ دهید:
هزینه انجام پروژه با FPGA چقدر است؟
به عبارتی چه محدودیت بودجه ای برای این مورد در نظر گرفته شده است. با احتساب هزینه مورد نظر میتوان نوع پردازنده و نحوه ی انجام پروژه را مشخص کرد. معمولا هزینه به دو بخش سخت افزار و برنامه نویسی تقسیم میشود.
زمان انجام پروژه FPGA چقدر مورد اهمیت است؟
در این مورد باید مشخص شود که چه محدوده ی زمانی باید پروژه مد نظر به اتمام برسد. این مورد میتوان از سمت شما یا از سمت ما تعیین گردد. به عنوان مثال ممکن است از سمت شما اعلام گردد که پروژه فقط سه ماه زمان دارد.
سرعت پردازش:
در این مورد ما در شرکت آریا دنا صنعت با مشورت با شما مشخص میکنیم که سرعت پردازش داده ها باید چقدر باشد. به عنوان مثال برای داده برداری از داده های صوتی معمولی برای هر میکروفون میتوان سرعتی حدود 48 کیلو سمپل در هر ثانیه را در نظر گرفت.
حجم پردازش داده:
این مورد بسته به تعداد خطوط ورودی ، فرستنده ها، ارتباط های پروژه و الگوریتم پردازشی مشخص شود. به عنوان مثال ممکن است در یک مورد انجام پروژه با FPGA، 100سنسور در ورودی باشد، الگوریتم، مجموع آنها را در خروجی آنالوگ نمایش دهد و ارتباط با اترنت برقرار شود.
توان مصرفی:
در برخی موارد انجام پروژه با FPGA، توان پایین مد نظر است که یکی از ویژگی های این پردازنده است. اگر توان مورد اهمیت باشد، باید مشخصا اعلام گردد تا در انتخاب نوع پردازنده و الگوریتم پردازشی دقت شود.
کاربرد FPGA:
کاربرد از دو جهت مورد اهمیت است. اولا اینکه آیا شرایط کاری که قرار است پردازنده در آن کار کند شرایط معمولی است یا قرار است در شرایط خاص مورد استفاده قرار گیرد به عنوان مثال قرار است پردازنده در یک محیط با دمای بالا مورد استفاده قرار گیرد.
دوما اینکه بسته به نوع کاربرد، الگوریتم ها نیز تغییر خواهند کرد. به عنوان مثال در پروژه های مخابراتی معمولا یکی از نیازها پردازش داده در حوزه فرکانس است که در صورت اعلام کاربرد پروژه میتوان موارد مورد نیاز را بررسی و اعمال کرد.
پروتکل ارتباطی:
در انجام پروژه با FPGA گاهی اوقات نیاز به برقراری ارتباط با سیستم های دیگر اهمیت پیدا میکند، به عنوان مثال ممکن است نیاز باشد پردازنده با شبکه به کامپیوتر متصل گردد. یا به عنوان مثال سنسورهای مورد استفاده از پروتکل خاصی جهت ارتباط استفاده میکنند.
نرم افزار:
در بیشتر موارد علاوه بر سیستم طراحی شده با FPGA، نیاز به یک نرم افزار در کامپیوتر است که بتواند با پردازنده، ارتباط برقرار کند و به آن دستور داده یا از آن داده دریافت کند. در صورت نیاز به نرم افزار باید مشخصات مورد نظر اعلام گردد.
طراحی برد خاص:
گاهی اوقات پروژه ها نیاز به طراحی بردهای خاص دارند که در این مورد با مشورت با کارفرما این اقدام صورت میگیرد. البته قابل ذکر است که این مورد در هزینه و زمان انجام پروژه موثر است و در صورتی که واقعا نیاز باشد صورت میپذیرد.
پردازش بلادرنگ:
در برخی پروژه های خاص نیاز به پردازش بدون وقفه یا به عبارتی real time است. در این مورد نیز با تعریف پروژه میتوان تصمیمات مورد نظر را جهت انجام پروژه با FPGA اتخاذ کرد. همچنین اگر نیاز به کار پیوسته پردازنده باشد، استفاده از خنک کننده مهم است.
نیاز به ذخیره سازی:
در انجام پروژه با FPGA ممکن است نیاز باشد نتیجه پردازش در یک حافظه یا در کامپیوتر ذخیره گردد که در آن صورت باید مشخص گردد که حجم حافظه مورد نیاز و سرعت ذخیره سازی چقدر است.
علاوه بر موارد ذکر شده ممکن است بسته به نوع پروژه نیازهای دیگری مدنظر شما باشد به عنوان مثال اندازه سیستم، استاندارد خاص، نیاز به خنک کننده و …. که در آن صورت با مطرح کردن موارد مدنظر همکاران ما در شرکت آریا دنا صنعت موارد را در اسرع وقت بررسی و پاسخ خواهند گفت.
راههای ارتباطی
برای مشاوره و انجام پروژه با FPGA می توانید از طریق راههای ارتباطی در صفحه تماس با ما یا منوی سمت چپ همین صفحه، در تماس باشید.