CPLD مخفف Complex Programmable Logic Device به معنی دستگاه پیچیده قابل برنامهریزی و FPGA مخفف Field Programmable Gate Arrays به معنی آرایه دریچه ای برنامه پذیر میدانی میباشند. CPLD ترکیبی است از یک آرایه با قابلیت برنامه ریزی AND/OR و همچنین بعنوان بانکی از ماکروسلها در نظر گرفته میشود. دو آرایه AND/OR قابلیت برنامهریزی مجدد را دارند و بسیاری از توابع منطقی را انجام میدهند.ماکروسلها بلوکهای عملکردی هستند که منطق ترکیبی یا ترتیبی را انجام میدهند. دارای انعطاف پذیری اضافی و بازخوردهای متنوع هم هستند.
FPGA وسیله ایی است که به گیت های منطقی اجازه میدهد چندین بار مرتب و بازآرایی شوند بنابراین آنها میتوانند عملکرد مختلفی را در طول خود پیاده سازی کنند. به همین دلیل نام آنها آرایههای گیتهای برنامه پذیر است یعنی آرایههایی از گیتهای قابل برنامهریزی هستند. کلمه Field به کار رفته در این نامگذاری ناشی از این واقعیت است که FPGAها حتی زمانی که خارج از میدان هستند یعنی زمانی که در پروژه مشتری به کار میروند قابلیت برنامه ریزی مجدد دارند و این یک مزیت به حساب می آید و کاربران مجبور نیستند که با هر به روز رسانی، ویژگی های جدید خود را تغییر دهند.
ساختار CPLD
وقتی صحبت از دستگاههای منطقی قابل برنامهریزی یا PLD میشود گزینههای مختلفی برای انتخاب به ذهن میخورد. مثل PAL، PLA، FPGA و CPLD ها، که بسته به نوع نیاز فردی ممکن است به سمت هریک از این قطعات رویم. CPLD ها دستگاههایی با پیچیدگی نسبتا بالاتر نسبت به PALها هستند اما نسبت به FPGA این پیچیدگی کمتر است. واحدهای تشکیل دهنده CPLD از تعدادی ماکروسل است که ماکروسلها را بعنوان واحدهای عملکردی یا بلوک ساختمانی یک دستگاه منطقی قابل برنامهریزی پیچیده تعریف کرده اند. هر ماکروسل دارای یک پایه ورودی و یک پایه اختصاصی خروجی است که دارای قابلیت کاوش 16 ورودی دیجیتال در یک زمان است.
این قطعات جهت افزایش عملکرد خود از تقویت کنندههای آنالوگ استفاده میکنند که این عمل حالت سنتی دارد. اما برخی برندها مثل Xilinx با استفاده از یک هسته تمام دیجیتالی، همان سطح کارکرد را با صرف انرژی کمتر فراهم ساخته اند. مزیت این تغییر سبک برای افرادی که در پروژههای خود میخواهند از CPLD استفاده کنند در این است که آنها اجازه دارند تا از CPLD یکسان برای طراحیهای خود با کارایی بالا و مصرف کم انرژی استفاده کنند. در مجموع این تغیرات باعث کاهش هزینه و سرعت بخشیدن به امور میگردد.
بیشتر فروشندگان عمده PLD برندهایی مانند INTEl (یا همان Altera سابق) و Xilinx، طیف وسیعی از دستگاههای پیچیده قابل برنامهریزی را تولید و روانه بازار میکنند.
ویژگیها
- CPLD ها دارای تعداد زیادی ورودی یا گیت هستند که میتوانند برنامه های پیچیده تری را پیاده سازی کنند. در مقایسه با PALها که دارای چند صد گیت هستند اما CPLD هزاران گیت یا ورودی دارد.
- CPLD دارای قابلیت انعطافپذیری و تغییر است. علت این موضوع نیز بخاطر وجود مسیرهای پیچیده به هم پیوسته بین سلولها است.
- دارای حافظه غیر فرار است و به حافظه خارجی نیازی ندارد. میتواند بلافاصله پس از راه اندازی سیستم شروع به کار کند.
- از نوعی حافظه خواندنی به نام EEPROM که دارای قابلیت برنامه ریزی و پاک کردن الکتریکی است استفاده میکنند.
- زمانی که مدار خاموش شده باشد نگران از دست دادن حافظه یا ایجاد تاخیر نباشید چون در ساختار CPLD ها پیکربندیهای غیر فرار وجود دارد.
- برنامه ریزی مجدد CPLDها با هزینه اندک امکان پذیر است
- به دلیل وجود ماهیت یکپارچه و ساده ایی که دارند در اکثر جریانهای طراحی قابل استفاده هستند.
- هزینههای نگهداری کمی دارند که همین امر ثابت میکند در دراز مدت میتوان در پروژهها روی این قطعات سرمایهگذاری کرد.
- به دلیل ماهیت غیر فراری که دارند گزینه ایی امن به حساب می آیند.
- در مبحث زمانبندی نسبت به FPGA ها دارای کارایی بالاتری هستند زیرا اتصالات کمتری دارند.
کاربرد CPLD
- بعنوان عنصر حافظه استفاده میشوند
- جهت رمزگشایی آدرس به کار میروند
- جهت محاسبات منطقی کوچک و یا تولید جمع کنترلی قابل استفاده هستند.
- بعنوان بوت لودر در سیستم های قابل برنامه ریزی به کار میروند.
- بدلیل داشتن سایز کوچک و مصرف کم انرژی برای دستگاه های دیجیتال قابل حمل مورد استفاده قرار میگیرند
ساختار FPGA
FPGA ها نوعی تراشه نیمه رسانا هستند و از تعداد زیادی واحد الکترونیکی کوچک به نام بلوک یا سلول های منطقی تشکیل شدهاند و دارای قابلیت برنامه ریزی میباشند. FPGA یک برد از پیش آماده نیست بلکه از طریق طراحی کاربر میتواند مانند یک مدارا لکترونیکی یا حتی CPU عمل کند.
برنامه ریزی این قطعه با زبانهای VHDL و Verilog انجام میشود. در ظاهر این تراشه با مبقی تراشهها تفاوتی ندارد، ساختار درونی آن است که باعث ایجاد تمایز برای FPGA میشود.
ویژگی
- قابلیت برنامه ریزی آسان
- مدارهای دیجیتالی پیچیده را به آسانی میتوان در آن پیاده سازی کرد
- سرعت نسبتا بالا در اجرای توابع منطقی
- امکان تعریف چندین هسته پردازشی جهت انجام کارهای متعدد و هم زمان.
کاربرد FPGA
- مراکز مهندسی هوافضا
- صنعت دفاعی
- هوش مصنوعی
- اینترنت اشیا مصنوعی
- شبکه های بیسیم و سیمی
- خودروسازی
تفاوت FPGA و CPLD
تفاوت FPGA و CPLD از ابعاد مختلفی مورد بررسی قرار میگیرد. که به چند مورد از آن میپردازیم:
- از نظر قیمتی وقتی FPGA بعنوان یک بسته کلی در نظر گرفته شوند گران تر هستند
- FPGA را میتوان بعنوان یک نسخه پیچیده تر و پیشرفته تر از CPLD دانست. اما در جایی که CPLD از منطق محصولات و هزاران گیت بهره مند است، FPGA از جداول جستجوی داخلی یا LUT استفاده میکند.
- طراحی به گونه ایی است که FPGA میتواند میلیون ها گیت را درخود جای دهد و حتی قابلیت تغییر میدان را نیز دارد. این قطعات مبتنی بر رم هستند و با حذف منبع تغذیه، حافظه و اطلاعات خود را از دست میدهند. پس در صورتی که بخواهید عملیات را مجدد شروع کنید باید داده ها و پیکربندی را از منبع یک حافظه خارجی دانلود کنید. متاسفانه این موضوع باعث ایجاد تاخیر در راه اندازی میشود.اما در CPLD ها چنین مشکلاتی به وجود نمی آید. این امر از موضوعات مطرح در ایجاد تفاوت FPGA و CPLD است.