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

Корректировка мультиплексированных АЦП

Здравствуйте. Для повышения частоты дискретизации с наименьшими затратами используют простой способ - параллельное включение 2-x АЦП или более, что дает увеличение частоты дискретизации в два раза. Минус такого способа состоит в том, что возникают ошибки усиления, смещения и фазы. Это прекрасно видно в спектре сигнала. К примеру, для сигнала с частотой f0, пропущенного через такую систему АЦП, будут присутствовать "ложные" пики. Для ошибки смещения - на частоте Fs/2. Для гэйна и фазовой ошибок на частоте (Fs/2 - fo). Существуют варианты корректировок таких сигналов. Самый простой из них - с помощью FIR фильтра. Этот фильтр, по сути, является задержкой во втором канале относительно первого. Он пересчитывает отсчеты сигнала так, чтобы они соответствовали своему "реальному положению". Импульсная характеристика такого фильтра есть не что иное, как кардинальный синус( sinc(Pi *x ) ), где x - рассчитанная задержка. Пускай x = 0.001; (Для Fs = 2064384 и задержки во втором канале в 1 нс). Сигнал корректируется. С определенными результатами, но корректируется. После Fs/4 сигнал корректируется только если x = - 0.001, хотя мне надо, чтобы x был равен 0.001. Объясните пожалуйста, в чем проблема. И как это можно исправить.

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

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

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


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

Здравствуйте. Для повышения частоты дискретизации с наименьшими затратами используют простой способ - параллельное включение 2-x АЦП или более, что дает увеличение частоты дискретизации в два раза. Минус такого способа состоит в том, что возникают ошибки усиления, смещения и фазы. Это прекрасно видно в спектре сигнала. К примеру, для сигнала с частотой f0, пропущенного через такую систему АЦП, будут присутствовать "ложные" пики. Для ошибки смещения - на частоте Fs/2. Для гэйна и фазовой ошибок на частоте (Fs/2 - fo). Существуют варианты корректировок таких сигналов. Самый простой из них - с помощью FIR фильтра. Этот фильтр, по сути, является задержкой во втором канале относительно первого. Он пересчитывает отсчеты сигнала так, чтобы они соответствовали своему "реальному положению". Импульсная характеристика такого фильтра есть не что иное, как кардинальный синус( sinc(Pi *x ) ), где x - рассчитанная задержка. Пускай x = 0.001; (Для Fs = 2064384 и задержки во втором канале в 1 нс). Сигнал корректируется. С определенными результатами, но корректируется. После Fs/4 сигнал корректируется только если x = - 0.001, хотя мне надо, чтобы x был равен 0.001. Объясните пожалуйста, в чем проблема. И как это можно исправить. Информацию о методах корректировок беру из статей на английском, ибо наши об этом почти не пишут.
Приведите, пожалуйста, ссылки на статьи (или сами статьи).

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


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

Приведите, пожалуйста, ссылки на статьи (или сами статьи).

https://drive.google.com/file/d/0B-a0qo3gvn...iew?usp=sharing

https://drive.google.com/file/d/0B-a0qo3gvn...iew?usp=sharing

 

Автор первой статьи продвигает немного измененную формулу для расчета импульсной характеристики фильтра, которая не подходит в моем случае - для разных частот нужны разные иксы. Из второй статьи беру детектор, который как раз и сходится к тому x = 0.001 для частот меньших Fs/4. Что и нужно.

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


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

Автор первой статьи продвигает немного измененную формулу для расчета импульсной характеристики фильтра, которая не подходит в моем случае - для разных частот нужны разные иксы. Из второй статьи беру детектор, который как раз и сходится к тому x = 0.001 для частот меньших Fs/4. Что и нужно.

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

Bandwidth_Mismatch_and_Its_Correction_in_ADC.pdf

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


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

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

Посмотрел по-быстрому статью. Схема корректировки содержит два фильтра, которые фильтруют "эффекты", вносимые SHA, и уничтожают(eliminate) мнимые компоненты. Результаты корректировки в статье отличные. Пики на уровне - 90dB, что мне и нужно. Но я не могу использовать SHA. Его попросту нет. У меня есть две АЦП в устройстве и ПЛИС, которая и будет выполнять цифровую корректировку на заднем плане (digital background calibration) Если я сказал что-то не так по поводу "вашей" статьи, то, пожалуйста, поправьте.

В первом сообщение я спрашивал о "физике" процесса корректировки фильтром. Фильтр sinc компенсирует фазовое отклонение сигнала.

Пускай отсчеты идеального сигнала приходят раньше, чем надо. Фильтром sinc мы их пересчитываем на те значение, которые должны были быть. Создаем задержку. Для идеального сигнала мы ее знаем. Тогда почему после Fs/4 такой косяк со знаком возникает?

 

 

http://www.labbookpages.co.uk/audio/beamfo...ionalDelay.html

