Перейти к содержанию
    

Передискретизация и увеличение разрядности АЦП

Всем добрый день!

 

Встала такая задача: у имеющегося 10-битного АЦП нужно повысить эффективную разрядность до 12 бит. 

 

Структуру дельта-сигма АЦП вполне представляю, но там отсчеты фильтруются sinc-фильтром высокого порядка. А мне бы нужно попроще, с минимумом вычислений.

 

Прочитал эту статью Enhancing_ADC_resolution_by_oversampling.pdf однако остались вопросы. Например я делаю передискретизацию в 16 раз. Т.е это означает увеличение эфф.разрядности на 2 бита. При должной фильтрации наверно так и будет. Но в статье предлогается брать сумму по группам из 16 отсчетов. Внутренний голос подсказывает, что при этом произойдет увеличение шумов в корень из 16 раз, т.е в 4 раза (если считать в LSB). Однако вес одного LSB теперь будет в 16 раз меньше (входной диапазон напряжений АЦП остался тем же, а диапазон "кодов" на выходе сумматора вырос в 16 раз). Т.е если перевести полученный с сумматора код в "вольты", то эффективный шум вроде как уменьшается в 4 раза. Так ли это и какой смысл после этого делать деление на 16 -сигнал станет чище конечно, но шумы квантования при этом возрастают?  :laughing:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Т.е если перевести полученный с сумматора код в "вольты", то эффективный шум вроде как уменьшается в 4 раза. Так ли это и какой смысл после этого делать деление на 16 -сигнал станет чище конечно, но шумы квантования при этом возрастают?

То есть вопрос - отбрасывать ли два младших разряда, или оставить?

Вам же надо 12 разрядов. Вот их и оставьте. А поделить на 16 - значит выбросить все 4 младших. Зачем?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

То есть вопрос - отбрасывать ли два младших разряда, или оставить?

Вам же надо 12 разрядов. Вот их и оставьте. А поделить на 16 - значит выбросить все 4 младших. Зачем?

Да, по идее так и должно быть, только будет ли простое сложение достаточной фильтрацией чтобы повысить разрядность?

 

И вот собственно что в тексте не понял: 

Adding these extra samples and right-shifting the result by a factor n,

yields a result with resolution increased by n bits.

 

 

Как так, делаем правый cдвиг на n бит (деление на 2^n) и получаем сигнал с бОльшим разрешением. Разрешение насколько я понимаю это величина LSB? Если сложить 4 выборки и поделить на 4 получим простое усреднение, а LSB-то останется таким же.

 

И вот еще цитата: 

Normal averaging will only even out signal fluctuations, while Decimation will increase the resolution.
 

 

Опять не понятно. Усреднение убирает флуктуации. Это понятно, но как прореживание увеличивает разрешение?! Или это слово resolution можно вставлять где угодно, как в русское слово из 3х букв?  :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, по идее так и должно быть, только будет ли простое сложение достаточной фильтрацией чтобы повысить разрядность?

Обычно, по крайней мере в сигма-дельта АЦП, по отдельности такое усреднение не используют, а сначала понижают в несколько раз путем усреднения (или CIC-фильтром), а потом ставят децимирующий FIR фильтр. Делается это по двум причинам. Во первых АЧХ будет иметь завал и единичный коэффициент пропускания только на DC. Во вторых вдали от DC будет засчет наложения попадать внеполосный шум. Представляете себе АЧХ moving average фильтра? Подумайте что с ним будет при понижении частоты отсчетов на выходе в N раз.

 

И вот собственно что в тексте не понял:  

 

Как так, делаем правый cдвиг на n бит (деление на 2^n) и получаем сигнал с бОльшим разрешением. Разрешение насколько я понимаю это величина LSB? Если сложить 4 выборки и поделить на 4 получим простое усреднение, а LSB-то останется таким же.

 

 

На мой взгляд, понятно написано

As seen from Equation 3-1, increasing the resolution from

10-bits to 12-bits requires the summation of 16 10-bit values. A sum of 16 10-bit

values generates a 14-bit result where the last two bits are not expected to hold

valuable information. To get ‘back’ to 12-bit it is necessary to scale the result.

Вы суммируете 16 чисел, то есть грубо говоря умножаете на шестнадцать (сигнал медленно меняется в пределах окна суммирования), а сдвигаете на два бита, то есть делите на 4. Получаете два дополнительных бита разрешения.

 

Опять не понятно. Усреднение убирает флуктуации. Это понятно, но как прореживание увеличивает разрешение?! Или это слово resolution можно вставлять где угодно, как в русское слово из 3х букв?  :biggrin:

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, по идее так и должно быть, только будет ли простое сложение достаточной фильтрацией чтобы повысить разрядность?

