FPGA یکی از تکنولوژیهاییست که در سالهای اخیر وارد صنعت شده و در زمینه الکترونیک دیجیتال بسیار خوب ظاهر شده و امروز در بسیاری از پروژه های مهم صنعتی خصوصا" پروژه های مخابراتی استفاده می گردد. در اینجادرمورد ساختار کلی FPGA و اجزای داخلی آن و درباره تکنولوژیهای مختلف آن مطالبی آمده است. نکاتی در مورد استفاده و انتخاب FPGA اشاره شده است. نحوه ترجمه و کامپایل پروژه و خطایابی آن، و تست پروژه بصورت شبیه سازی و تحلیل زمانی و در نهایت نحوه برنامه ریزی در داخل یک آی سی FPGA بیان شده است.
ساختار کلی FPGA
FPGAها نسل جدید مدارهای مجتمع دیجیتال قابل برنامه ریزی هستند که عبارت FPGA از سر کلمه های Field Programmable Logic Gate Array گرفته شده است . سرعت اجرای توابع منطقی در FPGA ها بسیار بالا و در حد نانو ثانیه است . اگر بخواهیم FPGA ها را به طور ساده تشریح کنیم ، عبارت است از یک تراشه که از تعداد بالایی بلوک منطقی -(LB (Logic Block ، خطوط ارتباطی و پایه های ورودی / خروجی (IOB) تشکیل شده است که به صورت آرایه ای در کنار یکدیگر قرار دارند . خطوط ارتباطی که وظیفهء آنها ارتباط بین بلوک های منطقی است از سوئیچ های قابل برنامه ریزی تشکیل شده اند . این سوئیچ ها بسته به نوعی که دارند ، برخی تنها یکبار قابل برنامه ریزی هستند و برخی به تعداد دفعات زیادی برنامه ریزی می شوند . بلوک های منطقی نیز دارای انواع مختلفی هستند که عموما توسط المانی پایه ، تمامی توابع منطقی را ایجاد می کنند . به عنوان مثال بلوک های منطقی در خانواده ACT-1 از شرکت Actel ، با پایهء مالتی پلکسری عمل می کنند . به این معنا که توسط مالتی پلکسر ، توانایی ایجاد توابع منطقی مختلف را دارند . البته تعداد ورودی های هر بلوک منطقی متفاوت است و به نوع FPGA مربوط می شود . به عنوان مثال بلوک های منطقی در خانوادهء ACT-1 ، از نوع 8 ورودی است . البته در برخی موارد به بلوک های منطقی ، سلول های منطقی نیز گفته می شود (LC) . بلوک دیاگرام یک FPGA به طور ساده در شکل زیر نشان داده شده است . البته بسیاری از سلول های منطقی بر اساس جداول LUT ساخته می شوند . LUT از تعدادی سلولهای حافظه SRAM تشکیل می شود که در هنگام برنامه ریزی FPGA ، مقدار دهی می شوند . به طور خلاصه LUT عبارت است از تولید توابع آماده برای استفاده در سلول های منطقی . پیاده سازی توابع مختلف نیز به وسیلهء در کنار هم قرار گرفتن بلوک های منطقی و همچنین تنظیم ارتباط بین هر بلوک و به عهده گرفتن پردازش اطلاعات توسط هر بخش انجام می شود.
FPGAاز یک سری عناصر منطقی که برای کار خاصیت محدود نشده اند و نیز دارای اتصالات قابل رنامه ریزی است. بنابراین هر دو جزء اصلی تشکیل دهنده یک مدار یعنی بلوکها منطقی و همچنین اتصالات بین آنها قابل برنامه ریزی است.
همانطور که در این شکل مشخص است، سه جزء اصلی آن عبارتند از بلوکهای منطقی (Logic Blocks) ، عناصری که برای اتصالات بکار می روند (Integration Resources) و بلوکهای وروی و خروجی (I/O Blocks)، ساختار و محتویات بلوکهای منطقی می تواند خیلی ساده (در حد یک گیت NAND) و یا خیلی پیچیده (نظیر چند MUX یا Look-Up Table به همراه یک فلیپ فلاپ باشد. بلوکهای منطقی در حقیقت جایی هستند که قسمتهای اصلی مدار قرار می گیرند. البته ابتدا باید مداری که قرار است روی FPGA قرار بگیرد به اجزای یکسانی که همان محتویات بلوکهای منطقی هستند تقسیم شودو بعد از این عمل است که می توان با متصل کردن بلوکهای پایه به هم مدارهای واقعی را بدست آورد. عناصری که برای اتصالات بکار می روند ، معمولا" بین بلوکهایی که منطقی قرار می گیرند و از قطعات فلزی که می توانند به هم یا به بلوکهای منطقی متصل شوند تشکیل شده اند و برای متصل کردن این قطعات از سوئیچهای قابل برنامه ریزی استفاده می شود. این قطعات می توانند طولهای متفاوتی داشته باشند. بلوکهای ورودی خروجی برای اینکه پینهای FPGA را بتوان در مدهای مختلف ورودی یا خروجی یا ورودی/خروجی، همچنین برای ولتاژهای مختلف 3.3 یا 5ولت و ... برنامه ریزی کرد بکار می روند. زیرا طراحی این دو با هم باید یه گونه ای باشد که پیاده سازی مدارات منطقی مختلف را روی FPGA امکان پذیر سازد. معمولا" بین پیچیدگی و انطاف پذیری هر دوی بلوکهای منطقی و منبع اتصالی یک نسبت معکوس وجود دارد. یعنی با زیاد شدن یکی دیگری کم می شود و بالعس. در ضمن معماری یک بلوک منطقی و همچنین منابع اتصالی بر کل مساحت تراشه و سرعت تراشه اثر دارد.
- سوئیچها و مدار اتی که برای برنامه پذیر کردن چیپ استفاده می شوند
- قیمت بالا برای تولیدات با تعداد زیاد
انتخاب و استفاده از FPGA
روشهای طراحی مدار:
1- شماتیک (Schematic)
2- زبانهای برنامه نویسی سخت افزاری VHDL-Verilog-AHDL-ABL) HDL)
3- دیاگرام حالت (Start Diagram)
انواع نرم افزارهای مربوط به FPGA:
از سوی شرکتهای مختلفی نرم افزارهای با قابلیتهای مختص به خود طراحی کرده اند که اهم آنها به قرار زیرند:
MAXPLUS II – Quartus – Fandation - Leonardo Spectrum – Modelsim - …
قابلیتهای نرم افزار:
نرم افزارها از لحاظ قابلیت و امکانات سرویس دهی با هم تفاوتهایی دارند که معمولا" کارهای زیر را انجام می دهند:
Schematic Editor - text Editor - Waveform Editor (Simulator) - Compiler- synthesizer – Fitter – Programmer -دیاگرام حالت (Start Diagram)
شرکتهای سازنده FPGA:
سازندگان FPGA شامل شرکتهای بزرگی همچون Xilinx و Altera وActel میباشند که سریهای مختلفی، از جمله Xilinx شامل: Spartan و Virtex و Altra شامل: Cyclone و Flex10k و Stratix و .... را به بازار عرضه کردهاند. در کشور ما معمولا با CPLD ها و FPGA هاي شركتهای مذکور كار ميشود كه از نظر محبوبيت به صورت زير هستند.
- Altera
- Xiling
- Actel
سریهای ساخت شرکت Xining:
Spartan, XC5000, XC4000, XC3000, XC2000
بررسی سریهای مختلف شرکت آلترا را در مقاله ای دیگر به طور کامل بررسی خواهیم کرد.
عوامل انتخاب یک FPGA:
- تعداد گیت
- فرکانس کاری
- تعداد پایه
- قیمت
ترجمه و سنتز پروژه:
کامپایلر ....و ISEیا MAX+PLUS IIپروژه را برای یافتن خطاهای احتمالی بررسی می کند، طرح منطقی را ترکیب می کند، پروژه مذکور را به یکی از ابزارهای قابل برنامه ریزی نسبت می دهد، فایلهای خروجی را برای شبیه سازی و برنامه ریزی بوجود می آورد و سرانجام پنجره نمایش سلسله مراتبی (Hierarchy Display) را به روز در می آورد.
محاسن استفاده از FPGA
FPGAها در پیاده سازی توابع نسبتا پیچیده و پیچیده دیجیتال به کار می روند که نیاز به سرعت پردازش بالایی دارند. علاوه بر این کاهش سخت افزار مورد نیاز و همچنین برنامه نویسی ساده و استاندارد نیز از دیگر مزیت های استفاده از FPGA است. آنچه که قابلیت و توانایی FPGA ها را بالا برده است تواناییهایی است که پارهای از آنها در زیر آمده است:
- کاربرد اصلی FPGA در ایجاد هسته های پردازشی می باشد.
- مدارهای دیجیتال پیچیده به آسانی در آنها پیاده سازی می شوند.
- تست مدار سریع است.
- برای تولیدات با تیراژ پایین ارزان تمام می شود .
- متناسب با نیاز، تغییرات لازم را در طراحی می توان انجام داد و مجدا FPGA را با ساختار جدید برنامه ریزی نمود.
- قابل برنامه ریزی توسط کاربر است.
- می توان چند تا هسته پردازشی داخل یک FPGA تعریف کرد تا در یک زمان واحد چندتا کار را باهم انجام بدهد مثلا شما می توانید با یک FPGA معمولی حدود 200 تا هسته atmega32 تعریف کنید و 200 تا کار را همزمان انجام بدهید.
- میکروکنترلرها و DSP ها و میکروپروسسورها به صورت سریال دستورالعمل اجرا میکنند و قابلیت پردازش بصورت موازی در آنها وجود ندارد، اما در FPGA قابلیت پردازش موازی وجود دارد و قابلیت انجام عملیات بصورت همزمان را دارد.
- كاربردهای FPGA خیلی تخصصی میباشد ودر اكثر موارد به عنوان پردازشگر در مدارات پردازشی استفاده میشود. سرعت بالای FPGAها آنها را مساعد کارهای پردازشی سنگین مثل پردازش تصویر و پردازش صدا می کند و سرعت این پردازش نسبت به سیستمهای دیگر خیلی بالاتراست.
- FPGA ها در پیاده سازی توابع پیچیدهی دیجیتالی به کار میروند که نیاز به سرعت پردازش بالایی دارد.
- کاهش سختافزار مورد نیاز و همچنین برنامهنویسی ساده و استاندارد نیز از دیگر مزیتهای استفاده از FPGA است.
- سرعت اجرای توابع منطقی در FPGA ها بسیار بالا و در حد نانو ثانیه است.
- امکان تعریف هر یک از پایه های IC به صورت ورودی یاخروجی یا هر دو
- امکان تعریف وضعیت عملکرد هر پایه در هنگام استفاده یا عدم استفاده.به عنوان مثال عملکردHIGH امپدانس(Z)در هنگام عدم استفاده و یا قرار گرفتن در یک وضعیت منطقی صفر یا یک در هنگام عدم استفاده.
- امکان تشخیص تغیبیرات سطوح یا لبه های پایین رونده یا بالا رونده منطقی اعمال شده به هر پایه.
- امکان تغییر متناوب معمار ی داخلی با استفاده از سری های Bootable که نقشه معماری آنها در یک حافظه خارجی نگهداری شده و با تغییر آدرس برنامه ریزی می توان IC را بامعماری جدید Boot کرده و از آن استفاده کرد.
- امکان برنامه ریزی در مدار (ISP)که این قابلیت را به وجود می آورد تا بدون اعمال تغییراتی که سختافزاری هستند و تنها از طریق پورت برنامه ریزی jTAG، معماری داخلی IC را تغییر داد .
- کاهش حیرت انگیز حجم مدار و مجتمع سازی در ابعادی تنها به مساحت چند سانتی متر مربع.
- کاهش یکسان سازی عناصر طراحی و از میان بردن تمامی مشکلات ناشی از عدم تطابق استاندارد های مختلف(LS,HC,s,AS,...).
- از میان بردن تمامی نویز های ناشی از وجود قطعات مختلف و مجزا در مدار.
- کاهش چشمگیر توان مصرفی و اتلاف توان.
- افزایش سرعت پردازش و خطاهای انتشار به دلیل استفاده از فناوری پیشرفته و دستیابی به خطاهای انتشار تا 4ns و فرکانس کلاک فرارتر از 178 مگاهرتز.
- کار با دو سطح ولتاژ 5v و 3.3v جهت استفاده از آنها در دستگاه های قابل حمل مانند گوشیهای موبایل
- ضریب ایمنی صد در صد به دلیل عدم امکان دستیابی به محتوای داخلی و عدم توان توصیف محتوای داخلی به دلیل انجام سادهسازی و فشردهسازی بسیار پیچیده.
و بسیاری از قابلیتهای حیرت انگیز دیگر که امکان انجام یک طراحی مجتمع ،کم حجم ،بهینه و سریع را فراهم می آورد.