Є два критерії, за допомогою яких можна оцінити цифровий проект, який допоможе вам визначити, яка частина найкраще відповідає вашим критеріям. Перший - це розмір / складність дизайну - скільки логіки. Друга - вимоги до вводу та виводу з точки зору кількості контактів. Швидкість можна враховувати, якщо ви можете оцінити, якою буде ваша найповільніша функція. Інструменти постачальників (Altera Quartus II, Xilinx ISE та ін.) Допоможуть вам, як тільки ви потрапите в потрібний кульковий парк.
PAL / PLA / GAL: Вони призначені для заміни ланцюгів малого та середнього розміру, які зазвичай можна реалізувати як логічні мікросхеми LSI (серія 7400, 4000). Вони можуть запропонувати кращі схеми плати за рахунок перезавантаження вводу / виводу та безліч простих логічних функцій. Ці мікросхеми містять енергонезалежну пам'ять (або одноразові програмовані запобіжники) і не потребують часу конфігурації живлення. Вони можуть не містити елементів зберігання даних.
CPLD: Це більші родичі PLA. Конструкції можуть бути невеликими державними машинами або навіть дуже простим мікропроцесорним ядром. Більшість чіпів CPLD, які я бачив, не мають жодної вбудованої SRAM, хоча великий Cypress CPLD, з яким ви пов’язані, робить. CPLD, швидше за все, можуть бути запрограмовані за допомогою флеш-пам’яті, а також вони не потребують часу конфігурації при включенні живлення.
FPGA: На відміну від CPLD, логічні блоки базуються на SRAM замість флеш-пам'яті, що призводить до швидших логічних операцій. Найважливішою стороною FPGA є те, що оскільки конфігурація зберігається в SRAM, кожен раз при включенні пристрою FPGA повинен завантажувати своє програмування в цей SRAM. Залежно від розміру вашої конструкції та швидкості енергонезалежного зберігання, це може спричинити помітну затримку від ввімкнення живлення до повноцінного функціонування. Деякі FPGA мають вбудований флеш-пам'ять для зберігання своїх даних, проте більшість використовують окремі мікросхеми пам'яті. Для покращення обчислювальної швидкості FPGA часто матимуть провідні множники, PLL та інші логічні функції. Також доступні великі блоки оперативної пам'яті на мікросхемі. Ви також зможете використовувати високопродуктивні технічні характеристики вводу / виводу, такі як LVDS, PCI та PCI-Express.
FPGA з мікропроцесорним жорстким ядром: я з ними не знайомий, але думаю, що ваш дизайн буде зосереджений на програмуванні мікроконтролера, а FPGA доповнить мікроконтролер. Ідентифіковані вами частини виглядають так, що ви б розпочали свою розробку за допомогою мікроконтролера та FPGA, а потім об'єднайте їх в один чіп / пакет.
Як вирішити, що підходить саме вам:
Найкращий спосіб - закінчити свій код (Verilog / VHDL), а потім скористатися інструментами продавця, щоб спробувати вписати його в найменшу частину. Я знаю, що інструмент Altera дозволяє досить легко змінювати цілі програмування, тому ви можете продовжувати збирати менші FPGA, а потім менші CPLD, поки використання вашої конструкції не наблизиться до приблизно 75%. Якщо вам потрібна продуктивність, то спробуйте вибрати пристрої, які мають функції (швидкі мультиплікатори), що знижують вимоги до швидкості логіки. Знову ж таки, інструменти постачальника допоможуть вам визначити, чи потрібно оновити або чи зможете вийти з ладу.
Ще один фактор, яку частину використовувати - це простота у використанні. Використання логіки PAL / PLA / GAL - це, мабуть, більше зусиль, ніж побудова функції за допомогою дискретних логічних воріт (74HC *, 4000 тощо). Зазвичай CPLD вимагають лише однієї напруги живлення і не потребують додаткової схеми. Вони ефективно автономні. FPGA починають використовувати кілька джерел живлення для вводу / виводу та логічного ядра, складних стандартів вводу / виводу, окремої програмної пам'яті, багатошарових (> 2) друкованих плат та пакетів BGA.
Кроки до звуження ваших вимог до дизайну включають:
Визначте всі входи та виходи для FPGA / CPLD. Зазвичай це легка частина етапу проектування. Таким чином ви знаєте, який пакунок ви дивитесь, і наскільки близько ви можете вирізати його до цієї межі.
Накресліть блок-схему внутрішньої логіки. Якщо ваші блоки виглядають просто (у кожному блоці буде повна логічна брама та регістри), ви, ймовірно, можете використовувати CPLD. Якщо у ваших блоках є мітки, такі як "Ethernet-трансівер", "PCI-Express x16 інтерфейс", "Контролер DDR2" або "Кодування / декодування h264", то ви майже напевно дивитесь на FPGA та використовуєте HDL.
- Подивіться і перевірте, чи ваші інтерфейси мають особливі вимоги до вводу / виводу, такі як спеціальні напруги, LVDS, DDR або високошвидкісні SERDES. Простіше отримати чіп, який його підтримує, ніж отримати додатковий чіп перекладача.
Приклад програм CPLD:
- Багатоканальна ШІМ з інтерфейсом SPI
- Розширювач вводу / виводу
- Декодування простору адресного процесора
- Годинники
- Відображення мультиплексорів
- Простий DSP
- Деякі прості програми можуть бути перетворені в дизайн CPLD
Приклад додатків для любителів FPGA:
- Малі конструкції системи «на чіпі» (SoC)
- Відео
- Складні мости протоколу
- Обробка сигналів
- Шифрування / дешифрування
- Емуляція спадкової системи
- Логічний аналізатор / генератор візерунків
Для більшості любителів роботи ви обмежуватиметеся лише відносно невеликими FPGA, якщо ви не хочете спаяти пакети BGA. Я б вибрав між великим CPLD або дешевим FPGA, а вимоги щодо розміру / швидкості диктуватимуть, який з них мені потрібен.