Зачем реализовывать микроконтроллер в FPGA?

16

В настоящее время я "исследую" ПЛИС, что они могут сделать, как они это делают и т. Д.

В более чем одном месте ( например, здесь ) я видел проекты, в которых реализован простой микроконтроллер с FPGA.

Итак, мой вопрос:
я хотел бы знать, какова цель выполнения таких реализаций? Зачем использовать микроконтроллер, реализованный в FPGA, вместо того, чтобы иметь на борту микроконтроллер? Каковы преимущества? И возможно также, каковы недостатки?

Джеймс С
источник
Многие из них используют консервированные IP-ядра, однако использование собственного собственного может быть отличным опытом обучения.
Крис Страттон
1
@ChrisStratton - Можете ли вы рассказать подробнее или опубликовать ссылку о консервированных IP-ядрах? Да, я уверен, что это может быть отличным опытом обучения. Но это одна из причин, по которой я задаю этот вопрос. Интересно, это что-то большее, чем просто опыт обучения?
Джеймс С.
1
Большинство людей, делающих это, используют что-то вроде Microblaze, Picobloze, Nios II и т. Д. - это в основном проекты процессоров «в банке» (библиотека), которые вы можете лицензировать и поместить в свой проект. Контраст будет развиваться самостоятельно в источнике HDL, возможно, из блок-схемы, представленной в вашей типичной лекции CS101. Есть ряд интересных практических аспектов, с которыми приходится сталкиваться при превращении лекционного рисунка в рабочее оборудование.
Крис Страттон
1
Посмотрите Open Cores для множества примеров ядер CPU с открытым исходным кодом.
RBerteig
3
У меня есть пример. У нас был микроконтроллер, устаревший для старого продукта. Мы не смогли найти подходящий микроконтроллер для замены с правильным сочетанием периферийных устройств. Использование FPGA со встроенным процессором позволило нам реализовать идеальное сочетание периферийных устройств на FPGA.
Ккрамбо

Ответы:

24

Преимущества:

  • невероятно быстрый интерфейс между микроконтроллером и любым пользовательским интерфейсом или встроенной логикой ввода-вывода.
  • настраиваемый интерфейс процессора и отладки
  • Кроме того, зачастую проще управлять логикой, чем писать контрольный код, скажем, с помощью VHDL.

Недостатки:

  • Возможно, потребуется более дорогая ПЛИС, чтобы соответствовать как микроконтроллеру, так и пользовательской логике, по сравнению с тем, чтобы иметь собственную логику на ПЛИС
  • Возможно, сложнее реализовать, особенно с памятью и, если ядро ​​сложное, чем готовый микроконтроллер на отдельной микросхеме.
PKP
источник
3
Дополнительное преимущество: более простая конструкция, меньшее количество микросхем.
DoxyLover
4
Дополнительный недостаток: лицензирование большего количества IP
Михаил
Как насчет энергопотребления как недостаток?
Крейг МакКуин
@CraigMcQueen Теоретически возможно создать микроконтроллер в ПЛИС, который еще не был изготовлен как отдельное оборудование. В этом случае нет потребления энергии для сравнения. В любом случае, это слишком специфично для устройства, чтобы быть общим плюсом или минусом.
Мач
Все очень хорошие комментарии. И я бы сказал, что обычно FPGA имеют большое энергопотребление, поскольку использование логики обычно очень далеко от 100% в макросоте. Это немного смещается из-за того, что ПЛИС могут использовать сложные методы минимизации мощности. Производственные процессы (технологии) могут быть очень похожи между ПЛИС и процессором той же эпохи. Процессоры имеют выделенные блоки памяти, а также ПЛИС. То, насколько они соответствуют вашим потребностям, зависит от того, насколько вам повезло найти ПЛИС, которая точно соответствует вашим потребностям.
PkP
26

Если ваш проект будет использовать FPGA для тяжелой работы, и у него есть резервные мощности, то почему бы вам пойти в счет дополнительного чипа , когда вы можете просто реализовать в FPGA?

Для многих процедурных сред управления может быть значительно проще реализовать требуемую настройку на языке, подобном C, чем пытаться сделать это в VHDL или Verilog. Добавив микроконтроллер в FPGA, вы получаете лучшее из обоих миров - мощь VHDL / Verilog и т. Д. Для логических систем и систем сопряжения, а также простоту процедурного языка для основных систем контроля и управления.

Majenko
источник
10
Первое предложение этого ответа является основной причиной. Это в основном делается, когда у вас уже есть FPGA с некоторой запасной емкостью на плате в любом случае. (По крайней мере) на одну микросхему меньше и сложность платы. Вы бы не поместили FPGA на плату только для того, чтобы внедрить с ней микроконтроллер, но если у вас уже есть FPGA, это хороший способ сократить стоимость деталей и сложность платы. По крайней мере, поэтому мы это делаем.
Рейраб
13

В дополнение к ответам Majenko и PkP:

Эта тенденция встраивания CPU в дизайн FPGA привела к нескольким гетерогенным системам, таким как:

  • Семейство Xilinx 'Zynq-7000
  • Альтеры Arria / Cyclon / Stratix SoC FPGA
  • SmartFusion FPGA от MicroSemi

На рынке также имеется чип Intel Atom + Altera FPGA: http://www.altera.com/devices/processor/intel/e6xx/proc-e6x5c.html.

Большинство бесплатных микроконтроллеров для FPGA страдают от плохой поддержки цепочки инструментов. Встроенные процессоры ARM поставляются с поддержкой трассировки / отладки, компиляторами (цепочка инструментов gcc) и полной поддержкой linux. Вот опрос, представленный на FPL 2014: http://dx.doi.org/10.1109/FPL.2014.6927482

