Для чего используются программируемые логические ИС различной сложности?

10

Программируемая логика может быть реализована в вашем виджете во многих различных спектрах, от прожигания нескольких вентилей или использования MUX до новейшей FPGA со встроенным микроконтроллером и периферийными устройствами ввода-вывода, не говоря уже о PrimeCell GPIO от ARM или других, более конкретных примерах . Для каких приложений используются различные уровни сложности программируемых логических устройств? Хотя группировка, кажется, сливается воедино в пределах их определений , я думаю, что это приемлемый список:

  1. PAL / PLA / GAL : программируемый логический массив; в Digikeyперечислены как«Embedded - PLD», охватывающие асинхронный ввод / вывод 10/8 (ATF16V8C) до 50 МГц, макроячейку 192 (CY7C341B) и в основном перепрограммируемые.
  2. CPLD : комплексное программируемое логическое устройство; Digikey перечисляет их как таковые, доступные от 7,5 нс 10 входов / выходов (ATF750C) до 233 МГц, 428 входов / выходов «CPLD при плотности FPGA» (CY39100V484B).
  3. FPGA : программируемый в полевых условиях вентильный массив; доступно от 58 входов / выходов (XC2064) до 1023 животных BGA входов / выходов (EP1S80F1508C7N).
  4. FPGA с жестким MCU : это когда MCU физически размещен в микросхеме FPGA, а не эмулируется.

Цитата из Википедии:

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

Это не объясняет разницу между использованием 233 МГц, CPLD 400 I / O и сопоставимой FPGA ; или между 192 макроэлементами PLD и сопоставимым CPLD . Я не могу найти надежные рекомендации по сужению вариантов дизайна. Обратите внимание, что в настоящее время я не имею в виду конкретное приложение, но часто задавался вопросом: «Что бы я использовал для этого?»

Я получил отличный совет за пределами сайта относительно конкретных требований, но все же думаю, что этот вопрос мог бы быть полезен в некоторых примерах, демонстрирующих предпочтение одному семейству PLD, когда другое, возможно, оказалось одинаково или более подходящим.

tyblu
источник
XC2064 - древняя часть. Я не знаю, сделаны ли еще CY7C341B и CY39100V484B. Вы должны учитывать это при принятии любого сравнения / решения.
Брайан Карлтон
2
К вашему сведению, с любой из этих частей существует огромная разница между разнообразием предложений, которые производители включают в свою литературу, и гораздо меньшим ассортиментом комбинаций количества затворов / упаковки / скорости и температуры, которые вы действительно можете ожидать получить в свои руки. небольшие количества менее чем за пол года выполнения заказа. Поэтому при проектировании с ними сначала проверяйте реальную доступность. Даже если я знаю, что покупка хочет получить их от дистрибуции, я предпочитаю выбирать устройства, на которых, как я знаю, поставщик, более ориентированный на прототипы, на самом деле всегда имеет их под рукой, если нужно.
Крис Страттон
Хороший совет, @ChrisStratton. Обычно это первое, что я проверяю с большинством деталей, но все же приятно знать, что это особенно проблематично с PLD.
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. В зависимости от размера вашего проекта и скорости вашего энергонезависимого хранилища, это может привести к заметной задержке от включения до полного функционирования. Некоторые ПЛИС имеют встроенную флэш-память для хранения своих данных, но большинство используют отдельные микросхемы памяти. ПЛИС часто имеют встроенные умножители, ФАПЧ и другие логические функции для повышения скорости вычислений. Большие блоки оперативной памяти также доступны. Вы также сможете использовать высокопроизводительные спецификации ввода-вывода, такие как LVDS, PCI и PCI-Express.

  • ПЛИС с микропроцессорным жестким ядром: я не знаком с этим, но я бы предположил, что ваш проект будет сосредоточен на программировании микроконтроллера, а ПЛИС дополнит микроконтроллер. Части, которые вы определили, создают видимость, что вы начнете свой проект с микроконтроллера и FPGA, а затем объедините их в один чип / пакет.

