Когда следует использовать FPGA в робототехнике?


12

У FPGA есть хорошие моменты, такие как много точек ввода-вывода, но опять же, вам нужно думать о вещах на очень низком уровне с помощью триггеров и пионера в областях, где дела еще не созрели - например, посмотрите этот вопрос здесь об инструментах разработки на ПЛИС - это мое понимание в настоящее время! Теперь FPGA была использована для создания превосходной ловкости в руках робота, как здесь . Сейчас некоторые люди продают FPGA для быстрого прототипирования и «перспективных» проектов, как здесь , я не до конца их понимаю: если вам не нужно много точек ввода / вывода для таких вещей, как датчики, зачем выбирать FPGA для робота? Так

Когда следует выбрать ПЛИС для проекта по робототехнике?


Если вам нужен параллелизм, то есть смысл использовать FPGA, чтобы достичь этого. Кроме того, вы можете адаптировать свой собственный «дизайн чипа» и «легко» обновить некоторые функции без нового аппаратного чипа. Я видел примеры обнаружения нескольких объектов с камеры в режиме реального времени. Наверняка это накладные расходы для небольших проектов.
Паутинка

Ответы:


4

Я не уверен, что в связанном вопросе об инструментах разработки заставляет вас думать, что они не являются зрелыми. Это правда, что большинство из них являются собственностью и не с открытым исходным кодом. Но я думал, что инструменты были достаточно зрелыми, даже когда этот вопрос задавался три года назад. Сегодня Xilinx , Altera и Lattice имеют свободно доступные среды разработки, которые работают на Windows и Linux с 32- и 64-битной поддержкой. Если вы настаиваете на открытом исходном коде, Icarus Verilog может сделать совсем немного. Но я бы лично придерживался специфических инструментов производителя.

ПЛИС - это не просто набор настраиваемых вьетнамок. Рассмотрим Altera NIOS II . 32-разрядный процессор с мягким ядром, работающий под управлением Linux. Комбинируйте коммуникации и другие периферийные устройства из OpenCores или из Xilinx , Altera или Lattice, и вы создали собственный микроконтроллер со всем, что вам нужно, и ничего, что вы не делаете. Вы даже можете написать C-код для процессора NIOS II и иметь определенные функции, реализованные непосредственно в оборудовании FPGA, если вам нужна скорость. Это достаточно высокий уровень мышления для вас?

FPGA имеют высокую начальную инвестиционную стоимость. Но дешевле и проще добавить функциональность позже в процессе проектирования. Вот что подразумевается под «перспективными» конструкциями. Рассмотрим проект, в котором вы хотите добавить несколько дополнительных двигателей к вашему роботу, но у вас не хватает генераторов ШИМ на вашем микроконтроллере. Чем ты занимаешься? Добавить еще один микроконтроллер? Купить отдельные чипы ШИМ и подключить их к интерфейсу связи? Что если все ваши коммуникационные интерфейсы используются? С FPGA это сводится почти полностью к операции копирования и вставки. Намного проще, дешевле и быстрее масштабировать дизайн, чтобы включить новые функции, не покупая столько дополнительного оборудования с FPGA.

Но, вероятно, самая главная причина использования FPGA - скорость. Я не говорю о чистой тактовой частоте. Но когда нужно, чтобы много вещей происходило одновременно. Как упоминал Госсамер, параллелизм - это то, в чем действительно хороши FPGA. Конструкции фильтров особенно выигрывают от такой параллельной архитектуры. Если вам нужно отфильтровать и отреагировать на быстро меняющийся датчик, тогда вам нужна FPGA. Они также весьма хороши в обработке видео, поскольку это также выигрывает от параллельной обработки.

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

массивно параллельная обработка зрения


Не могли бы вы уточнить, что «FPGA имеют высокую начальную инвестиционную стоимость». Связано здесь : цены выглядят очень низкими. Вы имеете в виду высокую стоимость обучения или какую-то другую фигуру?
HHH

1
@hhh Я не говорил о стоимости чипов. Я говорил о стоимости разработки. Рассмотрим комплект для разработки микроконтроллеров, такой как PandaBoard . Содержит ARM Cortext A9 за 181 доллар. Плата для разработки FPGA, которая может содержать A9, такую ​​как Cyclone V, стоит 1099 долларов.
embedded.kyle

@hhh Есть, конечно, более дешевые комплекты разработки FPGA. Но я пытался найти какую-то метрику, с помощью которой можно сравнить две вещи, которые так различны. Таким образом, набор для разработки, имеющий (очень) примерно одинаковую вычислительную мощность, примерно в 10 раз больше.
embedded.kyle

@hhh Самый дешевый ARM на Mouser составляет $ 0,80 . Самая дешевая ПЛИС стоит $ 2,80 .
embedded.kyle

2
@hhh Эта рука - ультрасовременное исследование, на котором работает, вероятно, десятки, если не сотни тысяч долларов заказного оборудования. Обработка видео в целом имеет тенденцию быть на более высоком уровне. Смотрите здесь и здесь . И ни один из них не смог обработать видео со скоростью 1 кф / с Больше похоже на 30-60fps. На доске, которую вы указали, нет видеовходов. Хотя это, безусловно, может управлять приводами и обрабатывать тактильные датчики. Вызывающе мог подражать рука, которую вы связали.
embedded.kyle

