Для чого використовуються програмовані логічні ІС різної складності?


10

Програмована логіка може бути реалізована у вашому віджеті в багатьох різних спектрах: від запису кількох воріт або використання MUX до останньої FPGA із вбудованим мікроконтролером та IO периферійними пристроями, не кажучи вже про ARM PrimeCell GPIO або інших, більш конкретних прикладах . Для яких застосувань використовуються різні рівні складності програмованого логічного пристрою? Незважаючи на те, що групування, схоже, поєднується поряд з крайніми їхніми визначеннями , я думаю, що це прийнятний список:

  1. PAL / PLA / GAL : програмований логічний масив; на Digikey,схоже, перелічені як"Вбудовані - PLD", що охоплюють асинхронний 10/8 введення / виведення (ATF16V8C) до 50 МГц, 192 макроелементи (CY7C341B) і переважно перепрограмовані.
  2. CPLD : Складний програмований логічний пристрій; Digikey перераховує їх як такі, доступні в 7,5ns 10 I / O (ATF750C) до 233 МГц, 428 I / O "CPLD в FPGAщільності" (CY39100V484B).
  3. FPGA : поле програмованого масиву воріт; доступний у 58 I / O (XC2064) до 1023 звірів BGABG(EP1S80F1508C7N).
  4. FPGA із жорстким MCU : це коли MCU фізично розміщено в FPGA IC, а не емульовано.

Цитата у Вікіпедії:

Різниця між FPGA і CPLD полягає в тому, що FPGA внутрішньо базуються на оглядових таблицях (LUT), тоді як CPLD формують логічні функції з морем воріт (наприклад, сума продуктів). CPLD призначені для більш простих конструкцій, тоді як FPGA призначені для більш складних конструкцій. Загалом, CPLD є хорошим вибором для широких комбінаційних логічних застосувань, тоді як FPGA більше підходять для великих державних машин (тобто мікропроцесорів).

Це не пояснює різницю між використанням 233 МГц, 400 вводу / виводу CPLD та порівнянним FPGA ; або між 192 макроелементами PLD і порівнянним CPLD . Я не можу зрозуміти надійні вказівки, якими можна звузити варіанти дизайну. Зауважте, що в даний момент я не маю на увазі конкретного додатку, але часто замислювався: "що б я використовував для цього?"

Я отримав відмінні поради за межами сайту щодо конкретних вимог, але все-таки думаю, що це питання може отримати користь із деяких прикладів, що демонструють перевагу над однією родиною ПЛД, коли інша, можливо, виявляється однаковою чи більш придатною.


XC2064 - стародавня частина. Я не знаю, чи CY7C341B та CY39100V484B все ще зроблені. Ви повинні це врахувати, приймаючи будь-яке порівняння / рішення.
Брайан Карлтон

2
FYI, з будь-якою з цих частин, існує величезна різниця між різноманітністю пропозицій, які виробники подають у своїй літературі, та набагато меншим асортиментом кількості ворота / пакету / швидкості та температури, які можна реально розраховувати на власні руки. невеликі кількості менше, ніж за півроку. Тож, розробляючи разом із ними, спочатку перевірте реальність. Навіть якщо я знаю, що купівля хоче отримати їх від розповсюдження, я вважаю за краще вибирати пристрої, де я знаю, що більш прототиповий постачальник насправді має їх під рукою, щоб мені протягом ночі при потребі.
Кріс Страттон

Гарна порада, @ChrisStratton. Зазвичай це перше, що я перевіряю на більшості деталей, але все-таки добре знати, що це особливо проблематично з ПЛД.
tyblu

Відповіді:


7

