آموزش FPGA قسمت دوم: چرا و چگونه FPGA را انتخاب کنیم؟

آموزش FPGA قسمت دوم: چرا و چگونه FPGA را انتخاب کنیم؟

آموزش FPGA قسمت دوم: چرا و چگونه FPGA را انتخاب کنیم؟
آموزش FPGA قسمت دوم: چرا و چگونه FPGA را انتخاب کنیم؟

آموزش FPGA قسمت دوم: چرا و چگونه FPGA را انتخاب کنیم؟

چه موقع سراغ FPGA برویم؟

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

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

این الگوریتم یا توسط خود ما طراحی می‌شود یا از قبل به ما داده شده است؛ ولی نکته اصلی در اینجا این است که ما چقدر وقت داریم تا این الگوریتم را به پایان برسانیم که خواسته مسئله برآورده شود.

ما در اینجا سعی می‌کنیم با یک مثال به توضیح این مسئله بپردازیم.

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

فرض کنید که الگوریتم ما دارای 10 میلیون دستور می‌باشد که هر دستور در یک کلاک به اتمام می‌رسد و زمانی که جسم متخاصم برای اولین بار ظاهر شد، رادار حداکثر 10 میلی ثانیه وقت دارد تا سیستم دیگر را خبر کند.

سرعت، زمان و حجم اجرای الگوریتم در برنامه نویسی

با توجه به شکل بالا فرض کنید ما زمان لازم برای اجرای الگوریتم را 10 میلی‌ثانیه در نظر گرفتیم، در زمان 0 میلی ثانیه رادار هیچ جسم متخاصمی را مشاهده نمی‌کند، در زمان 4 میلی ثانیه جسم متخاصم برای اولین بار ظاهر می شود، اما چون رادار از زمان 0 میلی ثانیه تا زمان 10 میلی ثانیه مشغول اجرای الگوریتم می‌باشد، نمی‌تواند جسم متخاصم را تشخیص دهد. تا زمان 10 میلی ثانیه که اجرای الگوریتم به پایان می‌رسد، با فرض اینکه جسم متخاصم در دید رادار می‌باشد، رادار می‌تواند آن را تشخیص دهد و در زمان 20 میلی ثانیه به سیستم دیگر گزارش دهد. اما با توجه به شکل مشاهده می‌شود از زمانی که جسم مورد نظر ظاهر شد تا زمانی که گزارش به سیستم دیگر رسید، 16 میلی ثانیه طول کشید که این خواسته مسئله ما یعنی حداکثر تاخیر 10 میلی ثانیه را برآورده نمی‌کند.

پس راه حل چیست؟ راه حل این است که زمان اجرای الگوریتم را باید کمتر کنیم و دوباره همین سناریو را تکرار کنیم. این بار زمان اجرای الگوریتم را 5 میلی ثانیه در نظر می‌گیریم و سناریو را تکرار می‌کنیم.

سرعت، زمان و حجم اجرای الگوریتم در برنامه نویسی

با توجه به شکل بالا در زمان 0 میلی ثانیه رادار هیچ جسم متخاصمی را مشاهده نمی کند و در زمان 2 میلی ثانیه جسم متخاصم برای اولین بار ظاهر می‌شود، اما چون رادار از زمان 0 میلی ثانیه تا زمان 5 میلی ثانیه مشغول اجرای الگوریتم می‌باشد، نمی‌تواند جسم متخاصم را تشخیص دهد. تا زمان 5 میلی ثانیه که اجرای الگوریتم به پایان می‌رسد، با فرض اینکه جسم متخاصم در دید رادار می‌باشد، رادار می تواند آن را تشخیص دهد و در زمان 10 میلی ثانیه به سیستم دیگر گزارش دهد. با توجه به شکل بالا مشاهده می‌شود از زمانی که جسم مورد نظر ظاهر شد تا زمانی که گزارش به سیستم دیگر رسید، 8 میلی ثانیه طول کشید که این زمان خواسته مسئله ما را برآورده کند.

حال که به خواسته مسئله رسیدیم باید تعیین کنیم که این مسئله با چه ابزاری قابل پیاده سازی می‌باشد.

تفاوت میکروکنترلر با FPGA

ما باید 10 میلیون دستور را در زمان 5 میلی ثانیه اجرا کنیم، یعنی باید سرعت مورد نظر 2GHZ باشد. فرض کنید ما دو نوع میکروکنترلر AVR و ARM در دسترس داریم که حداکثر سرعت معمول نوع اول 20MHZ و حداکثر سرعت نوع دوم 500MHZ می باشد اما سرعت مورد نیاز ما را هیچکدام از این دو نوع میکروکنترلر برآورده نخواهد کرد، پس ما نمی‌توانیم از این میکروکنترلر‌ها استفاده کنیم و به ناچار باید سراغ FPGA برویم.

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

در این قسمت قصد داریم در مورد منابع داخلی FPGA نیز صحبت کنیم و بحث ماهیت و ساختار را به پایان برسانیم.

منابع داخلی FPGA به صورت کلی به دو دسته کلی زیر تقسیم می شوند:

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

