Микроконтроллер против FPGA для ЦАП и АЦП [закрыто]

Я искал несколько форумов о микроконтроллерах и FPGA, но не смог найти ответ, который искал.

Мне нужно сделать выбор, буду ли я использовать микроконтроллер/мини-ПК, такой как Rapsberry Pi, или что-то вроде Zynq SoC.

Что я хочу сделать, так это: обнаружить вибрации с помощью датчика геофона, использовать АЦП для отправки информации на контроллер, а затем использовать ЦАП для отправки встречного сигнала на исполнительный механизм.

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

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

Теперь я хотел бы придумать решение, позволяющее использовать меньший способ выполнения вычислений. Я проверил Rapsberry Pi, но диапазон вольт для ЦАП-АЦП очень низкий: от -0,3 до +0,3 В. Я ищу диапазон между +/- 10 В и 16 бит.

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

Спасибо.

Что вы имеете в виду здесь: «все же хотелось бы иметь возможность отображать входящие и исходящие сигналы и настраивать исходящий сигнал таким образом, чтобы я мог противодействовать определенной частоте»? Когда вы говорите «счетчик», вы имеете в виду счет? Или что-то другое?
Привет, ДиБоско, спасибо за вопрос. Я имею в виду счетчик. Удаление определенной частоты. Итак, представьте, что вентилятор или что-то в этом роде всплеск частоты 40 Гц. Тогда я хотел бы возразить этому. Контрмера
@Dukel В вашем вопросе недостаточно информации, чтобы дать ответы. Потребуются частота дискретизации, разрешение, компоненты и т. Д., И даже в этом случае ваш вопрос очень широк.
Raspberry pi не имеет АЦП/ЦАП. Таким образом, вам всегда нужно будет использовать внешний модуль, а это значит, что вы можете выбрать модуль с нужным диапазоном напряжения.
Я думаю, что то, что вам нужно использовать для этого, зависит от математики, которую вы выполняете в своем процессоре. Если вы считаете, что Pi будет выполнять необходимые математические операции, вы можете взаимодействовать с внешними АЦП и ЦАП. Это также зависит от того, сколько из них вы хотите сделать. Я думаю, что это, возможно, слишком широкий вопрос в его нынешнем виде и, вероятно, недостаточно информации. Возможно, вам сойдет с рук Cortex M4 или M7, я думаю, это невозможно сказать по имеющейся у нас информации.
Если вы используете zynq, кто предоставит вам логику для FPGA?
Решающим фактором будет максимально допустимая задержка между аналоговым входом и аналоговым выходом.
То, как вы задали свой вопрос, предполагает, что вам следует пойти на малину. Кроме того, такие термины, как «Вибрации объявления геофона» (по-видимому, вибрации земли), предполагают, что вам нужна частота дискретизации намного меньше 1M. Не переоценивайте свои требования. Вы, вероятно, хорошо справитесь с Raspi для всех задач, включая некоторое БПФ для части визуализации. Для встроенного аудио АЦП вы можете использовать простой делитель напряжения. Но имейте в виду, что встроенный кодек, как известно, не является самым точным и, конечно же, подходит для звука, поэтому частота дискретизации ограничена.
Raspberry Pi может использовать звуковую карту USB в качестве АЦП/ЦАП для лучшего качества.
Обратите внимание, что «отправить встречный сигнал на исполнительный механизм» — это классическая проблема систем управления — вы можете добиться этого, вообще не проходя через цифровую область. Что бы вы ни делали, задержка будет очень важным фактором. Какую задержку вы можете принять между получением сигнала и его отправкой на исполнительный механизм?
Я рассмотрю модули АЦП/ЦАП для Raspberry pi, спасибо. 4 кГц уже достаточно, поэтому FPGA действительно будет излишним. Спасибо! Я думаю, Raspberry pi или что-то в этом роде подойдет.
@Dukel Рад видеть НАКОНЕЦ упомянутую скорость! Это один из тех случаев, когда у вас уже есть работающее решение, и вы могли бы предоставить МНОГО ДЕТАЛЕЙ о том, что работает для вас. Скорость передачи данных, точность ЦАП и АЦП, подробные сведения о необходимых этапах обработки (алгоритмы и порядок) — все это сделало бы ответ более применимым и направленным на ваши потребности. Также обратите внимание на четырехъядерные устройства, такие как ODROID-C2, которые также работают на частоте в несколько ГГц. Если вам нужно что-то действительно быстро и дешево.
@jonk спасибо за совет. Некоторые спецификации еще не ясны, поэтому я, возможно, надеялся получить некоторые предложения. ODROID-C2 выглядит хорошо, я прочитаю об этом, еще раз спасибо!
Я спросил о задержке, потому что SBC, такие как Pi, не являются системами реального времени, вы должны учитывать, что ОС использует немного процессорного времени, поэтому, если вам нужен ввод в 1 миллисекунду для вывода задержки в жестком реальном времени, возникают головные боли. Кроме того, аудио АЦП и ЦАП используют буферизованный ввод-вывод, а задержка равна 1 буферу или 1 кадру USB, так что это также добавляет задержку. С другой стороны, быстрый микроконтроллер может обрабатывать каждую выборку по мере ее поступления, что значительно снижает задержку. Но вы должны знать задержку, которая вам нужна в первую очередь...

