کاربردهای تراشه های FPGA
اگر کمی با ابزارهای الکترونیکی و میکروکنترلرها کار کرده باشید، شاید برای شما هم پیش آمده باشد که بخواهید تعداد زیادی عملیات را به طور همزمان انجام دهید. مثل من که برای اولین بار میخواستم دادههای تعداد زیادی سنسور متصل به یک ربات را به طور همزمان بخوانم و پردازش کنم. حتما میدانید که همزمانی در میکروکنترلر معنی ندارد و در واقع همه کارها پشت سر هم انجام میشود. در نتیجه اتفاقی که واقعا میافتاد این بود که تمام سنسورهای من باید منتظر میماندند تا دادههای قبلی پردازش شود. برای کارهای کوچک شاید این مسئله زیاد به چشم نیاید اما وقتی حجم اطلاعات بیشتر شود به یک مسئله جدی تبدیل میشود. بعد از این موضوع بود که متوجه شدم چیزی که من به آن نیاز داشتم یک برد FPGA بوده است.
اگر طراحی برد الکترونیکی برایتان جذابیت دارد، FPGA یکی از موضوعاتی است که باید در مورد آن بدانید. در این مطلب در مورد موارد زیر صحبت خواهیم کرد:
FPGA چیست؟
کاربردهای FPGA چیست؟
FPGA چه مزایا و معایبی دارد؟
برنامه نویسی FPGA
FPGA چطور کار میکند؟
FPGA چیست؟
FPGA یا field programmable gate array تراشههای نیمهرسانایی هستند که از تعداد زیادی جزء کوچک الکترونیکی به نام بلوک منطقی (Logic Block) یا سلول منطقی (Logic cell) ساخته شدهاند. از نظر من FPGA چیزی بین یک مدار الکترونیکی و یک میکروکنترلر است. همان طور که از نام آن برمیآید FPGA یک تراشه قابل برنامهریزی است.
کوچکترین جزء سازنده میکروکنترلرها و همین طور پردازندهها (CPU) المانهای الکترونیکی به نام گیتمنطقی (Logic gate) است. این گیت ها سادهترین اعمال منطقی مانند AND و OR را انجام میدهند. از همین المانها برای انجام اعمال ساده ریاضی مثل جمع و ضرب استفاده میشود و در نهایت مجموعه بزرگی از این گیت ها یک فرایند پیچیده را تشکیل میدهند. ساختار داخلی CPU ها و میکروکنترلرها در کارخانه سازنده به طور کامل طراحی شده و تمام گیتها به نحو خاصی و طبق معماری مشخصی ساخته شده و قابل تغییر نیستند.
اصلیترین تمایز FPGA با موارد قبل این است که در این حالت، تراشه یک ساختار خام دارد و شما میتوانید ساختار و معماری و نحوه ارتباطات بین گیتهای منطقی را خودتان تعریف کنید. نتیجه این تمایز این میشود که FPGA یک برد از پیش آماده نیست، بلکه با انتخاب و طراحی کاربر، میتواند مثل یک مدار الکترونیکی ساده یا یک واحد پردازش سیگنال و یا حتی مثل یک CPU عمل کند. از طرفی FPGA قابلیت برنامهریزی مجدد را نیز دارد که دست طراح را برای انجام تغییرات باز میگذارد.
مزایا و معایب FPGA
بردهای FPGA توانایی انجام کارهایی را دارند که انجام آنها با ابزارهای دیگر بسیار مشکل یا غیرممکن است؛ اما در عین حال مثل هر چیز دیگری بدون عیب هم نیست.
مزایا:
سرعت بالا
مهمترین عاملی که باعث میشود افراد به سراغ برد FPGA بروند سرعت بسیار بالای آن است که به هیچ وجه با یک میکروکنترلر قابل مقایسه نیست. علت سرعت بالای FPGA این است که اعمال مورد نظر مستقیما از طریق المانهای الکترونیکی انجام شده و پردازش به مفهومی که در CPU تعریف میشود، وجود ندارد. انجام یک پردازش در CPU یا میکروکنترلر نیازمند زمان است که فرایند را کند میکند؛ در حالی که در FPGA عملیاتها تقریبا به صورت بلادرنگ انجام میشوند (مثلا در حد چند نانوثانیه).
پردازش موازی
بردهای FPGA معمولا تعداد بسیار زیادی پایه دارند. این باعث میشود تا بتوانید تعداد زیادی ورودی به آن داده و برای هر کدام از آنها عملیات مورد نظرتان را به طور مستقل انجام دهید. بنابراین هیچ ورودی برای پردازش منتظر سایر اعمال نمیماند و همه به طور همزمان انجام میشوند. این مورد برای کارهایی مثل پردازش تعداد زیادی سنسور، مزیت خیلی بزرگی به حساب میآید.
انعطافپذیری
اینکه FPGA دقیقا چه کاری انجام دهد کاملا به طراح بستگی دارد. از این نظر FPGA به هیچ کدام از بردهای الکترونیکی دیگر شباهت ندارد. تفاوت FPGA با تراشهها و بردهای از پیش آماده مثل CPU مثل تفاوت مداری است که روی بردبورد میبندید با یک برد مدار چاپی الکترونیکی (PCB). طبیعتا مورد اول را میتوانید به هر صورتی که میخواهید تغییر دهید.
هزینه و زمان توسعه محصول
اگر بخواهید یک برد الکترونیکی معمولی به منظور خاصی بسازید، پس از ساخت برد ممکن است ایرادی در طراحی آن وجود داشته باشد. در این صورت مجبورید طرح را اصلاح کرده و مجددا برد جدید را بسازید. این کار زمان و هزینه زیادی را از شما تلف میکند. در صورتی که ایجاد تغییرات در FPGA بدون تغییر سختافزار و با همان برد قابل انجام است.
آرایه دروازه برنامهپذیر در محل (FPGA) (آرایهی دروازهی میدانی برنامهپذیر) یک مدار یکپارچه طراحی شدهاست که پس از ساخت، توسط مشتری یا طراح قابل برنامهریزی در محل خود است؛ از این رو به آن «برنامهپذیر در محل» گفته میشود. پیکربندی FPGA بهطور کلی با استفاده از یک زبان توصیف سخت افزاری (HDL)، مشابه آنچه که برای یک مدار یکپارچه خاص برنامه (ASIC) مورد استفاده قرار میگیرد، مشخص میشود. (نمودارهای مدار قبلاً برای مشخص کردن پیکربندی استفاده شده بود، همانطور که برای ASICها بود، اما این بهطور فزایندهای نادر است.)
FPGAها حاوی آرایهای از بلوکهای منطقی برنامهریزی شده و سلسله مراتبی از اتصالات مجدد قابل تنظیم است که اجازه میدهد بلوکها با یکدیگر هماهنگ شوند، مانند بسیاری از دروازههای منطقی که میتوانند در پیکربندیهای مختلف به یکدیگر متصل شوند. بلوکهای منطقی را میتوان برای انجام وظایف ترکیبی پیچیده یا گیت منطقی ساده مانند AND و XOR پیکربندی کرد. در اکثر FPGAها، بلوکهای منطقی شامل عناصر حافظه میشوند که ممکن است فلیپ فلاپهای ساده یا بلوکهای کاملتر حافظه باشد.[
شرکتهای مختلفی در دنیا در حال تولید تراشههای FPGA هستند. گرچه ماهیت تولیدات تمام این شرکتها مشابه است، اما هر کدام سعی میکنند با ارائه محصولی که از نظر الکترونیکی خصوصیات مطلوبتری دارد، از دور رقابت خارج نشوند. نکته مهم دیگر برای باقی ماندن در این بازار رقابت، ارائه نرمافزارها و خدمات جانبی قویتر است که باعث تفاوت قابل توجه در جذب مشتریان شده است.
از شرکتهای مهم تولید کننده تراشههای FPGA میتوان به Xilinx ،Altera ،Lattice Semiconductor و Microsemi و QuickLogic اشاره کرد. در میان این شرکتها، Xilinx و Altera بیشترین میزان فروش را در دنیا و در کشور خودمان ایران دارند.