مقدمه
در سالهای اخیر ورود به بازار کار و کسب مهارت در یک حوزه تخصصی خاص تبدیل به یکی از مهمترین دغدغههای مهندسین سخت افزار و الکترونیک شده است. اما انتخاب تخصص موضوعی نیست که بتوان به سرعت روی آن به جمع بندی رسید. طی سالهای اخیر همواره یک رقابت تنگاتنگ میان تخصصهای مرتبط با تراشههای قابل پیکره بندی و تراشههای پردازنده شکل گرفته است و طرفدارن هر کدام مدام به مقایسه و بیان ویژگیهای کاری روی تراشههای محبوبشان پرداختهاند. در این بین، دست بالا معمولاُ در اختیار طرفداران ARM و DSP است. یکی از سوألاتی که ممکن است به شکلهای مختلف پرسیده شود، این است که چرا باید FPGA یاد بگیریم؟ چرا باید تا این حد زمان و هزینه صرف کنیم تا کار با FPGA ها را فرا بگیریم؟ واقعاً چرا باید به جای ARM و یا DSP کار با FPGA را یاد بگیریم؟ جواب بسیار کوتاه به این سوأل در علاقه و برنامه ریزی کاری شما نهفته است.
اگر واقعاً علاقمند به کار حرفهای در زمینه پیاده سازی الگوریتمها و طراحی سخت افزارهای دیجیتال هستید تنها زمین بازی موجود FPGA است. در خارج از ایران کار روی تراشههای ASIC برای طراحیهای پر تیراژ و بسیار سطح بالا و البته پر هزینه میتواند یک حق انتخاب هیجان انگیز و یک جایگزین مناسب برای FPGA باشد ولی فعلاً برای ما شرایط این کار مهیا نیست. تنها راهی که برای اجرای طراحیهای دیجیتال پر سرعت و حرفهای با هزینه نسبتاً مقرون به صرفه در مقایسه با ASIC ها وجود دارد، بدون شک FPGA است. در این نوشتار از پایگاه دانش هگزالینکس نگاهی کوتاه به کاربردها و ویژگیهای منحصر به فرد تراشههای FPGA و چشم انداز کاری متخصصان علاقمند به این حوزه خواهیم داشت.
کاربردهای تراشههای FPGA
اگر قصد شما تنها روشن و خاموش کردن چند LED و یا کنترل تعدادی سنسور در طی چند ثانیه است، میکرو کنترلر و پردازندههای ARM و حتی DSP ها گزینههای به مراتب بهتری نسبت به FPGA ها هستند. اما اگر هدف شما پردازش یک ویدئوی HD بلادرنگ و کنترل شدت و رنگ نور حدود ۶ میلیون LED با نرخ ۶۰ فریم بر ثانیه است، در این صورت تنها انتخاب شما FPGA است.
شما هرگز یک تراشه FPGA در تلفنهای همراه و یا تبلت خود پیدا نخواهید کرد، در حالی که مراکز سوئیچ و سیستمهای مخابراتی که تلفن همراه شما برای برقراری تماس به آن متصل میشود پر از FPGA است. مودمهای خانگی و سیستمهای هوشمندی که همگی به اینترنت متصل میشوند فاقد FPGA هستند ولی به احتمال فراوان در آن سر خط به یک FPGA متصل میشوند، تقریباً تمام زیر ساختهای شبکه و روترهای بزرگ در مراکز داده از FPGA استفاده میکنند.
اغلب تلویزیونهای پیشرفته امروزی یک یا چند تراشه FPGA دارند. تراشههای FPGA قلب تپنده اکثر دستگاههای تصویر برداری پزشکی مثل CT-Scan و MRI هستند. در اتومبیلهای خودران با توجه حجم بالای پردازش سیگنال بلادرنگ تراشههای FPGA انتخاب مناسبی هستند. عملکردهای مورد انتظار از FPGA در صنایع نظامی، رادار و ارتباطات برد بلند با هیچ چیز قابل جایگزینی نیست. آینده هوش مصنوعی، شبکههای عصبی، مراکز داده و بسیاری از موضوعات بسیار داغ امروزی همگی به FPGA گره خورده است.
الگوهای طراحی و پیاده سازی سخت افزارهای دیجیتال به سرعت در حال تغییر است، نکته حائز اهمیتی که در این مقطع زمانی بیش از پیش خودنمایی میکند. روالهای طراحی مبتنی بر HDL در حال جایگزین شدن با روالهای طراحی مبتنی بر HLS هستند. همه روزه شاهد هستیم که با توجه به بزرگ شدن و قدرتمندتر شدن تراشههای FPGA، استفاده از HDL و طراحی کاملاً RTL با زبانهای توصیف سخت افزاری VHDL و Verilog کاهش یافته است و در عوض استفاده از زبانهای سطح بالاتر ++C/C به شدت رو به افزایش است. اگرچه به کارگیری زبان C جریان طراحی و زمان توسعه محصول را بسیار ساده تر و سریعتر کرده اما متأسفانه در حال حاضر کیفیت نتایج حاصل از سنتزِ کدهای C در مقایسه با نتایج حاصل از سنتزِ کدهای HDL به اندازه کافی مناسب نیست. در واقع این ایده استفاده از یک کد C آماده و پیاده سازی بهینه سخت افزاری آن روی تراشه FPGA بدون داشتن هیچ دانش و آگاهی در رابطه با معماری تراشههای FPGA یک امید واهی است و ما همچنان باید منتظر سالهای آتی بمانیم تا این تغییر در الگوی طراحی به بلوغ کافی برسد.
مهندسان نرم افزاری که دانش کار با تراشههای FPGA را داشته باشند بسیار انگشت شمارند، همانطور که مهندسان طراح سخت افزار با دانشهای نرم افزاری محدود هستند. سالهای آتی متعلق به مهندسانی است که در هر دو بخش توانمند هستند. تقاضا برای همکاری با افرادی که در هر دو جنبه از مهارتهای کافی برخوردار باشند روز به روز در حال افزایش است.
جمع بندی
بنابراین با توجه به توضیحاتی که ارائه شد، بیایید فرض کنیم دنبال یک کار سرگرم کننده هستید و یا یک مهندس نرم افزار هستید، آیا باز هم نیاز به فراگیری روشهای طراحی روی FPGA دارید؟ پاسخ به این سوأل یک بله و یا خیر ساده نیست. بیشتر به بستگی به نوع علاقمندیهای شما دارد. مثلاً اگر علاقمند به استخراج رمز ارزها هستید، آشنایی با FPGA و آگاهی از شیوه طراحی سخت افزار برای شما ضروری است. اگر علاقمندی و یا فعالیتهای کاری شما در ارتباط با هوش مصنوعی و شبکههای عصبی است، بهتر است این را بدانید که ما در میانه راه یک انقلاب بزرگ طی سالهای آینده هستیم، راهی که در نهایت تمامی سرگرمیهای امروز را به کارهای مهم همه روزه ما تبدیل خواهد کرد.