Ответы (2)

Как я понимаю, у вас есть 3 варианта:

ПК, уменьшенный

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

MCU

Микроконтроллер, работающий на частоте ~ 100 МГц, должен иметь достаточную вычислительную мощность для этой задачи (и будет гораздо более отзывчивым, чем решение на основе Linux). Вам нужно будет подключиться к уровням периферийного напряжения, но вы должны иметь возможность использовать для этой задачи простой усилитель (обеспечивающий некоторую защиту цифровой стороны в процессе). Вы можете записывать выходные данные через UART, некоторые световые индикаторы или небольшую панель дисплея — для всех этих частей легко найти примеры. Конечно, вам придется изучить немного другую программную парадигму (микро-питон возможен, но, возможно, здесь не идеален).

ПЛИС

Ваш пример части может не подойти - он сильно завышен и дорог. Базовая обработка в реальном времени, вероятно, может быть выполнена на довольно небольшом устройстве, но низкоуровневое кодирование, вероятно, будет проблемой (если только Matlab не сможет сгенерировать вам весь код, который вам нужен).


Использование FPGA здесь обычно является подходом, который следует использовать, если вычисления сложны и требовательны. MCU должен подойти, если ваша цель — уменьшить аппаратное обеспечение и, возможно, сделать его работающим от батареи. Множество небольших микроконтроллеров поставляются на макетных платах размером с кредитную карту по цене около 10 долларов.

Проверьте, какая скорость передачи данных вам нужна для генерации сигнала «отмены». Это определит размер массива памяти и частоту прямого доступа к памяти, необходимые для управления ЦАП в вашем проекте.

Если вам нужен диапазон ±10 В, это, как правило, выходит за пределы диапазона большинства АЦП и ЦАП, поэтому вам потребуется готовое решение или разработка собственной аналоговой системы.

Используйте rasberri pi, они дешевы, и есть множество примеров кода и руководств, которые помогут вам начать работу, программное обеспечение бесплатное, и большинство дистрибутивов, которые вы устанавливаете на rasberri pi, уже поставляются с программным обеспечением, которое вы будете использовать. Вы также можете приобрести блоки сбора данных, работающие в диапазоне ±10 В.

Микроконтроллер (на плате разработчика) также является опцией, однако убедитесь, что программное обеспечение (компилятор) бесплатно. Вы можете использовать gcc с большинством, но если вы хотите отлаживать с помощью IDE, это становится сложнее, потому что большинство коммерческих компиляторов ограничивают вас 32 килобайтами программирования, прежде чем стоимость возрастет до тысяч. Скорее всего, вы будете программировать на C. Если вы не можете найти щит, вы будете разрабатывать свою собственную электронику на печатной плате. С микроконтроллером вы сможете запускать цикл управления быстрее, чем ПК или устройство с обычной операционной системой (вы можете установить операционную систему реального времени (RTOS) на пи и работать быстрее).

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

Keil имеет ограничение на размер кода для компилятора, но без проблем отлаживает большие изображения. Правда, я не знаю, может ли он использовать отладочную информацию GCC...
Eclipse для C/C++ можно использовать для отладки «голого железа» ARM GCC бесплатно без ограничений по размеру кода.
Вы можете отлаживать GCC из командной строки, если хотите, я полагаю, что Eclipse может подключиться к этому