Неожиданно плохие DNL, ​​INL и ENOB на АЦП

8

В настоящее время я пытаюсь охарактеризовать MCU и его периферийные устройства, в частности встроенный АЦП. Однако, выполняя обычные тестовые процедуры (то есть синусоидальную волну для ENOB и пилообразную для DNL и INL), я считаю, что результаты довольно плохие. Короче говоря, АЦП «составляет» 12 бит - это означает, что от него можно ожидать разрешения около 10 бит. Тем не менее, независимо от того, что я пытаюсь, ENOB, кажется, плато около 8,5 бит. Точно так же с DNL и INL - лучшие результаты, которые я получаю, это когда частота дискретизации повышается до 64 раз. Техническое описание на странице 44 действительно говорит , что можно ожидать DNL около ± 3 LSB - однако, это то , что я получаю , когда я передискретизации. Необработанный сигнал достигает пика около 7 LSB. Есть несколько вещей, которые я пробовал до сих пор:

  • Размещение конденсатора 10 нФ на входе АЦП и заземлении (что работает в некоторой степени - без него ENOB составляет 7,5)
  • Передискретизация 4х, 8х и несколько других до 256х. Это - как и следовало ожидать - также улучшает результаты, хотя и не так значительно. Большая передискретизация дает лучшие результаты, тогда как 4x почти идентична отсутствию передискретизации.
  • Замедление синхронизации модуля АЦП и увеличение окна выборки. Ни один из них не был особенно эффективным. Увеличение окна отбора проб оказало небольшое положительное влияние на ENOB и DNL. Замедление времени не имело никакого эффекта.
  • Точно так же использование внешних или внутренних ссылок, похоже, не дало эффекта, хотя я не проводил много экспериментов с внешней ссылкой - возможно, это следующий вопрос для рассмотрения. Небольшое редактирование для справки того, кто может прочитать его однажды - использование внешней ссылки в моем случае дало худшие результаты. Другими словами, внутренняя ссылка на моем MCU кажется более точной - или внешняя ссылка не так хороша, как я ожидал.

Теперь вопрос в том, в какой момент можно принять, что АЦП просто низкого качества или как-то поврежден? Какие другие тесты я могу попытаться улучшить характеристики АЦП. Обратите внимание, что я генерирую входные сигналы с помощью генератора функций. На данный момент я просто застрял - то есть исчерпал темы форума для чтения - и я был бы искренне признателен за любой совет.

Фандора
источник
Вы проверяли PS? Это режим переключения? Если да, можете ли вы поставить LDO между PS и ADC? Вы проверяли качество часов АЦП?
Клаудио Ави Чами
Эти ошибки, как и ожидалось. В спецификации в худшем случае 6 LSB. Вы можете попробовать калибровку или лучше использовать отдельный АЦП для точных измерений.
@ClaudioAviChami Я считаю, что мой линейный источник питания. Это марка Rigol DG2041A. Не могли бы вы намекнуть, где я могу начать с проверки часов АЦП - быстрый поиск в Google не выглядит многообещающим :)
fandor
1
Какой источник сопротивления питает АЦП? Вам может понадобиться буферный усилитель.
Брайан Драммонд
@BrianDrummond Я обязательно измерю это завтра утром, когда доберусь до своей установки и опубликую это здесь. Спасибо за предложение!
Фандор

Ответы:

11

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

Одно из этих правил следующее:

Периферийные устройства микроконтроллера ADC всегда ужасны.

Всегда. Не тот ужасный, которого ты просто умаляешь. Вид ужасного, который заставляет вас плакать в позе плода в душе.

Я ребенок, но только немного. Чтобы ответить на ваш вопрос, да, АЦП на самом деле просто так плохо, и да, вы должны принять это. Обратите внимание на большой отказ от ответственности с указанием «Условия применения применяются». в таблице.

