FPGA چیست؟

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 این است که اعمال مورد نظر مستقیما از طریق المان‌های الکترونیکی انجام شده و پردازش به مفهومی که در CPU تعریف می‌شود، وجود ندارد. انجام یک پردازش در CPU یا میکروکنترلر نیازمند زمان است که فرایند را کند می‌کند؛ در حالی که در FPGA عملیات‌ها تقریبا به صورت بلادرنگ انجام می‌شوند (مثلا در حد چند نانوثانیه).

پردازش موازی

بردهای FPGA معمولا تعداد بسیار زیادی پایه دارند. این باعث می‌شود تا بتوانید تعداد زیادی ورودی به آن داده و برای هر کدام از آنها عملیات مورد نظرتان را به طور مستقل انجام دهید. بنابراین هیچ ورودی برای پردازش منتظر سایر اعمال نمی‌ماند و همه به طور همزمان انجام می‌شوند. این مورد برای کارهایی مثل پردازش تعداد زیادی سنسور، مزیت خیلی بزرگی به حساب می‌آید.

انعطاف‌پذیری

اینکه FPGA دقیقا چه کاری انجام دهد کاملا به طراح بستگی دارد. از این نظر FPGA به هیچ کدام از بردهای الکترونیکی دیگر شباهت ندارد. تفاوت FPGA با تراشه‌ها و بردهای از پیش آماده مثل CPU مثل تفاوت مداری است که روی بردبورد می‌بندید با یک برد مدار چاپی الکترونیکی (PCB). طبیعتا مورد اول را می‌توانید به هر صورتی که میخواهید تغییر دهید.

هزینه و زمان توسعه محصول

اگر بخواهید یک برد الکترونیکی معمولی به منظور خاصی بسازید، پس از ساخت برد ممکن است ایرادی در طراحی آن وجود داشته باشد. در این صورت مجبورید طرح را اصلاح کرده و مجددا برد جدید را بسازید. این کار زمان و هزینه زیادی را از شما تلف می‌کند. در صورتی که ایجاد تغییرات در FPGA بدون تغییر سخت‌افزار و با همان برد قابل انجام است.