На мой взгляд - это будет самое эффективное решение. Когда вес всех участвующих выборок (16 штук) одинаковый.

По цитатам - не понимаю. Нет возможности вникать. Не обращайте внимания.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Разрешение насколько я понимаю это величина LSB? Если сложить 4 выборки и поделить на 4 получим простое усреднение, а LSB-то останется таким же.

разрешение характеризует дисперсию шума квантования.

?\mathrm{DR_{dB}} = \mathrm{SNR_{dB}} = 20 \log_{10}(2^n) \approx 6.02 \cdot n

 

шум квантования в первом приближении белый. делаете усреднение по N отсчетам - пропорционально уменьшаете полосу => амплитуду шума (дисперсию).

 

www.analog.com/static/imported-files/tutorials/MT-003.pdf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всем добрый день!

Встала такая задача: у имеющегося 10-битного АЦП нужно повысить эффективную разрядность до 12 бит. ..

Делал что-то подобное с 12-битным ADS788. Нужна была полоса до 100 кГц, а частоту сэмплирования можно было выбрать до 2 МГц (при питании 3.3В). В первую очередь подыскал АЦП, чтобы SFDR (Spurious free dynamic range) (кроме подходящей цены, скорости, и т.д..) был бы побольше, чем как для 12 бит. У ADS788 он 86 дБ как раз на 100 кГц, что соответствует примерно 14 разрядам. Сделал пробные оцифровки с частотой примерно 1500 ksps, посмотрел сигнал и сделал по нему спектр и спектрограмму (много раз с разными настройками). Действительно, получил нижний уровень не хуже -90 дБ относительно полной шкалы. Дальше было все понятно - делать FIR фильтр, децимацию. Кроме того, что внутренние шумы оказались меньше одного шага квантования, что приводило к тому, что при оцифровке сигнала, меньшего чем шаг квантования, АЦП выдавал один и тот же код длительное время. Естественно, это приводило к тому, что фильтровать на некоторых существенных отрезках было нечего. Выкрутился тем, что вне полосы подал тон (хотел шум, но простого меандра хватило) с уровнем выше шага квантования и тогда действительно был получен уровень -90 дБ.

Выводы сделал такие, что 1) - нужен АЦП с 'повышенной внутренней разрядностью', пусть хоть он 8-битный и 2) - возможно, для улучшения диапазона в полосе придется добавить шум вне полосы, который потом отфильтровать (почти как в сигма-дельте).

Для оценки фильтра можно применить тот же FFT анализ, подбирая подходящее окно, которое и является импульсной характеристикой фильтра. Понятно, применение прямоугольного окна (что эквивалентно простому суммированию, допустим, по 16 точек) менее эффективно, чем сглаживающего окна. И надо при выборе окна обязательно знать его частотную характеристику, чтобы в полосе сигнала получить единичную передачу (или какая нужна), а все, что вне полосы задавить на минимально необходимую величину.

Изменено пользователем sup-sup

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

и никакого повышения разрядности не происходит.

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

Изменено пользователем sup-sup

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Понятно, применение прямоугольного окна (что эквивалентно простому суммированию, допустим, по 16 точек) менее эффективно, чем сглаживающего окна.

А почему? Где бы увидеть математическое доказательство?

Одно дело - обрезать полосу сигнала, а другое - понизить его шум. Или нет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Обычно, по крайней мере в сигма-дельта АЦП, по отдельности такое усреднение не используют, а сначала понижают в несколько раз путем усреднения (или CIC-фильтром), а потом ставят децимирующий FIR фильтр. Делается это по двум причинам. Во первых АЧХ будет иметь завал и единичный коэффициент пропускания только на DC. Во вторых вдали от DC будет засчет наложения попадать внеполосный шум. Представляете себе АЧХ moving average фильтра? Подумайте что с ним будет при понижении частоты отсчетов на выходе в N раз.

 

На мой взгляд, понятно написано

Вы суммируете 16 чисел, то есть грубо говоря умножаете на шестнадцать (сигнал медленно меняется в пределах окна суммирования), а сдвигаете на два бита, то есть делите на 4. Получаете два дополнительных бита разрешения.

 

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

Я понял, т.е перед оцифровкой тогда мне нужно ограничить спектр до половинной частоты, с которой потом я буду брать отсчеты с выхода сумматора. Скажем я делаю оцифровку 8кГц, потом суммирую группы по 16 отсчетов, т.е на выходе получаю 500Гц. Тогда мне нужно ограничить спектр сигнала на входе АЦП до 250Гц?

 

