اولین نکته این است که آیا لازم است پروژه با FPGA انجام شود؟؟ چون این تراشه نسبت به پردازنده های دیگر خوبی و بدی های خودش را دارد.
ابتدا ببینیم FPGA چیست؟
واژه FPGA یا (Field Programmable Gate Array)مخفف آرایه ی گیت های میدانی برنامه پذیر است. در واقع تشکیل شده از بلوک های LUT و اتصالات قابل برنامه ریزی.
صفر و یک شدن این LUT ها (که نوعی مالتی پلکسر هستند) و اتصال درست آنها به هم میتواند طیف وسیعی از الگوریتم ها را پیاده سازی کند.
یک شمای کلی از این ساختار را میتوانید در این تصویر ببینید. هرچند برخی موارد مانند حافظه های داخلی، ضرب کننده ها و غیره در این تصویر آورده نشده و هدف یک شمای کلی است.
زمان پروژه FPGA
زمان انجام این پروژه ها نسبت به زمانی که میخواهید یک برنامه با میکروکنترلرها بنویسید طولانی تر است. چراکه زبان برنامه نویسی آن HDL و در سطح زبان ماشین است.
در واقع طراحی سخت افزار است نه برنامه نویسی. اما زمان آن نسبت به ساختن یک تراشه ASIC کمتر است چرا که نیاز به ساخت تراشه جدید با معماری خاص نیست.
هزینه پروژه FPGA
هرچند هزینه نسبی است اما به دو دلیل بالاتر از بقیه تراشه هاست. اولا FPGA نسبت به ARM و AVR گرانتر است. دوما زبان برنامه نویسی آن HDL است که در قیمت پروژه موثر است. قیمت نیز مانند دیگر پروژه ها به دو عامل بستگی دارد 1-مواد اولیه 2-هزینه نیروی انسانی.
زبان FPGA
همانطور که گفته شد زبان برنامه نویسی FPGA زبان های پیاده سازی سخت افزار است. دو حالت برای برنامه نویسی متصور است.
الف-زبان سطح پایین که بهینه هستند. VHDL و Verilog دو زبان توصیف سخت افزار هستند که برای برنامه نویسی FPGA استفاده میشوند.
از زبان های سطح بالا نیز برای برنامه نویسی استفاده میشود اما در نهایت آنها نیز به این زبانها ترجمه میشوند.
ب-زبان های سطح بالا 1-VivadoHLS-2 Matlab Simulink. در HLS میتوان با C برنامه نویسی کرد و در نرم افزار متلب نیز میتوان با بلوک دیاگرام سخت افزار را توصیف کرد.
انتخاب پردازنده و برد
نکته مهم بعدی در برنامه نویسی FPGA نوع پردازنده است. پردازنده بر اساس حجم پردازش، توان مصرفی، هزینه و نوع کاربرد میتواند متفاوت باشد اما به طور کلی میتوان تصمیم گیری هایی کرد.
اگر به دنبال توان مصرفی پایین و هزینه کم هستید میتوانید به سمت پردازنده ای مانند ARTIX بروید. اگر برعکس به دنبال عملکرد بالا و پردازش سنگین هستید و قیمت برایتان مهم نیست میتوانید به سمت پردازنده های Virtex بروید.
پردازنده های Kintex نیز از نظر عملکرد، قیمت و توان مصرفی بین این دو پردازنده هستند. البته هرکدام از این پردازنده ها خود دارای نمونه های مختلفی هستند که میتوانید برای انتخاب بهتر به دیتاشیت آن محصول مراجعه کنید.
توجه شود که در اینجا در مورد FPGA های شرکت Xilinx صحبت شده است که بیشترین کاربرد را دارند.
مزیت پروژه با FPGA
1-انجام پردازش به صورت موازی.
میتوانید همزمان چندین پردازش را در آن انجام دهید.
2-پردازش در زمان واقعی و به صورت Real time.
میتوانید پردازش ها را به صورت بلادرنگ انجام دهید بدون آنکه پردازنده هنگ کند.
3-ساختن معماری هایی که در دیگر پردازنده ها ممکن نیست (تطبیق پذیری).
مثلا میتوانید یک ماژول که برنامه آن ممکن است در دیگر پردازنده ها نباشد با زبان سخت افزار راه اندازی کنید.
4-دسترسی به پایین ترین سطح سخت افزار.
مثلا در کامپیوتر ها منطق 32 بیت و 64 بیت معنا پیدا میکند اما در FPGA میتوانید مثلا 23 بیت هم تعریف کنید و به صورت بهینه از سخت افزار استفاده کنید.
5-مصرف توان پایین تر.
شاید دیده باشید که در ماینرها دومین انتخاب FPGA است، بعد از ASIC ها. این به همین دلیل مصرف توان پایین است.
6-نمونه سازی و ورود به بازار سریع.
اگر ایده یک سخت افزار به سرتان خورده باشد بهترین و سریع ترین راه برای ساخت آن FPGA است. مثلا فرضا میخواهید یک نوع ماینر بسازید، FPGA نزدیکترین گزینه پیش روی شماست.
7-قابلیت SOC
در FPGA های سری ZYNQ و در دیگر سری ها با پیاده سازی میکروبلیز، میتوان یک سیستم کامل روی این تراشه ها پیکر بندی شود. مثلا شما میتوانید یک لینوکس کامل را روی FPGA داشته باشید.
بدی های انجام پروژه با FPGA
1-هزینه:
ممکن است هزینه پروژه زیاد شود، البته این لزوما عبارت درستی نیست.
2-پیچیدگی پیاده سازی:
پیچیدگی پیاده سازی و همچنین ارتقاء سیستم سخت است. چراکه زبان آن زبان توصیف سخت افزار و زبان ماشین است.
3-زمان:
ممکن است زمان پیاده سازی آن نسبت به میکروکنترلرها و CPU ها بیشتر شود. مهم است که این را در نظر داشته باشید.
و بالاخره معرفی وبسایت برای سفارش انجام پروژه FPGA.