Есть два критерия, которые вы можете использовать для оценки цифрового проекта, которые помогут вам решить, какая часть лучше всего соответствует вашим критериям. Первый - это размер / сложность дизайна - насколько много логики. Второе - это требования к входу и выходу с точки зрения количества выводов. Скорость может быть учтена, если вы сможете оценить, какой будет ваша самая медленная функция. Инструменты поставщика (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.
- Посмотрите, есть ли у ваших интерфейсов особые требования к вводу / выводу, такие как специальные напряжения, LVDS, DDR или высокоскоростные SERDES. Проще получить чип, который его поддерживает, чем получить дополнительный чип переводчика.
Примеры заявок на CPLD:
- Многоканальный ШИМ с интерфейсом SPI
- I / O Expander
- Декодирование адресного пространства CPU
- Часы (хронометраж)
- Дисплей Мультиплексоры
- Простой DSP
- Некоторые простые программы могут быть преобразованы в дизайн CPLD
Пример Hobbyist FPGA Приложения:
- Малые системы на кристалле (SoC)
- видео
- Сложные протоколы мостов
- Обработка сигналов
- Шифрование / дешифрование
- Эмуляция устаревшей системы
- Логический анализатор / Генератор паттернов
В большинстве случаев вы будете ограничены сравнительно небольшими ПЛИС, если не хотите паять пакеты BGA. Я выбрал бы между большим CPLD или дешевой FPGA, и требования к размеру / скорости определяли, какой мне нужен.