FPGA, آموزش, توصیه شده, مقاله

آموزش FPGA قسمت اول: FPGA چیست؟

آموزش FPGA
آموزش FPGA قسمت اول ;

سخت یا آسون؟

اصولا ما آدما اگر در اون لحظه سنگی به سرمون نخورده باشه سعی می کنیم که همیشه تو زندگیمون آسون ترین راه را انتخاب کنیم. اجازه بدید یه مثال براتون بزنم، فرض کنید یک سیستم مهندسی داریم و باید این سیستم را با یک معادله ی ریاضی توصیف کنیم و دو راه حل برای توصیف این سیستم وجود دارد:
  • توصیف سیستم با یک معادله جبری
  • توصیف سیستم با یک معادله ی دیفرانسیل
واضح و مبرهن است که ما راه اول را انتخاب خواهیم کرد. چرا؟ چون هنوز داغ انواع روش‌های شناخته شده و شناخته نشده حل معادلات دیفرانسیل تازست ولی ما مهندسا دیگه اینقدر پوستمون کلفت شده که از یک معادله جبری نمی‌ترسیم. حالا فرض کنید که یک معادله جبری نمی‌تواند این سیستم مهندسی را به طور کاملا صحیحی توصیف کند، چاره چیست؟ چاره ای نیست جز اینکه برویم سراغ توصیف این سیستم با یک معادله‌ی دیفرانسیل، بالاخره همیشه که دو راه یا چند راه وجود ندارد بعضی وقتا پیش میاد که یک راه و راه دیگری نیست. دیگه وقتشه که از مقدمه گذر کنیم و بریم سراغ اصل مطلب، ولی قبلش اینو بدونید راهی که ما انتخاب کردیم، راه دوم یعنی سخت‌ترین راه می باشد، بعدا خودتون دلیلش رو خواهید فهمید. اسم این مسیری که ما انتخاب کردیم و ظاهرا هم ترسناک به نظر میاد (نگران نباشید بعدا متوجه خواهید شد که اونقدرا هم ترسناک نیست) موجودی است به نام FPGA یا به طور دقیق‌تر Field Programmable Gate Array.

مسیر پیشرفت تکنولوژی…

 

components_EPROMS

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

مقایسه؟

وقتی ما از سختی حرف می‌زنیم غالبا در مقایسه با عملی دیگر این صفت را به کار می‌بریم، حالا مقایسه‌ای که ما می‌خواهیم انجام بدهیم مقایسه‌ای خواهد بود بین FPGA و یک نوع پردازنده مثلا AVR یا ARM. حداقل امکاناتی که می‌تواند در یک پردازنده وجود داشته باشد شامل CPU، حافظه‌های دائمی و موقت و ورودی-خروجی‌ها می‌باشد.

معماری میکروکنترلر

اما تقریبا هیچ کدام از امکاناتی که در پردازنده‌ها وجود دارند در FPGA وجود ندارند مگر ورودی-خروجی‌ها و یک سری منابع دیگر که بعدا بیشتر باهاشون آشنا خواهیم شد. خب تا الان که هر چی بدی تو دنیا وجود داره به این FPGA بدبخت نسبت دادیم و می گوییم که سخت‌ترین راه نیز هست.
پس دلیلش چیه که بخواهیم از این موجود بهره ببریم؟ شاید باورتون نشه تنها یک دلیل، فقط یک دلیل وجود داره که ما را مجبور به استفاده از این موجود می کنه و اون دلیل چیزی نمیتونه باشه جز سرعت بسیار بالای این نوع تراشه ها.
اما در دل FPGA چه چیزی نهفته است که می‌تونه همچین سرعتی داشته باشه؟ تازه بحث داره جالب میشه و مطمئنم برای شما نیز خیلی هیجان انگیزه وقتی کاملا متوجه طرز کار این نوع از تراشه‌ها بشید. باید بگم که در FPGA چیزی به اسم CPU وجود ندارد، یکی از دلایل اصلی سرعت زیاد در دل همین نکته نهفته است. خب بهتره اول یه نگاهی به دیاگرام زیر بیندازید تا بعد بهتر بتونیم در مورد این موضوع با هم صحبت کنیم.

ساختار CPU

پردازش موازی

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

انتشار مطالب با ذکر نام و آدرس وب سایت سیسوگ، بلامانع است.

شما نیز میتوانید یکی از نویسندگان سیسوگ باشید.   همکاری با سیسوگ

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

