Сравните реализацию простого автоматизированного проектирования на MCU против FPGA / CPLD

8

Я работаю с микроконтроллерами с 90-х годов, и недавно я вышел на сцену FPGA с чипами серии Spartan6 от Xilinx. Принимая во внимание простую конструкцию системы автоматизации производства с датчиками и двигателями и некоторый интеллект, чтобы связать все, на каком типе устройства я мог бы закончить проект быстрее и проще, MCU или FPGA? Маленькие или «очевидные» баллы также приветствуются, потому что я новичок в FGPA в целом.

Кевин Бойд
источник
Даже решение FPGA почти наверняка будет также включать процессор, либо рядом с FPGA, встроенным в него, либо в подключенный более крупный компьютер. Структуры хранимых программ гораздо более легко нацелены на реализацию сложных частей алгоритмов, чем специализированные логики или конечные автоматы, поэтому вы сохраняете последующие только для вещей, которые должны быть быстрыми (или массивно параллельными), но простыми.
Крис Страттон
Отличные ответы от Ричарда и Мартина ниже. Может быть заманчиво попытаться применить недавно изученный навык или технологию к следующей проблеме, но в этом случае (по причинам, описанным джентльменами выше), я думаю, что MCU - это путь.
Радиан

Ответы:

11

Нет причин использовать FPGA, если вам не нужно . Даже два одинаково талантливых инженера в области MCU и FPGA будут использовать MCU для относительно простой задачи автоматизации.

Pro MCU:

  • У MCU обычно есть все периферийные устройства для внешнего мира, готовые к работе
  • Компиляция занимает секунды (FPGA занимают минуты или часы)
  • Есть на порядок (или два!) Больше инженеров, которые могут помочь или подобрать, где вы остановились. (Для забавы, не обязательно статистически достоверного сравнения - сравните количество вопросов и ответов по переполнению стека для C против VHDL или FPGA )

Используйте FPGA, если вам нужно, потому что:

  • Требуемый перебор чисел не может быть удовлетворен с точки зрения мощности, веса, размера или стоимости с помощью микропроцессора.
  • Существуют жесткие сроки в реальном времени, которые не могут быть гарантированы с помощью программного обеспечения (например, время отклика в области микросекунд)
  • Использование логики ПЛИС может упростить создание надежных утверждений о времени отклика.
  • Вы можете значительно сэкономить на затратах, энергопотреблении и т. Д., Используя пользовательские типы данных (например, 12-разрядные числа с плавающей точкой)

Или:

  • Ваше назначение говорит вам, что вы должны :)
Мартин Томпсон
источник
+1 За 3-ю пулю с «на порядок (или два!) Больше инженеров, которые могут помочь». В прошлый раз я использовал этот критерий, он был для выбора языка программирования.
Ник Алексеев
5

Несколько причин, почему я считаю, что использование микроконтроллера (MCU) будет проще для вас:

  • У вас есть опыт работы с MCU. Изучение всех деталей любого нового чипа требует времени.
  • Микроконтроллеры имеют встроенные периферийные устройства, которые вы должны были бы реализовать (или купить) на ПЛИС. Например, большинство MCU имеют порт I2C, который пригодится, если вы будете считывать данные с датчика I2C. Кроме того, большинство MCU имеют своего рода аналого-цифровой преобразователь и широтно-импульсный модулятор, оба из которых, скорее всего, будут необходимы для хорошего управления двигателем.
  • Сложные алгоритмы легче выразить на C, чем на VHDL (у меня нет опыта работы с Verilog).
  • Человеческие задержки просты в MCU, но требуют значительных ресурсов в FPGA.
  • Для простой заводской автоматизации, скорее всего, достаточно коротких стандартных битов и медленных скоростей MCU.

В любом случае необходимо позаботиться о написанном вами коде, чтобы он работал правильно во всех ситуациях, особенно в опасных условиях.

richarddonkin
источник