Редактировать 1:
Существует также класс устройств PSoC (программируемая система на чипе) от Cypress. Эти устройства включают в себя микроконтроллер (M8C, 8051, ARM Cortex M0 или Cortex M3) и классические встроенные контроллеры или устройства ввода / вывода SoC (I²C, SPI, таймер, CAN, DAC, ADC, OpAmp, ...) и программируемые часть. Эта часть не так хорошо программируется, как классические FPGA, но может использоваться для реализации дополнительных контроллеров ввода-вывода или встроенных аппаратных ускорителей. PSoC позволяет использовать аналоговые компоненты в вашем дизайне.
http://www.cypress.com/psoc/?source=CY-ENG-HEADER

Обзор PSoC: PSoC

Paebbels
источник
10

Если вам просто нужен микроконтроллер, и у вас нет FPGA, было бы необычно использовать FPGA с микропрограммой микроконтроллера. Однако не все проекты развиваются в этом направлении. Многие задачи явно нуждаются в FPGA, но в конечном итоге сталкиваются с задачей, которая действительно не подходит для решения VHDL. Иногда проблему лучше всего решать с помощью ЦП общего назначения. Или иногда все наоборот: некоторые задачи просто не подходят для процессора общего назначения - им нужен параллелизм.

В то время у вас есть выбор. Вы можете добавить дополнительный чип к вашему устройству или понять, что у вас есть куча запасных вентилей на ПЛИС, которые вы не используете. Лицензируйте немного IP, и вы сможете получить работающий процессор общего назначения в кратчайшие сроки!

Еще одна интересная деталь - вы можете настроить некоторые прошивки микроконтроллера. Я знаю проекты, в которые встроен Power PC, но которые убрали все ворота, необходимые для поддержки с плавающей запятой, и хороший кусок прогноза ветвления. Это сделало его достаточно маленьким, чтобы соответствовать бок о бок с прошивкой на основе VHDL.

Корт Аммон - Восстановить Монику
источник
9

Есть несколько веских причин для создания экземпляра микропроцессора или микроконтроллера в FPGA. Вот три:

  1. Вы просто хотите узнать о работе процессора. ПЛИС дают вам бесконечные способы проверить, что происходит внутри процессора, когда он выполняет код. Это только для обучения.

  2. Вы внедряете большую систему, которая требует аппаратных скоростей FPGA (быстрее, чем программное обеспечение, выполняемое на микропроцессоре), но ваш проект требует сложного конечного автомата, который легче реализовать с помощью программного обеспечения, работающего на простом процессоре, таком как Xilinx PicoBlaze чем в аппаратном FSM. Обратите внимание, что PicoBlaze может работать с частотой 240 МГц в новейших технологиях обработки FPGA, и что процессор PicoBlaze выполняет команду каждые два такта, так что вы получаете быстрый, согласованный конечный автомат, который легко программируется в программном обеспечении.

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

Вот одно предостережение: если вам нужен быстрый процессор со стандартным набором команд и большой экосистемой разработки, то вам нужен быстрый процессор с жестким ядром, такой как два ARM Cortex-A9 в SoC Xilinx Zynq. Матрица FPGA в Zynq SoC по-прежнему позволяет создавать больше процессорных ядер в программируемой логике, но ARM Cortex-A9 может работать со стандартными операционными системами, такими как Linux, и стандартными IDE, такими как Android.

Между ARM Cortex-A9 и PicoBlaze существует множество программных процессоров, которые вы можете реализовать с помощью программируемой логики, доступной из многих источников. Некоторые люди любят выпускать свои собственные процессоры, и это отличная образовательная деятельность. Однако микропроцессоры нуждаются в инструментах разработки программного обеспечения, и создание / отладка этих инструментов требует на порядок больших усилий, чем создание самого процессора. Вы всегда должны компенсировать возможную выгоду пользовательского микропроцессора от времени и усилий, необходимых для создания / отладки ядра процессора и инструментов.

Полное раскрытие: я работаю на Xilinx, но я почти уверен, что не утверждал, что FPGA - это всегда решение. Если 50-центовый микроконтроллер может справиться с этой задачей, вам лучше воспользоваться этим. FPGA и Zynq SoC предназначены для проектов, требующих тяжелой работы, выходящей за пределы возможностей микроконтроллеров.

Стивен Лейбсон
источник
Теплый прием, Стивен!
PkP
1
Хороший ответ, но кому нужен конечный автомат, который может обрабатывать прерывания? Прерывания - необходимое зло для процессоров fetch-decode-execute, потому что обработка внешнего стимула требует исключительного использования процессора для запуска ISR. В FPGA внешний стимул обрабатывается в отдельном логическом блоке, в то время как конечный автомат также продолжает работать; нет необходимости сохранять и восстанавливать состояние. По сути, прерывания являются несовершенным решением проблемы, которой ЛПВП не имеет вообще.
Бен Фойгт
Вы, конечно, правы для аппаратных машин, Бен. Вы всегда можете подключить контакт «прерывания» как другой вход конечного автомата. Однако многие сложные конечные автоматы просто более понятны при реализации с процессором, работающим на C, или, по крайней мере, более понятны для некоторых разработчиков. Вот когда вам нужно прерывание.
Стивен Лейбсон
2

Иногда вы можете использовать FPGA, потому что у вас есть программное обеспечение, которое работает на давно устаревшем и недоступном физическом процессоре, который вы хотите воскресить. Хотя это не совместимо по выводам (хотя крепления DIP-стиля были замечены), это позволяет вам быть точным в цикле. Чистая программная эмуляция на обычном микропроцессоре вряд ли будет такой. Например, apple2fpga

shuckc
источник