Как решить, что подходит именно вам:

Лучший способ - закончить ваш код (Verilog / VHDL), а затем использовать инструменты вендора, чтобы попытаться вписать его в наименьшую возможную часть. Я знаю, что инструмент Altera позволяет довольно легко изменять цели программирования, поэтому вы можете продолжать выбирать меньшие FPGA, а затем меньшие CPLD, пока использование вашего дизайна не приблизится к 75%. Если вам требуется производительность, попробуйте выбрать устройства, которые имеют функции (быстрые множители), которые снижают требования логики к скорости. Опять же, инструменты вендора помогут вам определить, нужно ли вам обновить или вы можете понизить версию.

Другим фактором, который часть использовать, является простота использования. Использование логики PAL / PLA / GAL, вероятно, требует больше усилий, чем построение функции с использованием дискретных логических вентилей (74HC *, 4000 и т. Д.). CPLD обычно требуют только одного напряжения питания и не требуют дополнительных схем. Они фактически автономны. ПЛИС начинают использовать несколько источников питания для ввода-вывода и логического ядра, сложные стандарты ввода-вывода, отдельную программную память, многослойные (> 2) печатные платы и пакеты BGA.

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

  1. Определите все входы и выходы для вашего FPGA / CPLD. Обычно это простая часть этапа проектирования. Таким образом, вы узнаете, на какую упаковку вы смотрите, и насколько близко вы можете сократить ее до этого поля.

  2. Нарисуйте блок-схему внутренней логики. Если ваши блоки выглядят простыми (каждый блок будет иметь множество логических элементов и регистров), то вы, вероятно, можете использовать CPLD. Однако, если ваши блоки имеют метки, такие как «Ethernet transciever», «Интерфейс PCI-Express x16», «Контроллер DDR2» или «Кодирование / декодирование h264», то вы почти наверняка смотрите на FPGA и используете HDL.

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

Примеры заявок на CPLD:

  • Многоканальный ШИМ с интерфейсом SPI
  • I / O Expander
  • Декодирование адресного пространства CPU
  • Часы (хронометраж)
  • Дисплей Мультиплексоры
  • Простой DSP
  • Некоторые простые программы могут быть преобразованы в дизайн CPLD

Пример Hobbyist FPGA Приложения:

  • Малые системы на кристалле (SoC)
  • видео
  • Сложные протоколы мостов
  • Обработка сигналов
  • Шифрование / дешифрование
  • Эмуляция устаревшей системы
  • Логический анализатор / Генератор паттернов

В большинстве случаев вы будете ограничены сравнительно небольшими ПЛИС, если не хотите паять пакеты BGA. Я выбрал бы между большим CPLD или дешевой FPGA, и требования к размеру / скорости определяли, какой мне нужен.

W5VO
источник
Слегка расширив ваш ответ, я бы склонен сгруппировать PAL / PLA / GAL в ту же корзину, что и PLD / CPLD, по причине мгновенного запуска без времени на настройку, и что поставщики начинают выдвигать CPLD перед PAL / PLA / GAL устройства. Например, я работаю с некоторыми решеточными устройствами, и их ИС семейства CPLD значительно дешевле и предлагают больше ворот, чем двоюродные братья PAL / GAL / PLA. Стоимость последних является непомерно высокой по сравнению с тем, что они предлагают.
smashtastic
Линия определенно размыта. Я не думал, что у PAL / PLA / GAL есть элементы хранения, или у CLPD есть SRAM, пока я не посмотрел перечисленные tyblu части. Кажется, что PAL / PLA / GAL больше похожи на утиную ленту в дизайне, чем на основную часть.
W5VO
3

