در طراحی یک ماشین پیچیده الکترونیکی مانند یک کامپیوتر، همیشه لازم بود که تعداد اجزای مربوطه را به منظور پیشرفت فنی افزایش دهیم، در این راستا تقریباٌ در تمام محصولات الکترونیکی از مدار یکپارچه استفاده شده است. یک مدار یکپارچه یا IC مجموعه ای از قطعات الکترونیکی همچون مقاومت، ترانزیستور، خازن و غیره است که همه آنها در یک تراشه ریز قرار گرفته اند و برای رسیدن به یک هدف مشترک به یکدیگر متصل می شوند. مدارهای یکپارچه هزاران ترانزیستور را در یک تراشه کوچک بسته بندی می کنند که از نظر کارایی، پیچیدگی و اندازه در طیف وسیعی وجود دارند. آرایه دروازه برنامه پذیر در محل یا FPGA یک مدار یکپارچه طراحی شده است که پس از ساخت، توسط مشتری یا طراح قابل برنامه ریزی در محل خود میباشد.
اگر تا به حال با میکروکنترلرها سر و کار داشته اید، حتماً برای شما این اتفاق افتاده است که بخواهید چندین کار را به صورت همزمان پیش ببرید، این کار با استفاده از میکروکنترلر امکان پذیر نیست. به همین دلیل FPGA ها جایگزین خیلی خوبی هستند که می توانند به خصوص در پروژه های بزرگ و انجام عملیات به صورت همزمان به شما کمک کنند. FPGA یا field programmable gate array تراشه های نیمه رسانایی هستند که از تعداد زیادی جزء کوچک الکترونیکی به نام بلوک منطقی یا Logic Block و سلول منطقی یا Logic cell ساخته شده اند. به FPGA آرایه درگاه قابل برنامه ریزی، تراشه اف پی جی ای هم گفته می شود چرا که امکان برنامه ریزی متناسب با نیاز کاربران و امکان تغییر در روابط منطقی بین داده های ورودی و خروجی را دارد. با استفاده از تراشه کاربران می توانند مدار های خاص خود را طراحی کرده و بسازند. در واقع خود FPGA تنها یک برد خالی است که قابلیت ویژه ای ندارد بلکه هنگامی که شما مطابق نیازهایتان آن را پیکر بندی می کنید، کارایی پیدا می کند.
این مدار در حقیقت به تنهایی ارائه دهنده عملکردی خاص نیست و می توان گفت این تراشه با یک پیکربندی مناسب است که می تواند تبدیل به راهی برای ساخت هر نوع سخت افزار دیجیتال شود. این قابلیت تراشه ای است برنامه پذیر که پس از ساخت، این امکان را برای طراحان و کاربران ایجاد می کند که آن را جهت پیاده سازی یک و یا چند مدار منطقی مورد استفاده قرار دهند. علت این که از این تراشه به عنوان تراشه ای برنامه پذیر نام برده می شود، امکان برنامه ریزی آن متناسب با نیاز طراحان و امکان تغییر در روابط منطقی مابین داده های ورودی و خروجی است.
به طور کلی می توان گفت منابع تشکیل دهنده اف پی جی ای به این شرح است:
1. Look-Up Table مجموعه ای از سلول های حافظه جهت ایجاد توابع منطقی
2. بلوک های منطقی قابل پیکر بندی Configurable Logic Block یا CLB
3. سیم شبکه اتصالات با قابلیت برنامه ریزی Routing Matrix
4. بلوک های ورودی و خروجی
5. حافظه های داخلی
6. منابع کلاک
مزایای استفاده از FPGA
FPGA مزایای متعددی دارد، از جمله مهم ترین آن ها می توان به موارد زیر اشاره کرد:
• FPGA ها را می توان در سطح منطقی برنامه ریزی کرد. از این رو می تواند پردازش سریعتر و موازی سیگنال ها را اجرا کند. درحالی که انجام این کار توسط یک پروسسور مانند میکروکنترلر دشوار است.
• بر خلاف ASIC که پس از پروگرام کردن ثابت می شوند، اف پی جی ای ها در هر زمان در سطح نرم افزار قابل پروگرام کردن هستند. از این رو آی سی اف پی جی ای را می توان مجدداً پروگرام کرد یا هر چند بار که می خواهید مورد استفاده مجدد قرار داد. FPGA همچنین می تواند از راه دور پروگرام شود.
• آی سی های FPGA به راحتی در دسترس هستند که می توانند با استفاده از کد HDL در کمترین زمان پروگرام شوند.
• برخلاف ASIC که به NRE یا هزینه های غیر تکراری زیاد و ابزارهای پر هزینه نیاز دارد، توسعه اف پی جی ای به دلیل ابزارهای کم هزینه و بدون NRE ارزان تر است.
• در طراحی اف پی جی ای، نرم افزار به مسیریابی، مکان یابی و زمان بندی رسیدگی می کند و این مسئله باعث می شود مداخله دستی کمتری انجام شود.
معایب FPGA
در کنار مزایای زیادی که دارد، FPGA ها معایبی نیز دارند که برخی از آن ها به شرح زیر هستند:
• برنامه نویسی FPGA به دانش زبان های برنامه نویسی VHDL/Verilog است و به اصول سیستم دیجیتال نیاز دارد. برنامه نویسی آن به سادگی برنامه نویسی زبان C نیست که در سخت افزار مبتنی بر پردازنده استفاده می شود. علاوه بر این مهندسان باید استفاده از ابزارهای شبیه سازی را بیاموزند.
• مصرف برق آن بیشتر است و برنامه نویسان هیچ کنترلی روی بهینه سازی توان در اف پی جی ای ندارند. در صورتی که چنین مشکلی در ASIC وجود ندارد.
• وقتی هر FPGA خاصی انتخاب شد و در طراحی استفاده شد، برنامه نویسان باید از منابع موجود در آی سی FPGA استفاده کنند. این امر اندازه و ویژگی های طراحی را محدود می کند. برای جلوگیری از چنین وضعیتی، باید در ابتدا اف پی جی ای مناسب انتخاب شود و سپس طراحی را آغاز کنید.
• FPGA ها برای نمونه سازی و تولید مقادیر پایین بهتر هستند. هنگامی که مقدار اف پی جی ای هایی که باید تولید شوند افزایش می یابد، هزینه هر محصول نیز افزایش می یابد، اما در مورد پیاده سازی ASIC شرایط این گونه نیست.
در خصوص تفاوت میکروکنترلر با FPGA و کاربرد این مدار میبایست اشاره نمود که میکروکنترلرها محدودیت هایی دارند و نمی توان از آنها برای انجام اعمالی به طور موازی استفاده کرد زیرا میکروکنترلر و ریزپردازنده ها با اجرای پی در پی برنامه ها کار می کنند که در بعضی از برنامه ها کمی کند می شود، در این مورد FPGA یک مزیت دارد و می تواند به طور موثر مورد استفاده قرار گیرد. همچنین میکروکنترلرها می توانند کارهای محدودی را انجام دهند زیرا آنها توام با دستورالعمل ها و مدارهایشان هستند. یک برنامه نویس باید هنگام ایجاد کد، محدودیت ها را رعایت کند. در مورد میکروکنترلرها، پردازنده از یک کد به کد دیگر تغییر می کند تا به سطحی از موازات برسد. نوشتن کدها در میکروکنترلرها نسبت به FPGA راحت تر است. قابلیت پردازش موازی FPGA ها شما را قادر می سازد تا با استفاده از ماشین های حالت محدود وقفه ها را به صورتی کارآمد کنترل کنید. در مورد میکروکنترلرها، باید مدت زمان صرف شده توسط ISR را برای رفع وقفه در نظر بگیرید. فقط با برنامه ریزی مجدد FPGA می توانید آن را به راحتی سیم کشی کنید. با روشن شدن برق، پیکربندی موجود در FPGA روی سلولهای منطقی قابل تنظیم بارگذاری می شود. برای برنامه ریزی مجدد FPGA نیازی به تغییر در سخت افزار نیست، پس برای پردازش سریع داده های موازی مناسب هستند و درجه بالایی از قابلیت تنظیم را دارند. با این حال FPGA ها را می توان با این مزایا نسبت به میکروکنترلرها انتخاب کرد.
FPGAها در دهه گذشته به رشد سریعی دست یافته اند زیرا برای طیف وسیعی از کاربردها مفید هستند. کاربرد خاص یک اف پی جی ای شامل مواردی همچون پردازش سیگنال دیجیتال، سیستم های مخابراتی، رادیو نرم افزاری، بیو انفورماتیک، کنترل کننده دستگاه های مختلف، منطق تصادفی، نمونه سازی اولیه ASIC، تصویر برداری پزشکی، شبیه سازی سخت افزار کامپیوتر، ادغام چندین SPLD، تشخیص صدا، رمز نگاری، فیلتر کردن، رمز گذاری ارتباطات، زمینه مهندسی پزشکی، در مهندسی برق و کاربردهای نظامی میباشد. می توان گفت FPGA یک دستگاه نادر در الکترونیک است، زیرا دارای مزایای بسیار قوی و معایب کمی است. به همین دلیل است که در بسیاری از موقعیت ها به پردازنده دیجیتال منتخب تبدیل شده است. با انتخاب یک اف پی جی ای منطبق با طراحی، می توان عملکرد بالا، توان کم و هزینه کم همراه با سهولت نسبی در تعبیه طرح ها و الگوریتم های سطح بالا را تضمین کرد. همه اینها با مزایای امکان برنامه ریزی میدانی همراه است، به این معنی که طراحی را می توان بدون نیاز به NRE یا تاخیر زمانی بالا تست، دیباگ یا اشکال زدایی کرد و به راحتی تغییر داد. در آینده بازار FPGA بیش از پیش گسترش می یابد. تولیدکنندگان اصلی CPUهای استاندارد با خرید شرکت های متخصص در FPGA، سبد محصولات خود را گسترش می دهند. اف پی جی ای ها نیز به طور گسترده در شبکه ها استفاده خواهند شد. به غیر از سلول های منطقی قابل برنامه ریزی، آنها حاوی عناصر سیلیکونی بسیار تخصصی، یعنی کنترل کننده های رابط شبکه هستند.