FPGA چیست؟ احتمالا واژهی FPGA به گوشتان خورده است. FPGA سرواژهی عبارت Field Programmable Gate Array (آرایه درگاه قابل برنامهریزی) است. FPGAها، دستگاههای شگفتانگیزی هستند که افراد را قادر میسازند، مدارهای دیجیتالی مورد نظر خود را طراحی کنند. هزینههای استفاده از FPGA آنقدر پایین آمده که اشخاص حقیقی هم میتوانند به راحتی از آن استفاده کنند. FPGA در واقع یک تختهی خالی است که به خودی خود، هیچ کارایی خاصی ندارد؛ همه چیز به شما و چگونگی پیکربندی دستگاه بستگی دارد.
یکی از دلایل جذاب بودن FPGA این است که برخلاف ASIC (برنامه مدار مجتمع)، مدار از قبل طراحی نشده و می توانید آن را هر چند بار که دوست دارید مجدداً تنظیم کنید! ساخت ASIC میلیونها دلار هزینه دارد و هفتهها یا ماهها طول می کشد.
متن پیادهسازیشدهی ویدیو – FPGA چیست؟
سلام. من جاستین هستم از Embedded Micro. به این ویدیوی آموزشی خوش آمدید. در این ویدیو، دربارهی چیستی FPGA و تفاوت آن با میکروکنترلرها، توضیح میدهم. FPGA سرواژهی عبارت Field Programmable Gate Array (آرایه گیت قابل برنامهریزی) است. در واقع با استفاده از FPGA، به جای نوشتن برنامههایی که روی سختافزارهای از پیش ساخته اجرا میشوند، میتوانید یک سختافزار را به طور کامل برنامهریزی کنید.
یک مثال عملی
برای روشنتر کردن موضوع، مثالی میزنم که میتوانید با FPGA یا میکروکنترلر انجام دهید. در پروژه، هدف ما این است که با فشردن یک دکمه، لامپ LED روشن شود و با فشردن مجدد آن، لامپ خاموش گردد. برای اجرای این پروژه با استفاده از یک میکروکنترلر، کافی است دکمه و لامپ را به میکروکنترلر متصل کنید. با برنامهنویسی، میتوانید پروژه را به پایان برسانید. در واقع، در اینجا، CPU موجود در میکروکنترلر، رابطی بین کاربر، دکمه و لامپ است و دستورات را اجرا میکند. حال اگر بخواهید این پروژه را به وسیلهی FPGA اجرا کنید، کافی است دکمه را با استفاده از تکهای سیم به لامپ متصل کنید! در واقع، شما سعی کردهاید، سختافزار را برنامهریزی کنید. اگر بخواهید با فشردن دکمه لامپ خاموش شود و با فشردن مجدد آن روشن، چه کار میکنید؟ کافی است از یک درگاه معکوس (Not Gate) استفاده کنید.
تفاوت FPGA و میکروکنترلر
مدار مد نظر ما، مستقل از هر وسیلهی دیگری که در FPGA موجود است، عمل میکند. این نکته، بسیار اهمیت دارد. فرض کنید به موازات مدار ذکر شده، مدار دیگری با عملکرد مشابه در FPGA قرار دهیم. به علت آنکه این مدارها کاملا مستقل عمل میکنند با هیچگونه تاخیری مواجه نخواهیم شد؛ اما در میکروکنترلرها، موضوع کمی متفاوت است. میکروکنترلر برای پردازش اعمال گوناگون، زمان و قدرت پردازشی خود را، بین آن اعمال تقسیم میکند. مزیت ذکرشدهی FPGA نسبت به میکروکنترلر بسیار اهمیت دارد.
کاربردهای واقعی FPGA چیست؟
FPGAها، ابزارهای بسیار قدرتمندی هستند. در واقع هر نوع مدار دیجیتال، حتی پردازندهها را میتوانید با استفاده از افپیجیای پیادهسازی کنید. البته اگر از قدرت FPGA در کنار میکروکنترلر استفاده کنید، نتایج بسیار حیرتانگیزی به دست میآورید. من در حال حاضر، در حال کار بر روی پروژهی Hexapod (شش پا) هستم. در این وسیله، میکروکنترلر با اجرای کدهایی، تعیین میکند که پاها باید در چه جایی قرار بگیرند. FPGA نیز حدود ۲۰ سیگنال PWM (مدلسازی عرض پالس یا Pulse Width Modulation) مختلف را کنترل میکند. انجام این کار با استفاده از یک میکروکنترلر غیر ممکن است؛ زیرا، تنها ۳ تا ۶ خروجی PWM دارند. FPGA همچنین، کار دریافت تصاویر از دوربین، ذخیرهسازی آنها در یک رم و پردازش تصاویر را انجام میدهد. امیدوارم این ویدیو، به شما دید خوبی نسبت به FPGA داده باشد.
تفاوت FPGA با میکروکنترلر
میکروکنترلر با FPGA کاملا فرق دارد! در میکروکنترلرهایی مانند آردوئینو، تراشه (chip) از قبل طراحی شده است. کاری که باید انجام دهید آن است که با استفاده از زبان C یا ++C، برنامهای بنویسید و پس از تبدیل آن به فایل hex، بر روی میکروکنترلر بارگذاری کنید. میکروکنترلر فایل hex را بر روی فلش مموری ذخیره میکند. در واقع، با استفاده از میکروکنترلر میتوانید نرمافزار را کنترل کنید.
اما FPGAچیست؟ اف پی جی ای در واقع به تنهایی عملکرد خاصی ندارد؛ اما با پیکربندی درست میتوان آن را تبدیل به هر سخت افزار دیجیتال مورد نیاز کرد. با استفاده از برد اف پی جی میتوان انواع مدارهای منطقی را پیاده سازی کرد.
در FPGA، بر خلاف میکروکنترلر، شما هستید که مدار را طراحی میکنید. هیچ پردازندهای برای اجرای برنامهها وجود ندارد؛ حداقل قبل از اینکه آنرا طراحی کنید! اما به طور دقیقتر FPGAچیست؟ افپیجیای میتواند به سادگی یک درگاه (gate) باشد یا به پیچیدگی یک پردازندهی چند هستهای! با کمک زبان توضیحی سختافزار (Hardware Description Language یا HDL)، میتوانید مدار مورد نظر خود را طراحی کنید. دو HDL خیلی معروف Verilog و VHDL هستند. پس از آن با تبدیل HDL به یک فایل بیت (bit file)، میتوانید FPGA را پیکربندی کنید. دقت کنید که اطلاعات FPGA بر خلاف میکروکنترلر بر روی رم ذخیره میشود؛ بنابراین با قطع اتصال برق، اطلاعات و در نتیجه پیکربندی از دست میرود. با FPGA، در واقع میتوانید سختافزار را کنترل کنید.
یکی از نکات جذاب افپیجیای آن است که توانایی ساخت پردازنده را برای شما فراهم میکند. شرکتهایی مانند Intel و Nvidia، پروتوتایپ تراشههای خود را با استفاده از FPGA میسازند و پس از انجام تستهای مورد نیاز، اقدام به ساخت تراشهی واقعی میکنند.
ساختار اف پی جی ای
اجزای اصلی تشکیلدهندهی FPGA چیست؟
- Look-Up Table
- بلوک های منطقی قابل پیکر بندی یا CLB
- سیم شبکه اتصالات با قابلیت برنامه ریزی
- بلوک های ورودی و خروجی
- حافظه های داخلی
- منابع کلاک
کاربردهای بیشتر FPGA چیست؟
به دلیل ذات برنامهپذیر بودن خود، FPGA کاربردهای فراوان و در حوزههای متنوعی دارد. برخی از این کاربردها عبارتند از:
- استفاده در پردازش تصویر، تولید موج و پیکربندی جزئی برای SDRها
- استفاده گسترده در ارتباطات و کاربردهای مولتی مدیا
- راهکار مقرون به صرفه برای نمایشگرهای صفحه دیجیتال تخت، لوازم اطلاعاتی و شبکه خانگی
- کاربرد در دیتاسنترها
- پردازش و ذخیرهسازی اطلاعات با کارایی بسیار بالا
- کاربردهای تشخیصی، نظارتی و درمانی در پزشکی
- تبدیل دیجیتال به آنالوگ صوت
- پردازش سیگنال دیجیتال (Digital Signal Processing یا DSP)
- تشخیص صوت
- پردازش تصویر
- کاربردهای مختلف در بیوانفورماتیک
فواید استفاده از FPGA
آرایه درگاه قابل برنامهریزی نسبت به سختافزارهای دیگر مزایا و فواید فراوانی دارد؛ برخی از این فواید عبارتند از:
- سرعت پردازشی بالاتر نسبت به مدارهای مشابه
- امکان اجرای پردازش موازی و تعریف چند هسته مختلف
- امکان شخصیسازی کامل سختافزار با توجه به نیازها
- برنامه نویسی ساده
طراحی و برنامه نویسی FPGA چگونه است؟
با استفاده از زبان HDL یا با طراحی شماتیک، میتوان مشخص کرد که یک مدار اف پی جی ای چگونه کار میکند. زبان HDL در پروژهها و طراحیهای بزرگتر کاربرد دارد و دست ما را باز میگذارد تا هر طراحی دلخواهی انجام دهیم؛ اما طراحی شماتیک ساختار سادهتری دارد. بنابراین طراحی شماتیک، تصویرسازی از مدار و ماژولهای آن را راحتتر میکند. با استفاده از یک ابزار اتوماسیون طراحی الکترونیک (Electronic Design Automation یا EDA) میتوان یک netlist از مدار مورد نظر تهیه کرد؛ سپس با استفاده از نرمافزارهای خاصی و طی یک فرایند به نام place-and-rout، نتلیست را میتوان به مدار واقعی FPGA تبدیل کرد. کاربر پس از تهیه مدار میتواند با استفاده از متدلوژیهای مختلف مانند تایمینگ یا شبیهسازی، درستی عملکرد را تست کند. زبان HDL یک زبان سطح پایین (در حد اسمبلی!) است و کدنویسی با آن کار راحتی نیست. برای تسهیل کار زبانهای دیگر و کتابخانههای متعددی توسعه داده شدهاند.
سازندگان اصلی FPGA در دنیا
دو شرکت زیلینکس و آلتِرا (زیرمجموعه اینتل)، رهبران بازار ساخت FPGA هستند. در سال ۲۰۱۶، این دو شرکت ۹۰ درصد بازار را در دست داشتهاند. این دو شرکت همچنین نرمافزارهای جامعی برای ویندوز و لینوکس توسعه دادهاند که امکانات مختلفی را در اختیار متخصصان FPGA قرار میدهد.