16 دیدگاه در “آموزش FPGA قسمت اول: FPGA چیست؟

  1. M.r.pourmalaekeh محمدرضا گفت:

    سلام خداقوت.
    میخواستم سوالی راجع به شروع کار با fpga ها بپرسم.
    و اون اینه که برای شروع کار با fpga ها چه دانش و مهارت هایی لازمه.
    البته به غیر از مدار منطقی و زبان توصیف سخت افزاری.
    مثلا ایا لازمه که طراحی pcb های فرکانس بالا رو بلد باشیم.
    یا میتونیم در پروژه ها از بورد های اماده استفاده کنیم؟
    و این که برای شروع کار با fpga ها چه سخت افزاری رو پیشنهاد میکنید؟
    مثلا از چه بوردی برای شروع استفاده کنیم؟

    1. Kamin Jalili Kamin Jalili گفت:

      سلام محمدرضای نازنینم.

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

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

      در مورد طراحی برد هم خدمتتان عرض کنم که غالب افرادی که با FPGA کار می‌کنند نه تنها طراحی فرکانس بالا بلد نیستند، بلکه کلا طراحی برد بلد نیستند چون یک تخصص جداست اگرچه بلد بودنش یک کهن مثبت شاید بتونه باشه.

      پیشنهاد من اینه که در ابتدای کار حتما و حتما از بردهای آماده استفاده کنید. و چون در ابتدای کار هستید و بهتر است که از نرم‌افزار ISE استفاده کنید پس بردی مبتنی بر تراشه SPARTAN 6 تهیه کنید.

      این برد در سایت سیسوگ موجود است، برای جزئیات بیشتر به لینک زیر مراجعه کنید:

      https://sisoog.com/product/%D8%A8%D8%B1%D8%AF-alinx-%D8%A8%D8%A7-%D8%AA%D8%B1%D8%A7%D8%B4%D9%87-spartan-6-xc6slx9/

  2. مهدی گفت:

    سلام و خسته نباشید شدید!!!
    تازه با سایتتون و بخش های مختلفش دارم آشنا میشم… واقعا خوشحالم پیداتون کردم.
    من فقط از FPGA شنیدم و تو دانشگاه کد زدنشو تاحدودی یادگرفتم
    ولی جواب این سوالو نفهمیدم لطفا شما جواب بدید؟!
    من با FPGA میتوانم …..؟
    چندتا نمونه بزرگ و کوچک بگید
    ممنون

    1. Kamin Jalili Kamin Jalili گفت:

      سلام دوست نازنینم. سپاس از نظر مثبت و لطف شما نسبت به ما.

      اگه منظورتون را درست متوجه شده باشم، منظورتان این است که از کاربردهای FPGA بگم.

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

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

  3. محمدجواد گفت:

    واقعا خیلی روان و راحت مینویسید احسنت
    خیلی حال کردم دمت گرم

    1. Kamin Jalili Kamin Jalili گفت:

      سپاس از توجه شما دوست نازنینم. ما تمام سعی‌مان را می‌کنیم که مفاهیم را به صورت ساده و کاربردی برای شما توضیح بدهیم.

  4. سحاد گفت:

    قلم روانی دارید
    خدا قوت

    1. Kamin Jalili Kamin Jalili گفت:

      شما لطف دارید دوست عزیز. ☺️☺️??

  5. علی گفت:

    با تشکر. بی صبرانه منتظر قسمت بعدی هستیم‌.

    1. Kamin Jalili Kamin Jalili گفت:

      سپاس. توجه شما، به ما انگیزه بیشتری در نگارش هر چه بهتر این مجموعه خواهد داد.

  6. akam گفت:

    فونیکس جان عالی بود
    منتظر قسمت بعد هستیم?

    1. Kamin Jalili Kamin Jalili گفت:

      سپاس از توجه شما. قسمت های بعدی به زودی با همین کیفیت منتشر خواهد شد.

  7. حمید جمالی گفت:

    بسیار عالی
    به قول استیو جابز ؛
    شرکتهای پیشرو در صنعت کامپیوتر سخت افزار مورد نیازشان را خودشان درست میکنند

    1. Kamin Jalili Kamin Jalili گفت:

      بعضی وقتا از این حدی که شما می فرمائید نیز گذر کرده، مثلا در سال 2016 اینتل، آلترا را به ارزش 16.7 میلیارد دلار خریداری کرد.

  8. navid گفت:

    سیسوگ جان دیگه داری خیلی خیلی حرفه ایی میشیااا
    دمت گرم همینطور ادامه بده