Когда можно использовать ПЛИС, а микроконтроллеры / ЦСП - нет?


28

Я должен выбирать между курсом по усовершенствованным микроконтроллерам и курсом по усовершенствованным ПЛИС.

У меня были вводные курсы по обоим предметам, а также то , что беспокоит меня сейчас, что я уже довольно хорошо прошивкой разработки для микроконтроллеров, и я не понимаю , какие продукты / проекты , которые я могу сделать с FPGA и не может с микроконтроллером / DSP.

Можете ли вы придумать какие-нибудь приложения / продукты / проекты, в которых микроконтроллера или DSP недостаточно, и почему?

Камеры? Скоростные камеры? Высокоскоростная обработка изображений?


4
Основные причины: 1. 100% детерминированные реакции, 2. огромный потенциал для параллелизма. Тем не менее, во многих разработках встроенный в FPGA процессор является ядром сортировки , поскольку программировать сумасшедшую логику для процессора гораздо проще, чем для аппаратного обеспечения.
Дзарда

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

Я ищу приложения, в которых микроконтроллер в большинстве случаев был бы недостаточным, или где FPGA была бы очевидным выбором.
Jolle

4
Какой из них вы нашли легче понять, на вашем вводном курсе? Затем выберите продвинутый на другом, так как (возможно) вы сможете самостоятельно изучить более легкий.
woliveirajr

Ответы:


21

Смотрите также FPGA против микроконтроллеров

Высокоскоростной обработки изображений или видео является хорошим примером. Или обработка «изображений», которые не являются прямыми оптическими изображениями, такими как радарные или лазерные системы.

Ключевым моментом, который необходимо учитывать, являются требования к пропускной способности и задержке . Микроконтроллер может обслуживать прерывание (очень приблизительно) один раз в микросекунду. Он может обслуживать только одно прерывание одновременно. Если вам нужно обрабатывать его продуманным образом, это ограничивает количество обслуживаемых вами услуг за определенное время.

С FPGA, вы можете вообще реагировать на события ввода сразу (ну, на следующем такте). Вы можете иметь много параллельных блоков обработки. Если вы знаете, что ваш фильтр занимает 20 циклов, это совершенно не зависит от всего, что происходит.

Высокопараллельные целочисленные вычисления лучше всего работают на FPGA, особенно если существуют сложные зависимости данных. Тем не менее, они не имеют много встроенной памяти; Вы можете добавить немного DRAM в сторону, но за счет задержки.

Вы можете также хотеть один для периферийных устройств, или говорить некоторую высокоскоростную цифровую шину. Вы не можете побить HDMI в микроконтроллер или из него. Вы не можете построить карту PCI вокруг одного.


16

Ну, я делаю обработку HD видео в реальном времени в FPGA. Кое-что из того, что я делаю, можно сделать на чипе GPU, но не на микроконтроллере или DSP. ПЛИС более гибкая.

Многие системы объединяют FPGA и MCU / DSP, чтобы получить лучшее из обоих миров. Один проект, над которым я, возможно, скоро буду работать, связан с распознаванием объектов в видеопотоке. Предварительные шаги (удаление шума, нормализация, обнаружение краев и т. Д.) Лучше всего выполнить в FPGA, но логика более высокого уровня, которая решает, какие низкоуровневые объекты являются частью распознаваемых объектов, лучше всего выполнять на ЦП (либо внутри или снаружи ПЛИС).

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


14

Короче говоря, ПЛИС хороши там, где вам нужно выполнить небольшую обработку большого количества данных, а ЦП хороши там, где вам нужно выполнить большую обработку небольших данных.

Видеопоток HDMI - это много данных. Это может быть сделано с помощью CPU, GPU или ASIC в общем случае видео, но если вам нужно немного поработать над этим (например, добавить оверлей), вы можете выбрать FPGA.

Аудиопоток не так много данных, но если вам нужно выполнить распознавание речи на нем, вы предпочтете процессор вместо FPGA.

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

Хотя вы можете сделать контроллер клавиатуры из ПЛИС, микроконтроллер будет дешевле, потреблять меньше энергии и проще разрабатывать передовое программное обеспечение для клавиатуры (макросы, игровые функции, переназначение), чем ПЛИС.

Конечно, вы можете сделать что-нибудь в любом из них, с компромиссами, но если вы хорошо разбираетесь в обоих, вы сможете более грамотно взвесить компромиссы и избежать более высоких затрат на детали или времени разработки, которые вы бы потратили на выбор. неправильное решение данной проблемы.


12

Как правило, вы используете микроконтроллер, когда он может выполнять свою работу. Микроконтроллер выполняет логику, выполняя последовательные инструкции.

FPGA выполняет логику, потому что ее аппаратные элементы логически связаны для этого. Это означает, что он может делать вещи намного быстрее, и множество таких вещей одновременно. Как правило, в FPGA сложнее и труднее создать и отладить ту же логику, что и в микро, поэтому вы используете FPGA, когда необходима дополнительная скорость и низкая задержка.


8

Одно приложение, которое я еще не упомянул, - это микроэлектроника или разработка микросхем MCU / CPU / GPU / ASIC. Эти чипы часто создаются на прототипах путем их проектирования в HDL, а затем реализуются в FPGA. Это делает их проще, дешевле и быстрее тестировать и модифицировать, прежде чем, наконец, использовать HDL для создания схемы, необходимой для производства фактического кремния в процессоре или ASIC.

