Программируемая логика может быть реализована в вашем виджете во многих различных спектрах, от прожигания нескольких вентилей или использования MUX до новейшей FPGA со встроенным микроконтроллером и периферийными устройствами ввода-вывода, не говоря уже о PrimeCell GPIO от ARM или других, более конкретных примерах . Для каких приложений используются различные уровни сложности программируемых логических устройств? Хотя группировка, кажется, сливается воедино в пределах их определений , я думаю, что это приемлемый список:
- PAL / PLA / GAL : программируемый логический массив; в Digikeyперечислены как«Embedded - PLD», охватывающие асинхронный ввод / вывод 10/8 (ATF16V8C) до 50 МГц, макроячейку 192 (CY7C341B) и в основном перепрограммируемые.
- CPLD : комплексное программируемое логическое устройство; Digikey перечисляет их как таковые, доступные от 7,5 нс 10 входов / выходов (ATF750C) до 233 МГц, 428 входов / выходов «CPLD при плотности FPGA» (CY39100V484B).
- FPGA : программируемый в полевых условиях вентильный массив; доступно от 58 входов / выходов (XC2064) до 1023 животных BGA входов / выходов (EP1S80F1508C7N).
- FPGA с жестким MCU : это когда MCU физически размещен в микросхеме FPGA, а не эмулируется.
Цитата из Википедии:
Разница между FPGA и CPLD заключается в том, что FPGA внутренне основаны на справочных таблицах (LUT), тогда как CPLD формируют логические функции с множеством элементов (например, суммой продуктов). CPLD предназначены для более простых проектов, в то время как FPGA предназначены для более сложных проектов. В целом, CPLD являются хорошим выбором для широких комбинационных логических приложений, тогда как FPGA больше подходят для больших конечных автоматов (то есть микропроцессоров).
Это не объясняет разницу между использованием 233 МГц, CPLD 400 I / O и сопоставимой FPGA ; или между 192 макроэлементами PLD и сопоставимым CPLD . Я не могу найти надежные рекомендации по сужению вариантов дизайна. Обратите внимание, что в настоящее время я не имею в виду конкретное приложение, но часто задавался вопросом: «Что бы я использовал для этого?»
Я получил отличный совет за пределами сайта относительно конкретных требований, но все же думаю, что этот вопрос мог бы быть полезен в некоторых примерах, демонстрирующих предпочтение одному семейству PLD, когда другое, возможно, оказалось одинаково или более подходящим.
источник
Ответы:
Есть два критерия, которые вы можете использовать для оценки цифрового проекта, которые помогут вам решить, какая часть лучше всего соответствует вашим критериям. Первый - это размер / сложность дизайна - насколько много логики. Второе - это требования к входу и выходу с точки зрения количества выводов. Скорость может быть учтена, если вы сможете оценить, какой будет ваша самая медленная функция. Инструменты поставщика (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.
Шаги для сужения ваших требований к дизайну будут включать:
Определите все входы и выходы для вашего FPGA / CPLD. Обычно это простая часть этапа проектирования. Таким образом, вы узнаете, на какую упаковку вы смотрите, и насколько близко вы можете сократить ее до этого поля.
Нарисуйте блок-схему внутренней логики. Если ваши блоки выглядят простыми (каждый блок будет иметь множество логических элементов и регистров), то вы, вероятно, можете использовать CPLD. Однако, если ваши блоки имеют метки, такие как «Ethernet transciever», «Интерфейс PCI-Express x16», «Контроллер DDR2» или «Кодирование / декодирование h264», то вы почти наверняка смотрите на FPGA и используете HDL.
Примеры заявок на CPLD:
Пример Hobbyist FPGA Приложения:
В большинстве случаев вы будете ограничены сравнительно небольшими ПЛИС, если не хотите паять пакеты BGA. Я выбрал бы между большим CPLD или дешевой FPGA, и требования к размеру / скорости определяли, какой мне нужен.
источник
Хороший «эмпирический» список будет выглядеть примерно так:
источник
Простой ответ может быть, что есть два пути:
1. Сначала вы разрабатываете свою систему на высоком уровне абстракции (например, HDL или схемы). Затем вы пытаетесь вписать его в PAL / CPLD / FPGA и выбрать те, которые удовлетворяют вашим требованиям (количество логических элементов / логических элементов, производительность и т. Д.), А затем выбираете самый дешевый из них в зависимости от того, что вы определяете как самый дешевый (стоимость разработки против стоимость производства и т. д.).
2. Но, как правило, перед тем, как приступить к кодированию или разработке схемы HDL, вы уже можете оценить сложность системы (сколько шлюзов вам нужно, если кажется, что вам нужен 8-битный MCU или 32-битный MCU, или нет микроконтроллера в все). Исходя из этого, вы также можете выбрать свое программируемое устройство. Это было бы менее точно, но позволит проектировать ваше непрограммируемое аналоговое и цифровое оборудование параллельно с программируемым аппаратным и программным обеспечением (если оно есть).
источник
Используется FPGA с жестким ядром, поскольку она меньше по площади, чем отдельный микроконтроллер, и быстрее, чем микропроцессор с мягким ядром. Однако цена обычно хуже, чем у ПЛИС и отдельного микроконтроллера. В общем, программное обеспечение и, следовательно, микроконтроллер лучше для (относительно) медленных и редких случаев, таких как конфигурация параметров и обработка ошибок; логика лучше для непрерывных процессов. Например, при обработке пакетов запись в память должна быть логической; обработка времени жизни должна оставаться в программном обеспечении.
В пространстве ПЛИС есть дешевые / маломощные части и дорогие / быстрые части. Обычно микроконтроллер только в дорогом; это делает обмен ценой с дискретным микроконтроллером еще хуже для решения на FPGA.
Никто не использует PAL в новых разработках, по крайней мере, в течение 10 лет. CPLDs заняли эту нишу.
В последние 5? года CPLDs являются FPGA-подобными внутри, но с памятью для хранения конфигурации на кристалле. Поскольку в настоящее время FPGA составляют 100 МГц, скорость является гораздо меньшей причиной для внедрения логики в CPLD, чем это было 10-15 лет назад. Однако FPGA по-прежнему имеют другие функции, такие как множители, сериализаторы и много памяти, которые могут объединить дизайн, даже если у него нет такой большой логики.
источник