Да теперь все стало ясно, спасибо.:) Накапливаем дополнительно 4 бита и 2 отбрасываем т.к они содержат одни шумы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А почему? Где бы увидеть математическое доказательство?

Одно дело - обрезать полосу сигнала, а другое - понизить его шум. Или нет?

К сожалению, с математикой трудновато. На пальцах как то понятно, что отфильтровать перед децимацией нужно все, что потом гармошкой сложится в рабочую полосу и не повысит существенно там шум. Так как прямоугольное окно дает sin(x)/x АЧХ, ясно,что это хуже того, что можно получить более оптимальным КИХом. Но может и хватить. Наверное (точно), это (выбор фильтра) зависит от наличия дополнительных внеполосных помех (кроме шума квантования). Все, что лежит выше частоты Найквиста (после децимации) должно быть отфильтровано (до децимации), да так, чтобы не было следов ни шумов квантования, ни любых возможных помех (в пределах заданного себе же порога). Если для этого хватает прямоугольного окна в конкретном случае, то и нормально. Можно прикинуть на пальцах, а можно просимулить в Матлабе сколько надо дБ (20 или 60).

Изменено пользователем sup-sup

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Делал что-то подобное с 12-битным ADS788. Нужна была полоса до 100 кГц, а частоту сэмплирования можно было выбрать до 2 МГц (при питании 3.3В). В первую очередь подыскал АЦП, чтобы SFDR (Spurious free dynamic range) (кроме подходящей цены, скорости, и т.д..) был бы побольше, чем как для 12 бит. У ADS788 он 86 дБ как раз на 100 кГц, что соответствует примерно 14 разрядам. Сделал пробные оцифровки с частотой примерно 1500 ksps, посмотрел сигнал и сделал по нему спектр и спектрограмму (много раз с разными настройками). Действительно, получил нижний уровень не хуже -90 дБ относительно полной шкалы. Дальше было все понятно - делать FIR фильтр, децимацию. Кроме того, что внутренние шумы оказались меньше одного шага квантования, что приводило к тому, что при оцифровке сигнала, меньшего чем шаг квантования, АЦП выдавал один и тот же код длительное время. Естественно, это приводило к тому, что фильтровать на некоторых существенных отрезках было нечего. Выкрутился тем, что вне полосы подал тон (хотел шум, но простого меандра хватило) с уровнем выше шага квантования и тогда действительно был получен уровень -90 дБ.

Выводы сделал такие, что 1) - нужен АЦП с 'повышенной внутренней разрядностью', пусть хоть он 8-битный и 2) - возможно, для улучшения диапазона в полосе придется добавить шум вне полосы, который потом отфильтровать (почти как в сигма-дельте).

Для оценки фильтра можно применить тот же FFT анализ, подбирая подходящее окно, которое и является импульсной характеристикой фильтра. Понятно, применение прямоугольного окна (что эквивалентно простому суммированию, допустим, по 16 точек) менее эффективно, чем сглаживающего окна. И надо при выборе окна обязательно знать его частотную характеристику, чтобы в полосе сигнала получить единичную передачу (или какая нужна), а все, что вне полосы задавить на минимально необходимую величину.

Возникли вопросы. Спуры это палки которые постоянно сидят в спектре? Всмысле никакая фильтрация их уже не уберет если они попадают в полосу частот? У меня спектр чистенький до -120дб ровная полоска.

Чтобы оценить "внутреннюю разрядность"... я так понял можно делая FFT на длительной реализации? Чтобы FFT работало как избирательный фильтр убирающий шумы квантования. И тогда спуры будет видно?

Для оценки фильтра можно применить тот же FFT анализ, подбирая подходящее окно, которое и является импульсной характеристикой фильтра. Понятно, применение прямоугольного окна (что эквивалентно простому суммированию, допустим, по 16 точек) менее эффективно, чем сглаживающего окна.

Не понял. Окно (взвешивающая функция) нужно чтобы минимизировать артефакты FFT преобразования. Т.е просто убирает сигнал вначале и в конце реализации. Разве оно работает как НЧ фильтр? Вы предлогаете делать свертку функции окна с сигналом? Зачем?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так как прямоугольное окно дает sin(x)/x АЧХ, ясно,что это хуже того, что можно получить более оптимальным КИХом.

В том-то и дело, что любое окно в фильтре КИХ служит для уменьшения пульсаций АЧХ за пределами полосы пропускания (боковых лепестков) путем расширения основного, расширения полосы пропускания. Вот я и сомневаюсь, что через такую АЧХ не пролезет больше шума.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...