Комментатор упомянул об этом в форме чипов с мягким ядром (хотя они имели опечатку и назвал их чипами с сортировкой ядра). Вы можете взять ARM / 8051 / и т.д. soft-core и любые периферийные устройства soft-core, которые вам нужны, и, по сути, создайте свой собственный микроконтроллер, реализованный в FPGA. Затем, при условии, что у вас есть ресурсы, вы можете использовать это в своем микроконтроллере.

Если вас заинтересовало такое приложение, взгляните на OpenCores, чтобы узнать, что это возможно.


6

Мы создаем радиолокационные инструменты (в основном с синтезированной апертурой), которые широко используют ПЛИС. Я не думаю, что микроконтроллер мог бы легко удовлетворить жесткие временные требования. Я считаю, что многие инструменты LIDAR также используют FPGA.

В основном все, где требования к времени находятся в наносекундах, требует FPGA или ASIC.


5

Микроконтроллер может обрабатывать данные только последовательно, по одной инструкции за раз, поэтому, если у вас очень дорогая операция, вы можете как-то сделать параллельные вычисления. Обработка аудио / видео является хорошим примером этого. Чтобы удовлетворить эту потребность, были разработаны цифровые сигнальные процессоры, которые могут выполнять определенные задачи параллельно, но они недостаточно обобщены для реализации любого произвольного алгоритма, поэтому эти процессоры будут работать для многих задач, но не для всех задач. ПЛИС - это обобщенная часть аппаратного обеспечения. Поскольку вы можете определить, по сути, конструкцию своего собственного оборудования, а затем загрузить его в ПЛИС, он может реализовать любой мыслимый алгоритм, если у него достаточно ресурсов для этого.

Конкретный пример: Кен Перлин предлагает аппаратную реализацию своего алгоритма симплексного шума. Это может быть сделано относительно быстро с традиционным процессором или микроконтроллером, но может быть сделано очень быстро с пользовательским оборудованием. Поскольку я сомневаюсь, что для этого подойдет DSP, самой простой вещью будет FPGA. Трудным путем, конечно, было бы изготовить для вас настоящий физический чип, который невероятно дорог. http://www.csee.umbc.edu/~olano/s2002c36/ch02.pdf


5

Один из ответов, которого здесь нет, - сбор данных. Если вы хотите использовать АЦП для дискретизации сигнала (например, радиосигнала) на частоте 200 МГц и обработки его, микроконтроллер просто не сможет обработать данные достаточно быстро. Типичная плата DAQ FPGA будет принимать, фильтровать, выполнять DDC и передавать RF-данные в CPU на гораздо более низкой частоте. ПЛИС также могут выполнять БПФ и операции канализации на радиочастотном спектре.

Другое приложение - это маршрутизация пакетов, например, устройство, которое управляет одним (или несколькими) интерфейсами Ethernet XAUI, работающими со скоростью 10 Гбит / с каждый. Эти ПЛИС фильтруют и планируют очереди пакетов для разных пунктов назначения. Микроконтроллер / обычный процессор не сможет обрабатывать пропускную способность этих интерфейсов.


4

Фундаментальная причина того, что микропроцессоры и микроконтроллеры могут сделать так много при сравнительно небольшом количестве схем, состоит в том, что если микро нужно только выполнить какой-то сложный расчет 1000 раз в секунду, и это займет 20 микросекунд (поэтому микро будет работать над вычислением 2 % времени), большая часть оборудования, которое будет использоваться для этого расчета, может использоваться для других целей в оставшиеся 98% времени. Таким образом, микроконтроллеры могут использовать скромное количество аппаратного обеспечения для выполнения очень большого числа различных функций, если функции не нужны одновременно.

Количество схем в FPGA часто будет сопоставимо с микроконтроллером (размеры FPGA различаются по размеру на несколько порядков, как и у микроконтроллеров, но диапазоны перекрываются). Однако, в отличие от микроконтроллера, элементы схемы которого будут соединены таким образом, чтобы облегчить их использование для многих не одновременных задач, ПЛИС будет предназначена для выделения частей своей схемы различным задачам «на полный рабочий день». Если бы кто-то хотел, чтобы микроконтроллер подсчитывал количество импульсов, которые происходят на каждом из 100 входов, он был бы ограничен подсчетом импульсов, которые были достаточно медленными, чтобы контроллер мог обрабатывать их последовательно, индивидуально - если бы все входы могли пульсировать независимо от этого, даже быстрый контроллер будет иметь проблемы с подсчетом более нескольких тысяч импульсов в секунду на вход. В отличие от


1

ПЛИС реализует аппаратные логические схемы или функциональный блок, теоретически он может реализовывать все, что угодно. И эти блоки работают одновременно, вряд ли обычный MCU выполняет программирование построчно. Поэтому производительность FPGA намного лучше, чем у MCU, но для этого требуется знание языка HDL или VHDL, который отличается от языка программирования с точки зрения синтаксиса, стиля и концепции.


Как я уже сказал, он может реализовывать все что угодно, поэтому неудивительно, что вы можете реализовать MCU с функциональным блоком, чтобы облегчить вашу разработку с высокой производительностью. Существует функциональный блок, предоставленный Xilinx для встроенного MCU, называемый Microblaze. Поэтому вы также можете выполнить встроенную системную программу в ПЛИС.


Например, вы хотели бы реализовать программируемый звуковой эквалайзер, и наиболее сложная вычислительная часть, такая как FFT, может быть реализована с помощью функционального блока вместо выполнения программного расчета. Но некоторые простые задачи, такие как LCD, интерфейс ввода-вывода, могут быть выполнены MCU. И FPGA позволяет вам иметь встроенные системные и аппаратные функциональные блоки MCU одновременно.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.