آموزش FPGA قسمت اول
سخت یا آسون؟
اصولا ما آدما اگر در اون لحظه سنگی به سرمون نخورده باشه سعی میکنیم که همیشه تو زندگیمون آسونترین راه را انتخاب کنیم. اجازهبدید یه مثال براتون بزنم، فرضکنید یک سیستم مهندسی داریم و باید این سیستم را با یک معادله ی ریاضی توصیف کنیم و دو راهحل برای توصیف این سیستم وجود دارد:
- توصیف سیستم با یک معادلهی جبری
- توصیف سیستم با یک معادلهی دیفرانسیل
واضحو مبرهن است که ما راه اول را انتخابخواهیمکرد. چرا؟ چون هنوز داغ انواع روشهای شناختهشده و شناختهنشده حل معادلات دیفرانسیل تازهست ولی ما مهندسا دیگه اینقدر پوستمون کلفتشده که از یک معادله جبری نمیترسیم.
حالا فرضکنید که یک معادله جبری نمیتواند این سیستم مهندسی را بهطور کاملا صحیحی توصیفکند، چارهچیست؟ چارهای نیست جزاینکه برویم سراغ توصیف این سیستم با یک معادلهی دیفرانسیل، بالاخره همیشه که دو راه یا چندراه وجود ندارد بعضیوقتا پیشمیاد که یک راه و راهدیگری نیست.
دیگه وقتشه که از مقدمه گذر کنیم و بریم سراغ اصل مطلب، ولی قبلش اینو بدونید راهی که ما انتخابکردیم، راه دوم یعنی سختترین راه میباشد، بعدا خودتون دلیلش رو خواهید فهمید.
اسم این مسیری که ما انتخابکردیم و ظاهرا هم ترسناک بهنظر میاد (نگراننباشید بعدا متوجهخواهید شد که اونقدرا هم ترسناک نیست) موجودی است به نام FPGA یا بهطور دقیقتر Field Programmable Gate Array.
مسیر پیشرفت تکنولوژی…
اگر اجازهبدهید گذری به مسیر تاریخی که منجربه تولید FPGA شد داشتهباشیم، در گذشته طراحان الکترونیک برای پیادهسازی توابع و اعمالمنطقی خود از آیسیها بهره میجستند ولی کمکم با گستردگی و پیچیدهترشدن سیستمهای الکترونیکی این روش دیگر کارآمد نبود، راهجدید به اینصورت بود که ما تمامی مشخصات طرح خود را به کارخانه تحویل میدادیم و کارخانه سازنده طرح موجود را پیادهسازی میکرد و به ما تحویل میداد. از مزایای این روش هرچه بگوییم کم گفتیم. کاهش قابلملاحظه ابعاد و حجم سیستم، کاهش نویز و توانمصرفی از مزایای این روش بودند اما یک عیب بسیاربزرگ وجود داشت، عیبی که ما در یک طرح مهندسی یا در تولید یک محصول، اکثراوقات همهچیز را فدای اون میکنیم، یعنی بالابودن هزینه تولید یک نمونه از طرحی که ما تحویل کارخانه دادیم. ازطرفیدیگر تکنولوژی این روش چندان فراگیر نبود. همین دو عیب بزرگ باعث شد تا راهحل دیگری جایگزین شود، راهحل ساخت تراشههای قابل برنامهریزی. اما این تراشهها یکدفعه ساخته نشدند. در اوایل کار یکسری تراشه ساختهشدند که بیشتر بهعنوان حافظههای قابل برنامهریزی استفاده میشدند تا بهعنوان پیادهسازی توابع منطقی ولی عیب بزرگ این تراشهها این بود که قابلیت بازنویسی مجدد را نداشتند ولی کمکم این عیب برطرف شد و این تراشهها بااستفادهاز اشعهی ماورای بنفش قابلیت پاکشدن را داشتند و ما میتوانستیم آنها را بازنویسی کنیم. این مسیر بههمینمنوال پیشرفت تااینکه این تراشهها بااستفادهاز سیگنالهای الکتریکی پاک میشدند. خب تاالان احساس میکنید که تراشههای بسیارجالبی ساختهشدند ولی این همهی داستان نیست در ادامه به جاهای جالبتر خواهیم رسید. بالاخره همهی این پیشزمینهها طی شد تااینکه اولین تراشه برنامهپذیر برای مدارات منطقی ساختهشد و درنهایت پیشرفت در این نوع از تراشهها منجربه ساخت FPGA شد.
مقایسه؟
وقتی ما از سختی حرف میزنیم غالبا درمقایسهبا عملیدیگر این صفت را بهکار میبریم، حالا مقایسهای که ما میخواهیم انجامبدهیم مقایسهای خواهد بود بین FPGA و یک نوع پردازنده مثلا AVR یا ARM. حداقل امکاناتی که میتواند در یک پردازنده وجود داشته باشد شامل CPU، حافظههای دائمی و موقت و ورودی-خروجیها میباشد.
اما تقریبا هیچکدام از امکاناتی که در پردازندهها وجود دارند در FPGA وجود ندارند مگر ورودی-خروجیها و یکسری منابع دیگر که بعدا بیشتر باهاشون آشنا خواهیمشد. خب تاالانکه هرچی بدی تو دنیا وجود داره به این FPGA بدبخت نسبتدادیم و میگوییم که سختترین راه نیز هست.
پس دلیلش چیه که بخواهیم از این موجود بهرهببریم؟ شاید باورتون نشه تنها یک دلیل، فقط یک دلیل وجود داره که ما را مجبوربه استفادهاز این موجود میکنه و اون دلیل چیزی نمیتونهباشه جز سرعت بسیار بالای این نوع تراشهها.
اما در دل FPGA چهچیزی نهفتهاست که میتونه همچین سرعتی داشتهباشه؟ تازه بحثداره جالبمیشه و مطمئنم برای شما نیز خیلی هیجانانگیزه وقتی کاملا متوجه طرز کار این نوع از تراشهها بشید.
باید بگم که در FPGA چیزی به اسم CPU وجود ندارد، یکیاز دلایلاصلی سرعت٬زیاد در دل همین نکته نهفتهاست. خب بهتره اول یه نگاهی به دیاگرام زیر بیندازید تا بعد بهتر بتونیم درمورد این موضوع باهم صحبتکنیم.
شاید تاالان با یک نگاه مفهومی به دیاگرام بالا متوجهشدهباشید که ادامه صحبت ما درمورد چه خواهد بود. همانطورکه میبینید در پردازنده یک CPU وجود دارد که بهترتیب دستور C1 را روی دیتای D1 و دستور C2 را روی دیتای D2 اعمال خواهد کرد و بههمینترتیب تا آخر، توجهکنید که این اعمال همزمان صورت نمیپذیرد بلکه بهصورت یکی پساز دیگری انجامخواهدشد، اما در FPGA بهطورهمزمان دستور C1 روی دیتای D1 و دستور C2 روی دیتای D2 اعمالخواهدشد و بههمیننحو بهصورت همزمان و موازی باهم تا آخر.
نتیجهکلی که میتوان گرفت این است که در پردازندهها در هرلحظه از زمان تنها یک دستور می تواند اجرا شود اما در FPGA در هرلحظه از زمان چندین عملیات منطقی بهصورت مستقل ازهم و موازی میتواند انجامشود.
اما یک دلیل عمده دیگر نیز هست که سرعت این نمونه از تراشهها را بسیارزیاد میکند، در پردازندهها معماری ثابت است و ما فقط برای آن برنامهنویسی میکنیم و سخت افزار تقریبا هیچگونه انعطافی ندارد. تنها عامل قابلتغییر برنامهای است که ما مینویسیم. اما در FPGA همانطورکه قبلا گفتیم تقریبا هیچگونه سختافزار از قبل آمادهای وجود ندارد. به اینصورتکه ما از یکسری منابع موجود برای هر کاربرد جدیدی یک مدار دیجیتال را بهصورت بهینه پیادهسازی میکنیم و الگوریتمهای زیادی برای پیادهسازی این سختافزار وجود دارد که آنرا بهصورت بهینهترین حالت ممکن پیادهسازی میکند. همین انعطاف در سختافزار، عاملدیگر سرعت زیاد در این نوع تراشه هاست و اصولا در FPGA هیچگونه برنامهای(منظور برنامهای که با یک زبان برنامهنویسی ایجاد میشود) وجود ندارد و فقط باید به فکر توصیف یک سختافزار از منابع موجود بود.
قبلاز اینکه بحثمون تموم بشه و بدانید که کارآسونی هست و میتونید از عهدهش بربیایید این نوید را بهتون بدم که برای توصیف یک سختافزار در درون FPGA، اشراف کامل بر مدارات دیجیتال نیاز نیست و درک منطق مداردیجیتالی که میخواهیم طراحی کنیم، میتواند راه را بسیار برایما هموار کند. بااستفادهاز زبان توصیف سختافزاری که بعدا باهاش آشنا خواهیمشد و یک کد، میتونیم مدار موردنظر خود را طراحیکنیم، ولی ناگفته نماند که در اکثر اوقات آشنایی هرچه بیشتر با مدارات دیجیتال میتواند به ما کمک کند که طراحی را بهتر و سریعتر انجامبدهیم.
امیدوارم که تا به این جای کار از این موضوع خوشتون اومده باشه، در قسمتهای بعدی بهطور مفصل درمورد منابع درونی، چگونگی ایجاد سختافزار بااستفادهاز منابع درونی، مزایا و معایب و اینکه چه مواقعی و به چهنحوی سراغ اینگونه از تراشهها برویم صحبت خواهیمکرد.
در قسمت دوم آموزش FPGA به نحوهی انتخاب FPGA میپردازیم. با ما همراه باشید.
منبع: سیسیوگ