منابع عمومی شامل فلیپ فلاپ‌ها یا همان حافظه‌ها و یک سری Logic Block یا (Logic Cell (LC می‌باشد.

 Logic Block یا (Logic Cell (LC

شکل بالا نمایی از یک LC می‌باشد، همانطور که مشاهده می‌کنید LUT بخشی از LC می‌باشد و با تقریب می‌توان گفت که LC و LUT معادل همدیگر هستند.

منابع اختصاصی شامل هر منبعی به جز فلیپ فلاپ و LUT می‌باشد، از این نوع منابع می‌توان به ضرب کننده‌ها، منابع کلاک، ورودی_خروجی‌ها و شیفت رجیستر‌ها اشاره کرد.

در نهایت این منابع توسط سیم‌ها و اتصالات قابل برنامه‌ریزی به هم متصل می‌شوند که البته این اتصالات خود نیز از منابع داخلی FPGA می‌باشند.

در شکل زیر می توانید منابع داخلی و نحوه قرار گیری آن ها در کنار همدیگر را مشاهده کنید.

 

منابع داخلی در FPGA

در قسمت‌ سوم آموزش FPGA سراغ نرم‌افزار و زبان توصیف سخت افزار یعنی نرم‌افزار ISE و زبان VHDL خواهیم رفت. با سیسوگ همراه باشید.

 

حمایت از سپهر

خوشحال میشیم برای تداوم و کیفیت ما رو حمایت کنید.

1 نفر

پــــســنــدیـده انـد

توجه

دیدگاه ها

8 دیدگاه

  • محمد عابدنظری
    ۱۲ مرداد ۱۴۰۰

    سلام دوستان
    از مطلب و مثال ارائه شده تان خیلی ممنونم
    در پناه امام زمان موفّق باشید

    • کامین جلیلی
      ۱۸ مرداد ۱۴۰۰

      سلام. سپاس از شما.

  • امیرحسین
    ۱۸ اسفند ۱۳۹۹

    ممنون خیلی عالی بود

    • کامین جلیلی
      ۱۸ اسفند ۱۳۹۹

      خواهش می‌کنم امیرحسین جان.

  • مهدی
    ۷ اردیبهشت ۱۳۹۸

    مثل همیشه عالی و ناب ادامه بدین
    آرزوی موفقیت دارم براتون

    • Phoenix
      ۱۰ اردیبهشت ۱۳۹۸

      ممنون از توجه شما دوست عزیز. و همچنین تیم سیسوگ نیز امیدوار است که شما بهره کافی از این مجموعه آموزشی را ببرید.

  • حمزه
    ۵ اردیبهشت ۱۳۹۸

    عالیه، باقدرت ادامه بدید.

پر بحث ترین ها

مسابقه دوم : چالش برنامه نویسی به زبان C

مسابقه اول سیسوگ (مسابقه اول: درک سخت افزار) انتقادهای زیادی رو در پی داشت تا جایی که حتی خودمم به نتیجه مسابقه...

Zeus ‌ Zeus ‌
  • 2 سال پیش

راه اندازی LCD گرافیکی Nokia 1661 و دانلود کتابخانه آن

LCD گرافیکی یکی از مهم ترین پارامترهای موجود در طراحی انواع مدارات الکترونیکی پیچیده و حتی ساده است ، نمایش وضعیت و...

Zeus ‌ Zeus ‌
  • 4 سال پیش

ریموت کدلرن و چکونگی دکد کردن آن به همراه سورس برنامه

ریموت کنترل امروزه کاربرد زیادی پیدا کرده است؛ از ریموت‌های درب بازکن تا ریموت‌های دزدگیر و کنترل روشنایی همه از یک اصول اولیه پیروی می‌کنند و آن‌هم ارسال اطلاعات به‌صورت بی‌سیم است....

Zeus ‌ Zeus ‌
  • 5 سال پیش

همه چیز درباره ریموت کنترل‌های هاپینگ

امنیت همیشه و در همه‌ی اعصار، مقوله‌ی مهم و قابل‌توجه‌ ای بوده و همیشه نوع بشر به دنبال امنیت بیشتر، دست به ابداعات و اختراعات گوناگونی زده است. ریموت کنترل یکی از این اختراعات است. در این مقاله، به بررسی امنیت انواع ریموت‌های کنترل خواهیم پرداخت....

Zeus ‌ Zeus ‌
  • 5 سال پیش

مسابقه سوم: استخراج داده از رشته ها در زبان C

نزدیک به 5 ماه از مسابقه دوم سیسوگ می‌گذره و فکر کردم که بد نیست یک چالش جدید داشته باشیم! البته چالش‌ها...

Zeus ‌ Zeus ‌
  • 2 سال پیش

مسابقه ششم: بزن میکروکنترلر را بسوزون!

بزنم میکروکنترلر را بسوزونم اونم تو  این شرایط!، طراحی مسابقه از اون چیزی که به نظر می‌رسه سخت‌تر است، باید حواست باشه...

Zeus ‌ Zeus ‌
  • 11 ماه پیش

آموزش قدم به قدم راه اندازی +NRF24L01

آموزش قدم به قدم راه اندازی +NRF24L01  با کتابخانه سازگار با انواع میکروکنترلرها و کامپایلرها قبل از اینکه قسمت بشه با ماژول...

رسول خواجوی بجستانی رسول خواجوی بجستانی
  • 3 سال پیش

ساخت ماینر با FPGA و ARM

چند ماهی هست که تب بیت کوین و ارزهای دیجیتال خیلی بالا رفته! چه شد که این پست را نوشتم همانطور که...

Zeus ‌ Zeus ‌
  • 3 سال پیش

کار با ماژول تمام عیار mc60 – قسمت دوم – راه اندازی OpenCPU

در قسمت اول به یکسری اطلاعات کلی ماژول mc60 پرداختیم، با نرم افزار QNavigator کار کردیم و یک هدربرد هم برای کار...

Mahdi.h   Mahdi.h  
  • 3 سال پیش

مسابقه چهارم: کدام حلقه سریع‌تر است؟

حدود ۷ ماه پیش، مسابقه سوم سیسوگ رو برگزار کردیم و کلی نکته در مورد خواندن رشته‌های ورودی را بررسی کردیم. فکر...

Zeus ‌ Zeus ‌
  • 1 سال پیش
سیـــســـوگ

مرجع متن باز آموزش الکترونیک