اگر تا به حال با میکروکنترلرها سر و کار داشته اید، حتما برای شما این اتفاق افتاده است که بخواهید چندین کار را به صورت همزمان پیش ببرید؛ این کار با استفاده از میکروکنترلر امکان پذیر نیست. به همین دلیل fpga ها جایگزین خیلی خوبی هستند که می توانند به خصوص در پروژه های بزرگ و انجام عملیات به صورت همزمان به شما کمک کنند. در این مطلب با مفهوم و نحوه خرید fpga، کاربردها، ساختار، مزایا و معایب و تفاوت آن با میکروکنترلر آشنا می شویم.
فهرست مطالب
اف پی جی ای Fpga چیست؟
اگر برای شما هم این سوال پیش آمده که Fpga مخفف چیست ؟ باید بدانید که این عبارت مخفف field programmable gate array، بوده و یک تراشه نیمه رسانای قابل برنامه ریزی است که از اجزای الکترونیکی کوچکی به نام بلوک منطقی (logic block) یا سلول منطقی (logic cell) تشکیل شده است. به Fpga یا همان آرایه درگاه قابل برنامه ریزی، تراشه fpga هم گفته می شود چرا که امکان برنامه ریزی متناسب با نیاز کاربران و امکان تغییر در روابط منطقی بین داده های ورودی و خروجی را دارد. با استفاده از اف پی جی ای، کاربران می توانند مدار های خاص خود را طراحی کرده و بسازند. در واقع خود FPGA تنها یک برد خالی است که قابلیت ویژه ای ندارد بلکه هنگامی که شما مطابق نیازهایتان آن را پیکر بندی می کنید، کارایی پیدا می کند. برای خرید اف پی جی ای کافی است به فروشگاه اینترنتی دیجی قطعه مراجعه کرده و محصول مورد نظرتان را با بهترین قیمت و کیفیت خریداری کنید.
ساختار اف پی جی ای و نحوه عملکرد آن به چه صورت است؟
در رابطه با کارکرد fpga می توان گفت که این برد دارای ساختاری منظم از سلول های منطقی یا ماژول هاست و در واقع مجموعه ای از گیت های منطقی(logic gates) است که طبق پروگرام شما باهم کار می کنند. به طور دقیق تر اف پی جی شامل 3 بخش اصلی است:
Lut در fpga چیست ؟
LUT (look up table) یا جدول صحت در fpga تعیین می کند که عملکرد هر جزء آن به چه صورت باشد. هر LUT چندین ورودی و یک خروجی دارد و همانطور که از نام آن پیداست، یک جدول صحت، یک جدول واقعی است که بر اساس ورودی ها، یک خروجی ایجاد می کند. در ادامه یک نمونه از یک جدول صحت آورده ایم که عملکرد یک گیت AND را اجرا می کند. اکنون سعی کنید تصور کنید که این جدول در یک RAM کوچک ذخیره شده است. ورودی های A و B پین آدرس و C پین داده است. هر بار که پینهای آدرس شما در حال تغییر هستند، به ورودی آدرس دیگری اشاره میکنند و نتیجه را میخوانند که بر اساس ورودی ها مقدار 0 یا 1 می گیرد.
LUT در fpga در واقع جدول صحت سفارشی شده شما است که بر اساس نیازها و دستورالعمل های خاص شما با مقادیر مرتبط با اف پی جی ای شما بارگذاری می شود. حتی می توانید جدول صحت سفارشی یا LUT خود را به عنوان یک قطعه کوچک RAM در نظر بگیرید که هر زمان که تراشه FPGA خود را فعال می کنید، بارگذاری می شود و رفتار منطق تراشه شما را بر اساس کد VHDL یا Verilog تعریف و هدایت میکند و با ارجاع به مقادیر از پیش تعیین شده، نتایج مورد نظر را ایجاد میکند.
بنابراین میتوانید نتیجه بگیرید که LUT اساساً مانند گیتهای منطقی در ترکیب های مختلف عمل میکند. به جای اتصال تعدادی گیت NAND و NOR مختلف، می توانید به سادگی از جدول صحت برای دریافت تمام ترکیبات ممکن استفاده کنید.
فلیپ فلاپ یا flip flop (FF)
فلیپ فلاپ ها رجیستر های شیفت باینری (دودویی) هستند که برای همگام سازی منطق و ذخیره حالت های منطقی بین چرخه های کلاک در یک مدار fpga استفاده می شوند. در هر لبه کلاک، یک فلیپ فلاپ مقدار 1 یا 0 (TRUE یا FALSE) را در ورودی خود می گیرد و آن مقدار را تا لبه کلاک بعدی ثابت نگه میدارد.
بلوک های ورودی/خروجی (I/O)
این پورت ها داده ها را در داخل و خارج از اف پی جی ای دریافت می کنند و اساسا شامل پین ها و پدهای ورودی/خروجی (GPIO) همه منظوره است.
بسته به مدل سازنده، FPGA ها همچنین می توانند شامل حافظه های ایستا و پویا روی تراشه باشند. علاوه بر این، در اف پی جی ای ها می توانید اجزای آماده مانند هسته های CPU، کنترل کننده های حافظه، کنترل کننده های USB یا کارت های شبکه را بیابید. این کامپوننت ها آنقدر محبوب هستند که نیازی به پیاده سازی آنها در ساختار FPGA نیست. در عوض، می توانید از یک جزء ساخته شده از قبل استفاده کنید.
کاربرد fpga چیست ؟
FPGAها در دهه گذشته به رشد سریعی دست یافته اند زیرا برای طیف وسیعی از کاربردها مفید هستند. کاربرد خاص یک اف پی جی ای شامل موارد زیر می شود:
- پردازش سیگنال دیجیتال
- سیستم های مخابراتی
- رادیو نرم افزاری
- بیو انفورماتیک
- کنترل کننده دستگاه های مختلف
- منطق تصادفی
- نمونه سازی اولیه ASIC
- تصویر برداری پزشکی
- شبیه سازی سخت افزار کامپیوتر
- ادغام چندین SPLD
- تشخیص صدا
- رمز نگاری
- فیلتر کردن
- رمز گذاری ارتباطات
- و …
معمولاً اف پی جی ای ها برای کاربردهای خاصی که حجم تولید کم است، استفاده می شوند. برای این برنامه های کم حجم، شرکت های برتر هزینه های سخت افزاری را به ازای هر واحد پرداخت می کنند. برخی از کاربرد های رایج دیگر FPGA عبارتند از: هوافضا و کاربرد نظامی، الکترونیک پزشکی، مرکز داده، محاسبات با کارایی بالا، کاربردهای صنعتی، پزشکی، ابزارهای علمی، سیستم های امنیتی، پردازش ویدئو و تصویر و ارتباطات با سیم و بی سیم. در ادامه به چند مورد از کاربرد های مهم اف پی جی ای در صنایع مختلف می پردازیم.
Fpga چه کاربردهای نظامی دارد؟
اف پی جی ها در برد های پردازش سیگنال برای کاربردهای نظامی و دفاعی مانند رادار و سونار مورد استفاده قرار می گیرند و قابلیت های بسیاری، به ویژه در فناوری ارتباطات را در اختیار قرار می دهند. اف پی جی ای ها با انجام کار 12 پردازنده چند منظوره (GPP)، مشکل برق را حل کرده اند. اغلب FPGA ها در رادارها نسبت به کاربردهای سونار، نقش بیشتری در عملکرد پردازش سیگنال دارند.
کاربرد FPGA در زمینه مهندسی پزشکی
FPGA در طول سال های اخیر پیشرفت های چشمگیری داشته است. قابلیت هایی از جمله پردازش موازی و تطبیق پذیری و پروگرام کردن مجدد، این برد ها را تبدیل به گزینه ای مهم و غیر قابل چشم پوشی در کاربرد های گوناگون ساخته است. عرصه مهندسی پزشکی به دلیل ظرافت و نیاز به سرعت بالا در پردازش لحظه ای سیگنال های دریافتی از بدن بیمار می تواند به خوبی از کاربرد این سیستم ها بهره گیری کند.
کاربرد اف پی جی در در مهندسی برق
با استفاده از اف پی جی ای میتوان انواع برنامه نویسی ها را به سادگی انجام داد و امکان پیاده سازی مدارهای پیچیده دیجیتالی با استفاده از FPGA وجود دارد. اف پی جی ای ها دارای قابلیت پردازش موازی هستند که میتوان چند عملیات را به صورت هم زمان در آن به انجام رساند. همچنین سرعت پردازش و ارسال فرمان در اف پی جی ای، بالاست یعنی چند برابر فرکانس میکروکنترلر هاست. از جمله کاربردهای fpga در زمینه مهندسی برق، می توان به آزمایش کردن مدار ها، تبدیل دیجیتال به آنالوگ و کاهش توان مصرفی اشاره کرد.
تفاوت fpga و میکروکنترلر چیست؟
یکی از تفاوت های اصلی بین میکروکنترلر و FPGA این است که یک FPGA ساختار سخت افزاری ثابتی ندارد، در حالی که یک میکروکنترلر دارای ساختار سخت افزاری ثابتی است. در حالی که FPGA ها شامل سلول های منطقی ثابت هستند، این سلول ها، همراه با اتصالات، می توانند به صورت موازی با استفاده از زبان کدگذاری HDL برنامه ریزی شوند. این بدان معناست که FPGA ها از پیش تعریف شده نیستند و می توان آنها را بر اساس برنامه های کاربردی و نیاز کاربر تغییر داد.
از سوی دیگر، میکروپروسسورها ساختار سختافزاری ثابتی دارند، به این معنی که تمام اجزای آن، از جمله پردازنده، حافظه، دستگاههای جانبی و اتصالات از پیش تعریف شده هستند. با استفاده از نرم افزار، طراحان می توانند پردازنده را برای انجام وظایف دلخواه برنامه ریزی کنند.
FPGA بهتر است یا میکروکنترلر؟
به طور کلی، پردازنده هایی از جمله میکروکنترلرها برای کنترل معمول مدارهای خاص، مانند استفاده از سوئیچ یا کلید برای روشن و خاموش کردن یک دستگاه، مناسب تر هستند. اف پی جی ای ها برای برنامه هایی مناسب هستند که خاص تر بوده و به قدرت یا سرعت پردازش بالاتری نیاز دارند. به عنوان مثال، بهترین مورد برای پردازش داده های ویدئویی با وضوح بالا با استفاده از یک پلتفرم FPGA است.
مزایای استفاده از FPGA
FPGA مزایای متعددی دارد؛ از جمله مهم ترین آن ها می توان به موارد زیر اشاره کرد:
- FPGA ها را می توان در سطح منطقی برنامه ریزی کرد. از این رو می تواند پردازش سریعتر و موازی سیگنال ها را اجرا کند. درحالی که انجام این کار توسط یک پروسسور مانند میکروکنترلر دشوار است.
- بر خلاف ASIC که پس از پروگرام کردن ثابت می شوند، اف پی جی ای ها در هر زمان در سطح نرم افزار قابل پروگرام کردن هستند. از این رو آی سی اف پی جی ای را می توان مجدداً پروگرام کرد یا هر چند بار که می خواهید مورد استفاده مجدد قرار داد. FPGA همچنین می تواند از راه دور پروگرام شود.
- آی سی های FPGA به راحتی در دسترس هستند که می توانند با استفاده از کد HDL در کمترین زمان پروگرام شوند.
- برخلاف ASIC که به NRE (هزینههای غیر تکراری) زیاد و ابزارهای پر هزینه نیاز دارد، توسعه اف پی جی ای به دلیل ابزارهای کم هزینه و بدون NRE ارزان تر است.
- در طراحی اف پی جی ای ، نرم افزار به مسیریابی، مکان یابی و زمان بندی رسیدگی می کند و این مسئله باعث می شود مداخله دستی کمتری انجام شود.
معایب fpga
در کنار مزایای زیادی که دارد، FPGA ها معایبی نیز دارند که برخی از آن ها به شرح زیر هستند:
- برنامه نویسی FPGA به دانش زبان های برنامه نویسی VHDL/Verilog است و به اصول سیستم دیجیتال نیاز دارد. برنامه نویسی آن به سادگی برنامه نویسی زبان C نیست که در سخت افزار مبتنی بر پردازنده استفاده می شود. علاوه بر این مهندسان باید استفاده از ابزارهای شبیه سازی را بیاموزند.
- مصرف برق آن بیشتر است و برنامه نویسان هیچ کنترلی روی بهینه سازی توان در اف پی جی ای ندارند. در صورتی که چنین مشکلی در ASIC وجود ندارد.
- وقتی هر FPGA خاصی انتخاب شد و در طراحی استفاده شد، برنامه نویسان باید از منابع موجود در آی سی FPGA استفاده کنند. این امر اندازه و ویژگی های طراحی را محدود می کند. برای جلوگیری از چنین وضعیتی، باید در ابتدا اف پی جی ای مناسب انتخاب شود و سپس طراحی را آغاز کنید.
- FPGA ها برای نمونه سازی و تولید مقادیر پایین بهتر هستند. هنگامی که مقدار اف پی جی ای هایی که باید تولید شوند افزایش می یابد، هزینه هر محصول نیز افزایش می یابد؛ اما در مورد پیاده سازی ASIC شرایط این گونه نیست.
آینده اف پی جی ها به چه سمتی می رود؟
در آینده، بازار FPGA بیش از پیش گسترش می یابد. تولیدکنندگان اصلی CPUهای استاندارد با خرید شرکتهای متخصص در FPGA، سبد محصولات خود را گسترش میدهند. اف پی جی ای ها نیز به طور گسترده در شبکه ها استفاده خواهند شد. به غیر از سلول های منطقی قابل برنامه ریزی، آنها حاوی عناصر سیلیکونی بسیار تخصصی، یعنی کنترل کننده های رابط شبکه هستند.
از دیدگاه یک Developer یا توسعه دهنده، مدارهای اف پی جی ای گیتهای منطقی بیشتری خواهند داشت که به ما اجازه میدهند عملکردهای پیچیدهتری را پیادهسازی کنیم. بنابراین می توانید عملکردهای شبکه بیشتری را در یک مدار واحد و تجهیزات سخت افزاری قرار دهید که البته این امر مراحل پیاده سازی را هم پیچیده تر خواهد کرد.
می توان گفت FPGA یک دستگاه نادر در الکترونیک است، زیرا دارای مزایای بسیار قوی و معایب کمی است. به همین دلیل است که در بسیاری از موقعیت ها به پردازنده دیجیتال منتخب تبدیل شده است. با انتخاب یک اف پی جی ای منطبق با طراحی، می توان عملکرد بالا، توان کم و هزینه کم همراه با سهولت نسبی در تعبیه طرح ها و الگوریتم های سطح بالا را تضمین کرد. همه اینها با مزایای امکان برنامه ریزی میدانی همراه است، به این معنی که طراحی را می توان بدون نیاز به NRE یا تاخیر زمانی بالا تست، دیباگ یا اشکال زدایی کرد و به راحتی تغییر داد.