Хороший «эмпирический» список будет выглядеть примерно так:

  • PAL / PLA / GAL: используется вместо дискретных логических элементов IC на печатной плате
  • CPLD: используется там, где требуются сложные задачи, не относящиеся к DSP, и, возможно, критичные ко времени (загрузка загрузочного кода в FPGA из памяти, генератор синусоидальных сигналов LUT для ЦАП и т. Д.)
  • FPGA: используется, когда требуется время, умножение или возможность DSP (FIR-фильтры, FFT и т. Д.)
  • FPGA с жестким MCU: используется, когда требуются функциональные возможности FPGA и необходимо допускать доступ к периферийным устройствам на FPGA (датчики температуры) или для упрощения выполнения задачи, менее чувствительной ко времени, в C, а не VHDL (функциональность UART / последовательного порта, Ведение домашнего хозяйства и т. Д.)
Джоэл Б
источник
PAL / PLA / GAL с небольшим количеством дешевого CPLD под малым количеством долларов практически не используются, за исключением устаревших приложений.
Крис Страттон
Я не буду спорить об этом. Я мог только представить себе, что, возможно, там, где низкая (батарея) мощность / маленький размер является ограничением, они могут все еще использоваться, поскольку они могут быть более выгодными, чем CPDL, но я все равно использовал бы самый маленький / энергоэффективный CPLD, если бы это был мой дизайн.
Джоэл Б
2

Простой ответ может быть, что есть два пути:

1. Сначала вы разрабатываете свою систему на высоком уровне абстракции (например, HDL или схемы). Затем вы пытаетесь вписать его в PAL / CPLD / FPGA и выбрать те, которые удовлетворяют вашим требованиям (количество логических элементов / логических элементов, производительность и т. Д.), А затем выбираете самый дешевый из них в зависимости от того, что вы определяете как самый дешевый (стоимость разработки против стоимость производства и т. д.).

2. Но, как правило, перед тем, как приступить к кодированию или разработке схемы HDL, вы уже можете оценить сложность системы (сколько шлюзов вам нужно, если кажется, что вам нужен 8-битный MCU или 32-битный MCU, или нет микроконтроллера в все). Исходя из этого, вы также можете выбрать свое программируемое устройство. Это было бы менее точно, но позволит проектировать ваше непрограммируемое аналоговое и цифровое оборудование параллельно с программируемым аппаратным и программным обеспечением (если оно есть).

Хальст
источник
2

Используется FPGA с жестким ядром, поскольку она меньше по площади, чем отдельный микроконтроллер, и быстрее, чем микропроцессор с мягким ядром. Однако цена обычно хуже, чем у ПЛИС и отдельного микроконтроллера. В общем, программное обеспечение и, следовательно, микроконтроллер лучше для (относительно) медленных и редких случаев, таких как конфигурация параметров и обработка ошибок; логика лучше для непрерывных процессов. Например, при обработке пакетов запись в память должна быть логической; обработка времени жизни должна оставаться в программном обеспечении.

В пространстве ПЛИС есть дешевые / маломощные части и дорогие / быстрые части. Обычно микроконтроллер только в дорогом; это делает обмен ценой с дискретным микроконтроллером еще хуже для решения на FPGA.

Никто не использует PAL в новых разработках, по крайней мере, в течение 10 лет. CPLDs заняли эту нишу.

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

Брайан Карлтон
источник
1
Одна из причин сохранения CPLD заключается в том, что современные недорогие CPLD по-прежнему производятся с использованием технологий напряжения с одним источником питания, в то время как большинству современных FPGA требуется несколько напряжений питания. Поэтому, если вам не нужно делать много, дешевле поставить cpld на плате - но если вы говорите о большом CPLD, fpga низкого уровня может быть дешевле и даст вам больше возможностей для дальнейшего улучшения, особенно если у вас уже есть источники питания для сердечника по какой-то другой причине.
Крис Страттон
Спасибо за ответ, @BrianCarlton, и комментарии, @ChrisStratton. Приведенные примеры и текущее мнение - отличная информация.
Тыблу