В настоящее время я "исследую" ПЛИС, что они могут сделать, как они это делают и т. Д.
В более чем одном месте ( например, здесь ) я видел проекты, в которых реализован простой микроконтроллер с FPGA.
Итак, мой вопрос:
я хотел бы знать, какова цель выполнения таких реализаций? Зачем использовать микроконтроллер, реализованный в FPGA, вместо того, чтобы иметь на борту микроконтроллер? Каковы преимущества? И возможно также, каковы недостатки?
microcontroller
fpga
design
Джеймс С
источник
источник
Ответы:
Преимущества:
Недостатки:
источник
Если ваш проект будет использовать FPGA для тяжелой работы, и у него есть резервные мощности, то почему бы вам пойти в счет дополнительного чипа , когда вы можете просто реализовать в FPGA?
Для многих процедурных сред управления может быть значительно проще реализовать требуемую настройку на языке, подобном C, чем пытаться сделать это в VHDL или Verilog. Добавив микроконтроллер в FPGA, вы получаете лучшее из обоих миров - мощь VHDL / Verilog и т. Д. Для логических систем и систем сопряжения, а также простоту процедурного языка для основных систем контроля и управления.
источник
В дополнение к ответам Majenko и PkP:
Эта тенденция встраивания CPU в дизайн FPGA привела к нескольким гетерогенным системам, таким как:
На рынке также имеется чип 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:
источник
Если вам просто нужен микроконтроллер, и у вас нет FPGA, было бы необычно использовать FPGA с микропрограммой микроконтроллера. Однако не все проекты развиваются в этом направлении. Многие задачи явно нуждаются в FPGA, но в конечном итоге сталкиваются с задачей, которая действительно не подходит для решения VHDL. Иногда проблему лучше всего решать с помощью ЦП общего назначения. Или иногда все наоборот: некоторые задачи просто не подходят для процессора общего назначения - им нужен параллелизм.
В то время у вас есть выбор. Вы можете добавить дополнительный чип к вашему устройству или понять, что у вас есть куча запасных вентилей на ПЛИС, которые вы не используете. Лицензируйте немного IP, и вы сможете получить работающий процессор общего назначения в кратчайшие сроки!
Еще одна интересная деталь - вы можете настроить некоторые прошивки микроконтроллера. Я знаю проекты, в которые встроен Power PC, но которые убрали все ворота, необходимые для поддержки с плавающей запятой, и хороший кусок прогноза ветвления. Это сделало его достаточно маленьким, чтобы соответствовать бок о бок с прошивкой на основе VHDL.
источник
Есть несколько веских причин для создания экземпляра микропроцессора или микроконтроллера в FPGA. Вот три:
Вы просто хотите узнать о работе процессора. ПЛИС дают вам бесконечные способы проверить, что происходит внутри процессора, когда он выполняет код. Это только для обучения.
Вы внедряете большую систему, которая требует аппаратных скоростей FPGA (быстрее, чем программное обеспечение, выполняемое на микропроцессоре), но ваш проект требует сложного конечного автомата, который легче реализовать с помощью программного обеспечения, работающего на простом процессоре, таком как Xilinx PicoBlaze чем в аппаратном FSM. Обратите внимание, что PicoBlaze может работать с частотой 240 МГц в новейших технологиях обработки FPGA, и что процессор PicoBlaze выполняет команду каждые два такта, так что вы получаете быстрый, согласованный конечный автомат, который легко программируется в программном обеспечении.
Расширяя (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 предназначены для проектов, требующих тяжелой работы, выходящей за пределы возможностей микроконтроллеров.
источник
Иногда вы можете использовать FPGA, потому что у вас есть программное обеспечение, которое работает на давно устаревшем и недоступном физическом процессоре, который вы хотите воскресить. Хотя это не совместимо по выводам (хотя крепления DIP-стиля были замечены), это позволяет вам быть точным в цикле. Чистая программная эмуляция на обычном микропроцессоре вряд ли будет такой. Например, apple2fpga
источник