2

Я думаю, что может быть неправильное представление о том, что же такое FPGA и когда она используется в проектах. Итак, позвольте мне сначала попытаться объяснить эту часть.

ПЛИС и когда кто-то может захотеть иметь ...

С риском для упрощения, FPGA - это чуть больше, чем процессор, который оказывается «реконфигурируемым».

Зачем кому-то нужен «реконфигурируемый» микропроцессор? Ну, потому что это слишком дорого, чтобы изготовить кремниевый процессор, чтобы позволить себе сделать это за один, два или даже двести чипов. Вам нужно будет запускать партии тысяч чипов, чтобы сделать это экономически целесообразным.

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

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

Итак, если вы придумали блестящий дизайн, оправдывающий использование собственного микропроцессора, вы можете попытаться воплотить свою идею в жизнь при ограниченном бюджете, реализовав ее в FPGA, где настоящий чип представляет собой просто набор логических элементов и «Программа» (обычно VHDL или Verilog) организует эти ворота в настоящий микропроцессор.

Но это довольно далеко по совершенно другой (микропроцессорной конструкции!) Дороге ...

Что заставляет меня предположить, что

... FPGA не являются необходимыми для робототехники - по крайней мере, с самого начала

Для робототехники вам нужен процессор . ПЛИС - это просто особый тип процессора (реконфигурируемый).

Вы спрашиваете, «должны ли»? Ну, это зависит от ваших знаний, а также от того, где лежат ваши реальные интересы - сначала микропроцессор или робототехника?

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

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

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

Поэтому я думаю, что вам, вероятно , не нужна ПЛИС.

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

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

Если вы обнаружите, что у вас есть конкретные и существенные узкие места обработки в вашем дизайне, то следующая цель - оптимизировать выбор / дизайн ваших процессоров, все еще имеющихся в продаже чипов. Может быть, больше, быстрее (компромисс с потреблением мощности, рассеиванием тепла). Возможно меньшие, специализированные чипы, обрабатывающие определенные задачи и взаимодействующие с основным мозгом (компромисс с алгоритмом / логическими усложнениями).

Только если есть возможности, которые вы просто не сможете заставить использовать коммерческие чипы, тогда вы можете рассмотреть возможность внедрения специализированного процессора в FPGA, потому что в этот момент будут очень очевидные преимущества, которые вы надеетесь получить, «свернув свои собственные». ', и вы можете сосредоточиться только на реализации этих возможностей с правильными интерфейсами для остальной части вашего дизайна.

В противном случае вы, скорее всего, будете отвлечены от своей главной цели (которую я собираюсь предположить, на самом деле построить робота!)

Итог: FPGA отвлекают от начала работы в робототехнике - пока вы не пройдете довольно далеко путь робототехники - и не добились значительных успехов в разработке цифровой электроники / микропроцессора где-то на этом пути.


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

Вы, конечно, правы, что есть много областей, где ПЛИС являются преимуществом - я не исключил те, что в моем ответе. Вопрос в том, где вы находитесь на кривой опыта и насколько четко вы понимаете конкретные преимущества, которые вы хотите получить от использования FPGA. Если вы не знаете ответ на этот вопрос, то, вероятно, вам не нужен! (Это повторяет ответ Якоба ниже.)
Асад Эбрахим

1

Работая как с FPGA, так и с микроконтроллерами в робототехнических проектах, я бы сейчас сказал: с кем бы у человека, который выполняет задачу, больше всего опыта. Если вы знаете оба одинаково хорошо, вы бы не задавали себе вопрос. Если вы не знаете, хорошо, то это будет пункты, чтобы пройти:

  • Требуется ли сложная синхронизация для портов ввода / вывода? 3-фазный двигатель может иметь такие требования. ПЛИС имеют здесь небольшое преимущество.
  • Можете ли вы распараллелить свой алгоритм супер низкой задержки? Здесь FPGA на самом деле не конкурирует с микроконтроллерами, а больше со встроенными ПК. Большинство вещей я бы выбрал для встроенного ПК, но у вас может быть преимущество с ПЛИС для некоторых конкретных приложений. Например, плотная стереофоническая обработка часто выполняется в FPGA. Многие камеры используют ПЛИС для обработки потока данных.

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

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


Можете ли вы показать несколько примеров проектов, которые помогут понять, что хорошо делать с ПЛИС, а какие с микроконтроллерами? Предположим, например, какой-нибудь робот, следующий за линией: он работает довольно хорошо с одним микроконтроллером на плоской чистой поверхности, пока не получатся более размытые линии, требующие повышения резкости изображения / сверток / и т.д. Если линия в лесу (или другой шумной поверхности), это будет гораздо сложнее (я сомневаюсь, можно ли вообще сделать с fpga). Вы делали какой-нибудь реальный роботизированный проект, где вы использовали fpga, например, для обработки изображений / видео в реальном времени? +1 для VHDL.
hhh
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.