مقدمه ای درباره FPGA & CPLD
برای آنکه بتوان بخش بزرگی از یک طرح را داخل یک تراشه منتقل نمود و از زمان و هزینه مونتاژ و راهاندازی و نگهداری طرح کاست، ساخت تراشههای قابل برنامه ریزی مطرح شد از جمله مزایای استفاده از تراشههای قابل برنامه ریزی در طراحی پروژهها عبارتند از :
کاهش ابعاد و حجم
کاهش زمان و هزینه طرح
افزایش اطمینان از سیستم
حفاظت از طرح
حفاظت در برابر نویز و اغتشاش
FPGA ها ابزار سخت افزاری قابل برنامه ریزی ارزان قیمت را جایگزین کاربردهای فعلی کنترلرهای داخلی (Embedded Controllers) نمودهاند. به همین دلیل بازار آنها رشد گستردهای داشته است. علاوه بر این به جهت ارائه راه حلهای مناسب برای IC های سفارشی با عملکرد بالا موفقیت زیادی به دست آوردهاند. در واقع به نظر میرسد که FPGAها با توجه به ارزان بودن، نسل فعلی تراشههای ASIC را از رده خارج کنند. همین مزیت هزینه و عملکرد توجه زیادی را درحوزه تحقیقات به خود معطوف کرده است.
ویژگی استفاده از قطعات منطقی قابل برنامه ریزی (PLD) و FPGA، ارزان بودن قیمت و سرعت ورود آنها به بازار است.
قطعات ASIC، هزینههای توسعه مهندسی غیر قابل برگشت بالاتری دارند و در نتیجه اغلب، قیمت این محصولات بالاتر است، اما اساساً کارایی بالاتری دارند. این شیوههای مختلف طراحی محیطهایی را با مجموعهای از متدولوژی و ابزاهای مختلف CAD پدید میآورند.
در طول یک دهه گذشته، انواع مختلفی از سخت افزارهای قابل برنامه ریزی به سرعت پیشرفت کردهاند. این قطعات نامهای مختلفی دارند مثل سخت افزار قابل آرایش مجدد، سخت افزار قابل آرایش، سخت افزار قابل برنامه ریزی مجدد.
ایده اصلی و زیر بنایی معماری FPGA و CPLD بسیار ساده است. به طوری کلی میتوان مدارهای ترکیبی و ترتیبی را مستقیماً روی بستر سیلیکون ایجاد کرد. تراشههای ASIC با اینکه کارایی بالایی دارند اما تنها میتوانند یک نوع عملیات را انجام دهند.
از آنجایی که امکان توزیع هزینه توسعه بین چند کاربر وجود ندارد، قیمت ASIC ها معمولاً بیش از سیستمهای مبتنی بر ریز پردازنده معمولی میشود.
تکنولوژی تراشه های قابل برنامهریزی
قابلیت برنامه ریزی شدن مدارات مختلف و اتصالات متفاوت بر روی PLD به دلیل سوئیچ های قابل برنامه ریزی است که در این تراشه وجود دارد، این سوئیچها میبایست علاوه بر اشغال فضای بسیار کم دارای کمترین تأخیر زمانی باشند بطور کلی سوئیچهای قابل برنامه ریزی در PLD با استفاده از سه نوع تکنولوژی قابل پیاده سازی است.
1-استفاده از Anti – Fuse
2-استفاده از سلولهای حافظه موقت Sram
3-استفاده از گیتهای شناور EEPROM یا EPROM
Anti – Fuse
خصوصیت اصلی Anti – Fuseها تنها یک بار قابلیت برنامهریزی بودن، اشغال فضای کم و بالا بودن فرکانس کاری، به دلیل پایین بودن اثر مقاومتی و ظرفیت خازنی آنها است.
عیب اصلی این روش نداشتن قابلیت برنامه ریزی مجدد است و زمانی که یک بار برنامهریزی گردد دیگر به حالت اولیه برنمیگردد و مزیت اصلی آن فرکانس کاری بالا و اشغال فضای کم آن است این نوع PLDها نسبت به انواع دیگر PLDها نسبتاً گرانتر هستند.
SRAM
در روش SRAM از سلولهای حافظه به دو طریق استفاده میشود، در روش اول از یک سلول حافظه برای کنترل روشن یا خاموش شدن یک ترانزیستور استفاده میگردد که در این حالت خروجی سلول حافظه به بیس ترانزیستور یا گیت فت متصل می شود، با روشن یا خاموش شدن ترانزیستور یک مسیر وصل یا قطع میشود. در روش دوم سلول حافظه به ورودیهای انتخاب مالتی پلکسر وصل میشود. در این حالت با صفر یا یک شدن سلول حافظه مسیر خطوط عوض میشود، مهمترین عیب این روش پاک شدن برنامه ریزی با قطع تغذیه میباشد، تراشههایی که با این روش برنامه ریزی میگردند، میبایست با استفاده از یک سیستم جانبی با هر بار وصل شدن تغذیه تراشه برنامه ریزی گردد، این روش نسبت به روش Anti – Fuse فضای بیشتری اشغال میکند و تأخیر زمانی نیز بیشتر است.
روش برنامه ریزی EEPROM یا EPROM
مهمترین مزیت این روش پاک نشدن برنامه ریزی با قطع برق مهمترین عیب آن اشغال فضای زیاد این نوع ساختار سوئیچ میباشد.
تقسیم بندی PLDها
PLDها شامل قطعات کم ظرفیت و پرظرفیت میباشند. PLDهای کم ظرفیت (ساده ) معمولاً کمتر از 600 گیت قابل استفاده دارند و شامل محصولاتی چون PALها و GALها میشوند.
PLDهای ساده شامل سوئیچهای EEPROM یا EPROM و Anti – Fuse میباشند.
(High – Capacity – PLD) HCPLD بیشتر از 600 گیت قابل استفاده دارند و شامل CPLD و FPGA میشوند.
FPGAها ساختمان اتصالات داخلی گسسته دارند، در حالیکه CPLDها دارای اتصالات داخلی پیوسته میباشند.
در ساخت HCPLD ها از تکنولوژی EEPROM , EPROM , Sram و Anti – Fuse استفاده شده است.
انواع تراشه های برنامه ریزی
(Programable read only memoey) PRom
اولین تراشههای قابل برنامهریزی که به بازار عرضه شد حافظه فقط خواندنی PRom بود، در این تراشه خطوط آدرس بعنوان ورودی و خطوط دیتا به عنوان خروجی تلقی میشوند.
PRom شامل دستهای از گیتهای and غیر قابل برنامه ریزی و یک آرایه OR قابل برنامه ریزی است. PRom در حد یک حافظه است و قابلیت برنامهریزی یک مدار منطقی را ندارد.
(Programable logic array) PLA
اولین تراشه قابل برنامه ریزی که برای پیاده سازی مدار منطقی آرایه برنامه پذیر and و یک آرایه برنامه پذیر OR میباشد. دو اشکال عمده، هزینه گران ساخت و سرعت پایین آن است .
(Programable array logic) PAL
تراشه Pal دارای یک آرایه and قابل برنامه ریزی و یک آرایه OR تثبیت شده است.
GAL
تراشه GAL دارای یک آرایه and قابل برنامه ریزی و یک آرایه OR تثبیت شده است. تراشه GAL دارای سرعت بیشتر نسبت به تراشه PAL میباشد.
بعد از تراشههای فوق MPGAها و FPGAها به بازار آمدند.
MPGA: Mask programable gate array
FPGA: Field programable gate array
ساختار FPGA
بطور کلی تا کنون سه نوع معماری برای FPGA ها توسط کارخانههای مختلف سازنده ارائه شده است که عبارتند از:
1-آرایه دو بعدی متقارن Symetric matrix
2-آرایههای سطری row based
3-دریایی از گیتها sea of gates
بلوکهای FPGA
1-بلوکهای منطقی (Logic array Block) LAB
2-بلوکهای کنترل کننده I/o
3-اتصالات قابل برنامهریزی PIA
(Programable Interconnect array)
بلوک های منطقی
بلوکهای منطقی شرکتهای سازنده FPGA از نظر اندازه ومنطق به کار رفته در آنها با هم تفاوتهای بسیاری دارند.
این بلوکها در FPGAها و CPLDهای Altera به نام LAB شناخته میشوند.
هر LAB میتواند شامل سه زیر بلوک Macrocell و Interconnect local و term logic باشد.
بلوک term logic
در LAB برای برقراری ارتباط یک Macrocell با Macrocellهای دیگر ونیز فیدبک به ورودی Macrocell از بلوک term logic استفاده میشود.
یک بلوک term logic از دو نوع آرایش بسط دهنده موازی (parallel Expanders) وبسط دهنده عمومی (common Expanders) برای برقرای ارتباط استفاده میکند.
بلوکهای کنترل کننده I/o
این بلوکها نوعی مدارات منطقی میباشند که وظیفه برنامهریزی نوع پورت خروجی و نیز برقراری فیدبک از پینها به درون PIA را دارد.
بلوک (Programable Interconnect array) PIA
این بلوک برای برقراری ارتباط بین بلوکهای منطقی و بلوکهای کنترل کننده ورودی و خروجی استفاده میشود.
شرکت Altera و Xilinx از ساختار آرایهی دو بعدی متقارن استفاده میکنند که با استفاده از Sram برنامه ریزی میشوند و بلوکهای منطقی نیز بر پایه look up table طراحی شدهاند.
شرک Altera با استفاده از آرایه سطری تراشههای خود را طراحی نموده است، FPGAهای این شرکت با استفاده از Anti – Fuse برنامه ریزی میگردند و بلوکهای منطقی آنها بر اساس Multiplexer طراحی شدهاند.
روش برنامهریزی Jtag
اینترفیسی که برای این منظور استفاده میشود Byte Blaster نام دارد و کاربر را قادر میسازد تا با استفاده از کامپیوتر و اتصال Byte Blaster به پورت پارالل کامپیوتر برنامهریزی را انجام دهد .
این اینترفیس با استفاده از نرم افزار maxplus 2 برای برنامه ریزی بصورت Jtag مورد استفاده قرار میگیرد. و هردو نوع ولتاژ 3/3 و 5 ولت را پشتیبانی میکند.
دراستاندارد JTAG برای برنامه ریزی از 4 پین استفاده میگردد.
پین ورودی TDI برای اعمال دیتا به صورت سریال به IC بکار میرود. دیتای قرار گرفته بر روی پین با لبه بالا رونده کلاک به داخل IC شیفت داده میشود.
پین خروجی TDO برای خواندن دیتای برنامه ریزی شده استفاده میگردد و با لبه پایین رونده کلاک دیتا به خارج شیفت داده میشود. پین ورودی TMS : نوع مود تست را مشخص میکند و برای ریست نیز استفاده میشود.
پین ورودی TCK کلاک ورودی به IC است و پینهای TDO و TDI نیز با استفاده از این کلاک کار میکنند.