У FPGA есть хорошие моменты, такие как много точек ввода-вывода, но опять же, вам нужно думать о вещах на очень низком уровне с помощью триггеров и пионера в областях, где дела еще не созрели - например, посмотрите этот вопрос здесь об инструментах разработки на ПЛИС - это мое понимание в настоящее время! Теперь FPGA была использована для создания превосходной ловкости в руках робота, как здесь . Сейчас некоторые люди продают FPGA для быстрого прототипирования и «перспективных» проектов, как здесь , я не до конца их понимаю: если вам не нужно много точек ввода / вывода для таких вещей, как датчики, зачем выбирать FPGA для робота? Так
Когда следует выбрать ПЛИС для проекта по робототехнике?
Ответы:
Я не уверен, что в связанном вопросе об инструментах разработки заставляет вас думать, что они не являются зрелыми. Это правда, что большинство из них являются собственностью и не с открытым исходным кодом. Но я думал, что инструменты были достаточно зрелыми, даже когда этот вопрос задавался три года назад. Сегодня 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 и когда она используется в проектах. Итак, позвольте мне сначала попытаться объяснить эту часть.
ПЛИС и когда кто-то может захотеть иметь ...
С риском для упрощения, FPGA - это чуть больше, чем процессор, который оказывается «реконфигурируемым».
Зачем кому-то нужен «реконфигурируемый» микропроцессор? Ну, потому что это слишком дорого, чтобы изготовить кремниевый процессор, чтобы позволить себе сделать это за один, два или даже двести чипов. Вам нужно будет запускать партии тысяч чипов, чтобы сделать это экономически целесообразным.
Поскольку в первый раз ни один дизайн не обходится без ошибок, использование кремниевого маршрута фактически обязывает компанию по крайней мере к двум, если не большему количеству тестов, и все это при огромных затратах на изготовление.
По сути, это означает, что очень немногие коммерческие компании будут заинтересованы в разработке и производстве чего-либо, кроме чипа с достаточно широкой коммерческой привлекательностью.
Итак, если вы придумали блестящий дизайн, оправдывающий использование собственного микропроцессора, вы можете попытаться воплотить свою идею в жизнь при ограниченном бюджете, реализовав ее в FPGA, где настоящий чип представляет собой просто набор логических элементов и «Программа» (обычно VHDL или Verilog) организует эти ворота в настоящий микропроцессор.
Но это довольно далеко по совершенно другой (микропроцессорной конструкции!) Дороге ...
Что заставляет меня предположить, что
... FPGA не являются необходимыми для робототехники - по крайней мере, с самого начала
Для робототехники вам нужен процессор . ПЛИС - это просто особый тип процессора (реконфигурируемый).
Вы спрашиваете, «должны ли»? Ну, это зависит от ваших знаний, а также от того, где лежат ваши реальные интересы - сначала микропроцессор или робототехника?
Если вы увлекаетесь микропроцессорами, то непременно! А робототехника является отличной областью применения для пользовательских микропроцессоров - возможно, кортекса видения со многими параллельными путями принятия решений, обрабатываемыми непосредственно в аппаратном обеспечении, или специального тензорного умножения в аппаратном обеспечении - в основном всего, что обычные процессоры не могут хорошо обрабатывать в готовом виде.
Но если вы собираетесь разрабатывать микропроцессоры в ПЛИС, ну, конечно, вам понадобятся все те знания низкого уровня, о которых вы упомянули, и даже больше - потому что по сути вы будете проектировать свой собственный процессор. Что на самом деле не имеет ничего общего с робототехникой, хотя вашим целевым приложением может быть робототехника.
Большинство дизайнеров, вероятно, могут найти существующий процессор, который будет делать большую часть того, что им когда-либо понадобится.
Поэтому я думаю, что вам, вероятно , не нужна ПЛИС.
Начальная дорожная карта: от коммерческих возможностей до (может быть) FPGA ...
Первая цель, на мой взгляд, состоит в том, чтобы попытаться встроить все ваши творческие концепции в работающий робот (довольно сложная задача сама по себе).
Если вы обнаружите, что у вас есть конкретные и существенные узкие места обработки в вашем дизайне, то следующая цель - оптимизировать выбор / дизайн ваших процессоров, все еще имеющихся в продаже чипов. Может быть, больше, быстрее (компромисс с потреблением мощности, рассеиванием тепла). Возможно меньшие, специализированные чипы, обрабатывающие определенные задачи и взаимодействующие с основным мозгом (компромисс с алгоритмом / логическими усложнениями).
Только если есть возможности, которые вы просто не сможете заставить использовать коммерческие чипы, тогда вы можете рассмотреть возможность внедрения специализированного процессора в FPGA, потому что в этот момент будут очень очевидные преимущества, которые вы надеетесь получить, «свернув свои собственные». ', и вы можете сосредоточиться только на реализации этих возможностей с правильными интерфейсами для остальной части вашего дизайна.
В противном случае вы, скорее всего, будете отвлечены от своей главной цели (которую я собираюсь предположить, на самом деле построить робота!)
Итог: FPGA отвлекают от начала работы в робототехнике - пока вы не пройдете довольно далеко путь робототехники - и не добились значительных успехов в разработке цифровой электроники / микропроцессора где-то на этом пути.
источник
Работая как с FPGA, так и с микроконтроллерами в робототехнических проектах, я бы сейчас сказал: с кем бы у человека, который выполняет задачу, больше всего опыта. Если вы знаете оба одинаково хорошо, вы бы не задавали себе вопрос. Если вы не знаете, хорошо, то это будет пункты, чтобы пройти:
Также часто используются гибридные решения. Либо с двумя чипами, так и с одним микроконтроллером для программного кода, и с ПЛИС для ввода-вывода, или с какой-то другой задачей. Существует также ряд FPGA, в которые встроен микроконтроллер.
Я не был бы настолько резок в FPGA, как некоторые другие посты, но также обычно утверждал бы, что если вы не будете хорошо знать свой VHDL, вам будет лучше использовать микроконтроллер или даже еще лучше встроенные ПК.
источник