Є два критерії, за допомогою яких можна оцінити цифровий проект, який допоможе вам визначити, яка частина найкраще відповідає вашим критеріям. Перший - це розмір / складність дизайну - скільки логіки. Друга - вимоги до вводу та виводу з точки зору кількості контактів. Швидкість можна враховувати, якщо ви можете оцінити, якою буде ваша найповільніша функція. Інструменти постачальників (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.

Кроки до звуження ваших вимог до дизайну включають:

  1. Визначте всі входи та виходи для FPGA / CPLD. Зазвичай це легка частина етапу проектування. Таким чином ви знаєте, який пакунок ви дивитесь, і наскільки близько ви можете вирізати його до цієї межі.

  2. Накресліть блок-схему внутрішньої логіки. Якщо ваші блоки виглядають просто (у кожному блоці буде повна логічна брама та регістри), ви, ймовірно, можете використовувати CPLD. Якщо у ваших блоках є мітки, такі як "Ethernet-трансівер", "PCI-Express x16 інтерфейс", "Контролер DDR2" або "Кодування / декодування h264", то ви майже напевно дивитесь на FPGA та використовуєте HDL.

  3. Подивіться і перевірте, чи ваші інтерфейси мають особливі вимоги до вводу / виводу, такі як спеціальні напруги, LVDS, DDR або високошвидкісні SERDES. Простіше отримати чіп, який його підтримує, ніж отримати додатковий чіп перекладача.

Приклад програм CPLD:

  • Багатоканальна ШІМ з інтерфейсом SPI
  • Розширювач вводу / виводу
  • Декодування простору адресного процесора
  • Годинники
  • Відображення мультиплексорів
  • Простий DSP
  • Деякі прості програми можуть бути перетворені в дизайн CPLD

Приклад додатків для любителів FPGA:

  • Малі конструкції системи «на чіпі» (SoC)
  • Відео
  • Складні мости протоколу
  • Обробка сигналів
  • Шифрування / дешифрування
  • Емуляція спадкової системи
  • Логічний аналізатор / генератор візерунків

Для більшості любителів роботи ви обмежуватиметеся лише відносно невеликими FPGA, якщо ви не хочете спаяти пакети BGA. Я б вибрав між великим CPLD або дешевим FPGA, а вимоги щодо розміру / швидкості диктуватимуть, який з них мені потрібен.


злегка розширивши відповідь, я схильний би згрупувати PAL / PLA / GAL в той же кошик, що і PLD / CPLD, з причини миттєвого запуску без часу конфігурації, і що постачальники починають висувати CPLD перед PAL / PLA / GAL-пристрої. Наприклад, я працюю з деякими решітчастими пристроями, і їх сімейство CPLD IC суттєво дешевше і пропоную більше воріт, ніж двоюрідні брати PAL / GAL / PLA. Вартість останніх є непомірною для того, що вони пропонують у порівнянні з першим.
smashtastic

Лінія, безумовно, трохи розмивається. Я не думав, що у PAL / PLA / GAL є елементи зберігання, або у CLPD було SRAM, поки я не шукав перераховані деталі tyblu. Схоже, PAL / PLA / GAL в дизайні більше схожі на качину стрічку, ніж як основна частина.
W5VO

3

Хороший список "правило" буде мати щось подібне:

  • PAL / PLA / GAL: Використовується замість дискретних логічних воріт ІС на друкованій платі
  • CPLD: застосовується там, де потрібні складні, неDSP і, можливо, критичні за часом завдання (завантаження завантажувального коду на FPGA з пам'яті, генератор синусоїди LUT для ЦАП тощо)
  • FPGA: застосовується, коли потрібна можливість критичного часу, множення або DSP (фільтри FIR, FFT та ін.)
  • FPGA з жорстким MCU: застосовується тоді, коли потрібна функціональність FPGA і периферійні пристрої на FPGA повинні бути доступними (тимчасові датчики) або щоб дозволити завдання, що не враховує час, заміщене на C, а не VHDL для простоти (функціональність UART / послідовного порту, Ведення ПХБ та ін.)

Завдяки дешевому CPLD в доларах в невеликій кількості, PAL / PLA / GAL в значній мірі загинули, за винятком застарілих програм.
Кріс Страттон

Я не буду це заперечувати. Я міг би лише уявити, що, можливо, там, де низька (акумуляторна) потужність / невеликий розмір є обмеженням, вони все ще можуть бути використані, оскільки вони можуть бути більш вигідними, ніж CPDL, але я б все-таки використовував найменший CPDL-ефективність, якби це був мій дизайн.
Джоель Б

2

Проста відповідь могла бути, що існують два способи:

1. Ви спочатку проектуєте свою систему на високому рівні абстракції (скажімо, HDL або схеми). Потім ви намагаєтеся вкласти його в PAL / CPLD / FPGA і вибираєте ті, які відповідають вашим вимогам (кількість воріт / логічних елементів, продуктивність тощо), а потім вибираєте найдешевший із них, залежно від того, що ви визначаєте найдешевше (вартість розробки проти .виробнича вартість тощо).

2. Але зазвичай перед тим, як розпочати кодування HDL або схематичну розробку, ви вже можете оцінити складність системи (скільки затворів вам потрібно, якщо схоже, що вам потрібно 8-бітний MCU або 32-бітний MCU, або немає мікроконтролера на всі). Виходячи з цього, ви можете також вибрати свій програмований пристрій. Це було б менш точно, але дозволить спроектувати ваше непрограмоване аналогове та цифрове обладнання паралельно програмованому апаратному та програмному забезпеченню (за наявності).


2

FPGA з жорстким ядром використовується, оскільки вона менша за площу, ніж окремий мікроконтролер і швидша, ніж мікропроцесор з м'яким сердечником. Однак ціна, як правило, гірша за FPGA та окремий мікроконтролер. Загалом програмне забезпечення, а отже, мікроконтролер краще для (відносно) повільних та рідкісних випадків, таких як конфігурація параметрів та обробка помилок; логіка краща для безперервних процесів. Наприклад, при обробці пакетів, запис у пам'ять має бути логічним; обробка тайм-ауту в режимі реального часу повинна залишатися в програмному забезпеченні.

У просторі FPGA є дешеві / низькі потужності та дорогі / швидкі деталі. Взагалі мікроконтролер є лише у дорогому; це зробить торгівлю затратами проти дискретного MCU ще гірше для рішення на FPGA.

Ніхто не використовує PAL в нових проектах, принаймні протягом 10+ років. CPLD перейняли цю нішу.

В останні 5? років CPLD є FPGA-подібними всередині, але з пам'яттю для утримання конфігурації на мікросхемі. Оскільки FPGA зараз становить 100 МГц, швидкість набагато менше причин вводити логіку в CPLD, ніж це було 10-15 років тому. Однак у FPGA все ще є інші функції, такі як мультиплікатори, серіалізатори та багато пам’яті, які можуть змусити дизайн в один, навіть якщо у нього не так багато логіки.


1
Однією з причин збереження CPLD є те, що поточні недорогі CPLD все ще виробляються в технологіях однопотужної напруги, в той час як для більшості поточних FPGA потрібні кілька напруг живлення. Тож якщо вам не потрібно робити багато чого дешевше, щоб помістити cpld на плату - але якщо ви говорите про великий CPLD, низькопробний fpga може виявитися дешевшим і дасть вам більше місця для подальшого вдосконалення, особливо якщо у вас уже є наявні джерела живлення з якихось інших причин.
Кріс Страттон

Дякуємо за відповіді, @BrianCarlton та коментарі, @ChrisStratton. Наведені приклади та поточна думка є чудовою інформацією.
tyblu
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.