Следует помнить, что для определенных частей (например, MCU) таблица данных также является маркетинговым материалом, и MCU обычно конкурируют по периферии или потреблению энергии (или обоим). Так что цифры для таких вещей, как АЦП, часто будут техническиПравильно, если вы используете АЦП при тех же нелепых и непрактичных обстоятельствах, они измеряли данные. Фаворитом, который я часто вижу, является измерение ENOB со всеми остальными периферийными устройствами, а также фактическое ядро ​​процессора, полностью отключенное в некотором глубоком сне. Другой способ заключается в использовании значительной постобработки программного обеспечения и подобных методов, таких как передискретизация, для получения измерений. Я не думаю, что когда-либо видел таблицу данных MCU, в которой АЦП не определялся с точки зрения «это лучшее, что вы когда-либо сможете достичь, и мы можем или не можем даже сказать вам, как нам это удалось», а не «Это спецификация, прежде чем пытаться очистить сигнал в программном обеспечении».

И, чтобы было ясно, похоже, что эта часть имеет довольно хороший АЦП, по крайней мере, по сравнению со всеми другими ужасными АЦП MCU. 8,5 бит? Такое богатство! Так буржуазно! Большую часть времени вы получите , может быть , 6 битов из 10 разрядного АЦП в качестве MCU. Помните, когда они говорят о 12-битном разрешении, они означают, что есть 12 бит, которые вы можете прочитать из какого-то регистра. Не подразумевается, что они не будут 12 битами бесполезного шума. Единственное обещание, что будет 12 бит чего-то .

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

Ну, они не могут. Неважно, насколько хороша ссылка на самом деле, это не проблема стабильности. Это шум. И физика.

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

Во-первых, только одно переключение CMOS-транзистора будет сбрасывать все виды гармоник и шума непосредственно, ну, во все, и будет объединяться (как вы уже догадались) во всем, когда оно переключается. Мы склонны думать о КМОП как о малой мощности (и она есть), но стоит иметь в виду, что мощность , используемая КМОП , фактически равна нулю - за исключением случаев, когда транзистор меняет состояние. И они очень быстро меняют состояние, порядка десятков или сотен пикосекунд. Когда вы берете дюжину миллиампер, потребляемых чем-то, что по существу не потребляет статической энергии, и весь этот ток превращается полностью в интенсивный, пиковый ток в 100ps буквально миллионов маленьких крошечных ублюдковпереключатели, переключение в совокупности ... ну, это должно немного переосмыслить вещи. Эти несколько миллиампер гораздо более зловещие, чем кажутся, по крайней мере, для аналоговых устройств. Низкая мощность, низкий уровень шума. CMOS имеет низкое энергопотребление, потому что для переключения требуется только питание. Но он переключается сильнее, чем дабстеп-бас.

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

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

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

О, и я даже не коснулся того, как все это предполагает, что у вас есть безупречная внешняя компоновка и ситуация заземления и развязки во всех отношениях, касающихся вашего аналогового и цифрового раздела. Это само по себе нетривиально, просто спросите Генри Отта .

Итак, в заключение, я боюсь, что АЦП на вашем чипе действительно просто ужасен. Точно так же, как любой другой АЦП MCU. Сожалею. Либо это достаточно хорошо - и для многих других приложений (при поддержке довольно умного программного источника ry - pun!) - так и есть. Удивительно, что действительно можно сделать даже при плохой аналоговой производительности, пока вы умны. Но умный может нести вас так далеко. если вам нужно холодное, жесткое эффективное число битов, вам просто нужно прикусить пулю и использовать выделенный АЦП вместе с тщательной компоновкой и развязкой печатной платы, или использовать более специализированную деталь (например, пакеты с несколькими матрицами).

metacollin
источник
3
+1 к цитате дня: «CMOS имеет низкое энергопотребление, потому что для переключения ему требуется только питание. Но он переключается сильнее, чем дабстеп-бас».
Арахо
Хочу заметить, что в этой части используется АЦП в стиле перераспределения платежей, которые имеют свои собственные уникальные проблемы: analog.com/en/search.html?q=an-931
Питер Смит