Пример, после которого я решил заменить фильтр из статьи ( https://drive.google.com/file/d/0B-a0qo3gvn...1eTA/view?pli=1 ) на фильтр sinc.

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


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

Посмотрел по-быстрому статью. Схема корректировки содержит два фильтра, которые фильтруют "эффекты", вносимые SHA, и уничтожают(eliminate) мнимые компоненты. Результаты корректировки в статье отличные. Пики на уровне - 90dB, что мне и нужно. Но я не могу использовать SHA. Его попросту нет. У меня есть две АЦП в устройстве и ПЛИС, которая и будет выполнять цифровую корректировку на заднем плане (digital background calibration) Если я сказал что-то не так по поводу "вашей" статьи, то, пожалуйста, поправьте.

Вам не нужен никакой SHA(он внутри АЦП). А я так и делал: два АЦП+FPGA. После калибровки проверял в диапазоне температур - полёт нормальный.

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


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

Вам не нужен никакой SHA(он внутри АЦП). А я так и делал: два АЦП+FPGA. После калибровки проверял в дипазоне температур - полёт нормальный.

Хорошо, попробую. Спасибо за статью! Я ее до этого видел, вроде бы, но из-за моего незнания отбросил.

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


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

Хорошо, попробую. Спасибо за статью! Я ее до этого видел, вроде бы, но из-за моего незнания отбросил.

Кстати я обошёлся одним фильтром,а не двумя.

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


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

В первом сообщение я спрашивал о "физике" процесса корректировки фильтром. Фильтр sinc компенсирует фазовое отклонение сигнала.

Пускай отсчеты идеального сигнала приходят раньше, чем надо. Фильтром sinc мы их пересчитываем на те значение, которые должны были быть. Создаем задержку. Для идеального сигнала мы ее знаем. Тогда почему после Fs/4 такой косяк со знаком возникает?

помимо фазы есть еще амплитуда, почему бы просто не построить АЧХ и ФЧХ обоих каналов независимо, взять разницу и по получившимся разностных характеристикам построить подходящий фильтр.

 

но для начала попробуйте просто убрать ошибки усиления и смещения просто по DC, а для сдвига фазы одному каналу добавте интерполятор, для начала линейный, не хватит - http://www.dsplib.ru/content/farrow/farrow.html

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


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

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

При моделировании фильтров F1 и F2, по формулам из статьи, с частотой дискретизации = 206438400, тау1 = 1.001*10^(-9), тау2 = 1.003*10^(-9), где тау1 и тау2 - постоянные времени RC-цепочек, получил график АЧХ, похожий на график АЧХ в статье. Синий - F1. Зеленый - F2.

image.png

Эти фильтры зависят, по-сути, только от этих тау. Как узнать их для реального устройства? Как Вы их узнавали? Каким-то детектором?

И еще один вопрос. Для замены двух фильтров одним необходимо поделить F2(w) на F1(w)?

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


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

Вот модуль коэффициента передачи моего корректирующего фильтра в полосе 500МГц.

 

Как Вы их узнавали? Каким-то детектором?

Нет,просто набирал отсчёты с каждого АЦП подавая на вход сетку частот контрольного сигнала. Отсчёты скармливал в матлаб,он мне выдавал нужную ИХ корректора. В статье есть все необходимые формулы.

Для замены двух фильтров одним необходимо поделить F2(w) на F1(w)?

Да,именно так я и сделал.

 

Кстати,могу показать сигнал на выходе корректора.

post-18832-1448519748_thumb.png

post-18832-1448530972_thumb.png

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


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

При корректирующей фильтрации канала, интерполированного нулями в два раза, происходит корректировка не только полезного сигнала, но и его "копии".

Т.к. мы эту "копию" откорректировали, то она появилась на выходе.

Как это надо учесть при расчете фильтров(а)?

По формулам из статьи, предоставленной пользователем _Anatoliy, я так до конца и не уяснил метод корректировки, а точнее, его реализацию.

 

Corr_Block1.jpg

 

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


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

Т.к. мы эту "копию" откорректировали, то она появилась на выходе.

Как это надо учесть при расчете фильтров(а)?

Никак не учитывать. Не забывайте что при откорректированном основном сигнале образ интерливинга будет уничтожен.

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


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

Никак не учитывать. Не забывайте что при откорректированном основном сигнале образ интерливинга будет уничтожен.

Если я корректирую канал фильтром от 0 до Fs/4, где Fs - результирующая частота дискретизации двух АЦП, то сигналы, поступающие от 0 до Fs/4 корректируются.

Но при использовании апсамплинга и фильтра от 0 до Fs/2 сигнал не корректируется. Они не корректируются потому что при апсамплинге возникает копия спектра.

UPSAMPLING.jpg

Если задавать АЧХ и ФЧХ по значениям для конкретной частоты, то мы можем корректировать эту частоту.

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


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

Если я корректирую канал фильтром от 0 до Fs/4, где Fs - результирующая частота дискретизации двух АЦП, то сигналы, поступающие от 0 до Fs/4 корректируются.

Но при использовании апсамплинга и фильтра от 0 до Fs/2 сигнал не корректируется. Они не корректируются потому что при апсамплинге возникает копия спектра.

Если задавать АЧХ и ФЧХ по значениям для конкретной частоты, то мы можем корректировать эту частоту.

Что то делаете не так. На моей картинке видно что образ надёжно сидит в шумах. А сколько тапов у вашего корректирующего фильтра?

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


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

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

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

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

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

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

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

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

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

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