Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Корректор АЧХ в широкой полосе
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
_Anatoliy
Вошёл в ступор на следующей задаче.Есть АЦП с тактовой Fs,на его вход подаётся сигнал (например синус) на любой частоте в полосе от 0.05*Fs до 0,95*Fs (сигнал может быть как в первой так и во второй зонах Найквиста).В выходном сигнале наблюдается небольшая неравномерность АЧХ,причём она несимметрична относительно частоты Fs/2.Существует ли какой нибудь способ откорректировать АЧХ в заданной полосе частот с помощью фильтрации выходных данных? Если бы сигнал был в полосе хотя бы 0.05*Fs до 0,45*Fs, то задача решилась бы банальным корректирующим КИХ фильтром. А тут как быть?
Fat Robot
Если сигнал узкополосный (в частности, гармонический) и стационарный, то по косвенным признакам определять центральную частоту во всем диапазоне и в зависимости от этого корректировать амплитуду.

Вариант косвенного признака: куда сдвинется спектральный максимум при изменении Fs
andyp
Цитата(_Anatoliy @ Oct 12 2013, 15:59) *
Вошёл в ступор на следующей задаче.Есть АЦП с тактовой Fs,на его вход подаётся сигнал (например синус) на любой частоте в полосе от 0.05*Fs до 0,95*Fs (сигнал может быть как в первой так и во второй зонах Найквиста).В выходном сигнале наблюдается небольшая неравномерность АЧХ,причём она несимметрична относительно частоты Fs/2.Существует ли какой нибудь способ откорректировать АЧХ в заданной полосе частот с помощью фильтрации выходных данных? Если бы сигнал был в полосе хотя бы 0.05*Fs до 0,45*Fs, то задача решилась бы банальным корректирующим фильтром. А тут как быть?


Предполагаю, что сигнал комплексный. Тогда синтезируете фильтр с комплексными коэффициентами любым методом, позволяющим синтезировать произвольную АЧХ и вперед. Если сигнал не комплексный, то нельзя разобраться из какой он зоны найквиста (вспоминаем стробоскоп) и вопрос не имеет смысла. У фильтра с вещественными коэффициентами АЧХ всегда симметрична относительно Fs/2.

Причина Вашей ассиметричности - нечто перед АЦП.
Dr.Alex
Цитата(andyp @ Oct 12 2013, 16:00) *
Причина Вашей ассиметричности - нечто перед АЦП.


А что такое "ассиметричность", можно узнать?

И вообще, у любого реального АЦП АЧХ в разных "зонах Найквиста" различается, что в общем-то очевидно.
andyp
Цитата(Dr.Alex @ Oct 12 2013, 19:37) *
А что такое "ассиметричность", можно узнать?

И вообще, у любого реального АЦП АЧХ в разных "зонах Найквиста" различается, что в общем-то очевидно.


Читаем исходный пост - "В выходном сигнале наблюдается небольшая неравномерность АЧХ,причём она несимметрична относительно частоты Fs/2". При прочих равных я бы предположил влияние входного фильтра перед АЦП.
Dr.Alex
Цитата(andyp @ Oct 12 2013, 18:43) *
Читаем исходный пост - "В выходном сигнале наблюдается небольшая неравномерность АЧХ,причём она несимметрична относительно частоты Fs/2".


И что? :-))) Это типа ответ на какой-то вопрос? На какой?
andyp
Цитата(Dr.Alex @ Oct 12 2013, 19:49) *
И что? :-))) Это типа ответ на какой-то вопрос? На какой?


А был еще вопрос, кроме вопроса в исходном посте?
Dr.Alex
Цитата(andyp @ Oct 12 2013, 18:52) *
А был еще вопрос, кроме вопроса в исходном посте?


Да, например, "что такое "ассиметричность"? :-))))
andyp
Цитата(Dr.Alex @ Oct 12 2013, 19:53) *
Да, например, "что такое "ассиметричность"? :-))))


асимметричность - это то же самое что и "несимметричность" из исходного сообщения
Dr.Alex
Цитата(andyp @ Oct 12 2013, 18:55) *
асимметричность - это то же самое что и "несимметричность" из исходного сообщения


Опять вы отвечаете на вопрос, который никто не задавал.. :-)))

Топикстартер не спрашивал, откуда у него асимметричность, он спрашивал "как быть".

А я не спрашивал, что такое "асимметричность". Я спросил, что такое "ассиметричность".
andyp
Цитата(Dr.Alex @ Oct 12 2013, 19:57) *
Опять вы отвечаете на вопрос, который никто не задавал.. :-)))

Топикстартер не спрашивал, откуда у него асимметричность, он спрашивал "как быть".

А я не спрашивал, что такое "асимметричность". Я спросил, что такое "ассиметричность".


вы победили. быть никак.
Dr.Alex
Раскланялсо и побрёл в фитнесс-клуб.. :-о
ViKo
Цитата(_Anatoliy @ Oct 12 2013, 14:59) *
Если бы сигнал был в полосе хотя бы 0.05*Fs до 0,45*Fs, то задача решилась бы банальным корректирующим фильтром.

А как работает банальный корректирующий фильтр?
Подали сигнал 0.2Fs, получили какое-то значение, потом что-то делается, чтобы подогнать под нужное.
Подали сигнал 0.8Fs, получили какое-то значение... А-а, "что-то делается" уже после АЦП, в цифровом виде? Тогда никак. Вот если бы до АЦП корректировать...
Myron
Цитата(Dr.Alex @ Oct 12 2013, 11:06) *
Раскланялсо и побрёл в фитнесс-клуб.. :-о

А что такое "Раскланялсо", можно узнать?
_Anatoliy
Цитата(ViKo @ Oct 12 2013, 19:09) *
А как работает банальный корректирующий фильтр?
Подали сигнал 0.2Fs, получили какое-то значение, потом что-то делается, чтобы подогнать под нужное.
Подали сигнал 0.8Fs, получили какое-то значение... А-а, "что-то делается" уже после АЦП, в цифровом виде? Тогда никак. Вот если бы до АЦП корректировать...

Да,корректировать лучше после АЦП,потому что нужно подкорректировать АЧХ на малые доли децибела и по заданному закону,до АЦП этого не сделать.Похоже я изначально немного не так поставил вопрос : нужно минимизировать технологический разброс АЧХ двух реальных АЦП.Измеренная величина разброса имеет максимальное значение 0,2дБ,минимальное - 0,05дБ.Но суть от этого не меняется.
Цитата(ViKo @ Oct 12 2013, 19:09) *
Тогда никак.

Способ должен быть,ведь как-то же это делают.

Цитата(Fat Robot @ Oct 12 2013, 15:52) *
Если сигнал узкополосный (в частности, гармонический) и стационарный, то по косвенным признакам определять центральную частоту во всем диапазоне и в зависимости от этого корректировать амплитуду.
Вариант косвенного признака: куда сдвинется спектральный максимум при изменении Fs

Спасибо,вариант интересный,но у меня не выполняется второе ваше условие,и очень сильно.
Но мне что-то подсказывает что он вообще не будет работать.

Похоже на частоте Fs эту задачу не решить в принципе.Вот если бы интерполировать поток на частоту 2*Fs,отфильтровать,а затем продецимировать в 2 раза то задача была бы решена.Но тогда вопрос - как правильно интерполировать.Ответ - никак не удастся.
Второй вариант - объединить потоки с двух АЦП в один поток,тогда проблема с образом уйдёт,но совершенно не ясно как выполнять коррекцию,ведь отсчёты нужно фильтровать только от одного АЦП,т.е. через один.
ivan219
Подаете на вход двух АЦП ЛЧМ сигнал, размерность в N гармоник зависит от порядка желаемого фильтра. Потом делите один сигнал на другой, накладываете окно и получаете ваш фильтр.
_Anatoliy
Цитата(ivan219 @ Oct 12 2013, 21:43) *
Подаете на вход двух АЦП ЛЧМ сигнал, размерность в N гармоник зависит от порядка желаемого фильтра. Потом делите один сигнал на другой, накладываете окно и получаете ваш фильтр.

И Вас не смущает что реальный фильтр должен иметь АЧХ несимметричную относительно Fs/2?
ivan219
Я отталкивался от этих слов.
Цитата(_Anatoliy @ Oct 12 2013, 21:15) *
Похоже я изначально немного не так поставил вопрос : нужно минимизировать технологический разброс АЧХ двух реальных АЦП.Измеренная величина разброса имеет максимальное значение 0,2дБ,минимальное - 0,05дБ.Но суть от этого не меняется.

Если надо выровнять выходы двух АЦП относительно друг друга, то мой метод подойдет.
Просто полученный фильтр делим на два фильтр, для первого и второго АЦП.
_Anatoliy
Цитата(ivan219 @ Oct 13 2013, 11:09) *
Если надо выровнять выходы двух АЦП относительно друг друга, то мой метод подойдет.
Просто полученный фильтр делим на два фильтр, для первого и второго АЦП.

Значит не смущает.Тогда раскройте,плз,Ваш метод подробней.Про ЛЧМ не нужно,допустим мы уже знаем нужную АЧХ корректирующего фильтра в полосе от 0.05*Fs до 0,95*Fs. А фильтра вполне хватит одного, достаточно АЧХ второго АЦП сделать подобным АЧХ первого АЦП,ведь основная проблема - разброс АЧХ.
Corner
По ходу проблема в квадратурном АЦП...
_Anatoliy
Цитата(Corner @ Oct 13 2013, 16:18) *
По ходу проблема в квадратурном АЦП...

Дык нету его,только два реальных с общим входом...
ivan219
Цитата(_Anatoliy @ Oct 13 2013, 17:06) *
Тогда раскройте,плз,Ваш метод подробней.

1) Подаём ЛЧМ сигнал с ЦАП, тарируемого с одного кварца, как и АЦП на вход двух АЦП. Можно и белый шум он да же лучше будет вот только для ваших требований в 0.05 дБ накапливать и усреднять долго придётся. А с ЛЧМ придется самому еще два коэфицента после БПФ подстроить это на 0 и на Fs/2 у ЛЧМ их нет. Без них АЧХ будет уметь сильные провалы по бокам. Конечно же шум в этом палне более уневерсален.
2) Делаем БПФ двух сигналов. Для шума размерность БПФ должна быть в 2 раза больше.
3) Делим спектры этих сигналов. Своего рода корреляция двух сигналов с коэффициентом.
4) Переводим во временную область.
5) Накладываем окно. Тут уже надо подбирать.
6) Делаем БПФ размером в несколько раз больше чем порядок фильтра смотрим на АЧХ.


Цитата(_Anatoliy @ Oct 13 2013, 17:06) *
от 0.05*Fs до 0,95*Fs.

А вот для этого нужно делать несколько фильтров. Для разных зон Найквиста.
Да и вообще этот метод подойдет только для двух отдельно взятых АЦП.
Универсальности не добиться.


Цитата(_Anatoliy @ Oct 13 2013, 18:17) *
Дык нету его,только два реальных с общим входом...

Я так понимаю что вы двумя АЦП одновременно хотите видеть две зона Найквиста???
Тогда возникнет проблема.
_Anatoliy
Цитата(ivan219 @ Oct 14 2013, 08:34) *
А вот для этого нужно делать несколько фильтров. Для разных зон Найквиста.

И для данного сигнала использовать нужный?Интересно каким способом по выходным отсчётам АЦП вы думаете различить две ситуации - сигнал в первой зоне а образ во второй,или сигнал во второй а образ в первой?Это классика.


Цитата(ivan219 @ Oct 14 2013, 08:34) *
Я так понимаю что вы двумя АЦП одновременно хотите видеть две зона Найквиста???
Тогда возникнет проблема.

Ага,и не одна.
alex_os
Цитата(_Anatoliy @ Oct 12 2013, 15:59) *
.... Если бы сигнал был в полосе хотя бы 0.05*Fs до 0,45*Fs, то задача решилась бы банальным корректирующим КИХ фильтром. А тут как быть?



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




_Anatoliy
Цитата(alex_os @ Oct 14 2013, 11:07) *
Нужно калибровать всю систему из двух АЦП в целом. Вроде в канале каждого АЦП по FIR фильтру. Подаете какой- либо сигнал сосредоточенный в 1ой зоне Найквиста и подстраиваете фильтры так , что бы минимизировать пролезание во вторую зону и т.д.

Т.е. каждый фильтр работает на частоте Fs ADC?Согласен,таким образом удастся скомпенсировать разброс АЧХ в для сигнала в первой зоне.А если на входе будет сигнал во второй зоне?А если будет сразу два сигнала,один в первой зоне а второй во второй зоне?
Разброс АЧХ известен,можно сразу посчитать нужную ИХ.
Fat Robot
В книгах-то чего пишут по этому поводу?

Цитата(_Anatoliy @ Oct 14 2013, 11:18) *
А если на входе будет сигнал во второй зоне?А если будет сразу два сигнала,один в первой зоне а второй во второй зоне?

_Anatoliy
Цитата(Fat Robot @ Oct 14 2013, 11:39) *
В книгах-то чего пишут по этому поводу?

Да мутно всё как-то. Я так понимаю что Frequency Response Mismatches in a Two-Channel Time-Interleaved ADC это как раз по моему вопросу.
Fat Robot
Ну так вот и делайте, как написано: один ацп принимаете за опорный, отсчеты от другого прорускаете через адаптивный фильтр, который
подстраиваете по разности.
_Anatoliy
Цитата(Fat Robot @ Oct 14 2013, 11:49) *
Ну так вот и делайте, как написано: один ацп принимаете за опорный, отсчеты от другого прорускаете через адаптивный фильтр, который
подстраиваете по разности.

А где это написано?Может у меня уже глаз замылился?На фигуре 5 вроде общий поток с двух АЦП показан.
И калибрующий сигнал они подают только в первой зоне почему-то.
andyp
Если у Вас
а) 2 ADC используются как time-interleaved для формирования одного потока
б) Вы точно знаете Frequency Response (амплитуды и фазы) в каждом канале,

то адаптивный фильтр не обязателен (он подстраивает коэффициенты корректора пользуясь дыркой в спектре, где присутствует только сигнал ошибки, вызванный алиасингом). В Вашей статье есть ссылка на статью тех же авторов (reference 43), где просто рассмотрено построение корректирующей цепочки.
_Anatoliy
Цитата(andyp @ Oct 14 2013, 12:54) *

О,спасибо!Почитаю ещё этот документ.
Насчёт фаз не уверен,поэтому предполагал сначала сделать адаптивный фильтр и когда он настроится на тестовый сигнал использовать его ИХ для обработки штатного входного сигнала.
andyp
Ну у авторов на картинках все даже сходится. Может и прокатит. По вычислениям на отсчет - будет дорого. (M+1 ФВЧ кроме всего остального). Да и судя по статье требуется ~1e6 отсчетов чтобы алгоритм сбежался.
_Anatoliy
Цитата(andyp @ Oct 14 2013, 13:45) *
Ну у авторов на картинках все даже сходится. Может и прокатит. По вычислениям на отсчет - будет дорого. (M+1 ФВЧ кроме всего остального). Да и судя по статье требуется ~1e6 отсчетов чтобы алгоритм сбежался.

Угу,спасибо,сяду за модельку.
_Anatoliy
Не работает эта штука.Сделал по рисунку 7.
Т.е. как-то работает,если у АЦП есть разброс по К одинаковый во всей полосе,то да - алгоритм сходится и спектр на выходе становится чистым. А вот если разброс по К неодинаковый в полосе то спектр не очищается.И почему-то работает только y0 (y1,y2,y3 практически к нулю стягиваются).
Дмитрий_Б
Попытка вытащить себя за волосы из болота никому, кроме известного барона, не удавалась.
Теорема Котельникова (или, если угодно, теорема отсчётов) утверждает, что различить можно только частоты в диапазоне от 0 до Fs/2.
andyp
Цитата(_Anatoliy @ Oct 14 2013, 18:31) *
Не работает эта штука.Сделал по рисунку 7.
Т.е. как-то работает,если у АЦП есть разброс по К одинаковый во всей полосе,то да - алгоритм сходится и спектр на выходе становится чистым. А вот если разброс по К неодинаковый в полосе то спектр не очищается.И почему-то работает только y0 (y1,y2,y3 практически к нулю стягиваются).


можно попробовать задать квадратичное рассогласование ЧХ, подставить вместо результатов адаптации известные коэффициенты и посмотреть, уйдет ли помеха. Поможет найти глюки в реализации, если они есть. При беглом просмотре статья производила впечатление настоящей :-). Лучше на многотоновом сигнале смотреть с частотами, не кратными частоте дискретизации. Сразу будет видно, ушел ли алиасинг или остался.
Anatol'
Насколько я понимаю, можно интерполировать данные с каждого АЦП отдельно фильтром с нужной АЧХ, а потом сложить не ошибившись с разницей во времени. Если разброс характеристик АЦП компенсирован правильно, то настоящий сигнал сложится, а "фальшивый" (Fs - F) сложится в противофазе и исчезнет. При чём независимо от того, в первой он зоне найквиста был, или во второй, всё восстановится правильно. Подозреваю, что для случая >2 АЦП это тоже должно работать.

Только надо не забыть, что компенсировать надо не только АЧХ, но и ФЧХ (вариацию aperture delay - от экземпляра к экземпляру АЦП она может различаться на 20..50..100..чёрт-знает-сколько пс). Любое расхождение даст неполную компенсацию и остатки фантомных частот на Fs-F.

Ещё может вылезти фантомная Fs/2 (для двух АЦП) из-за разницы нуля.

И самое трагичное - есть сильное подозрение, что весь этот огород ощутимо плавает с температурой, и калиброваться надо отдельно по всему диапазону рабочих. В датащитах температурных коэффициентов не пишут.
Кстати, если будете проверять это утверждение, буду рад, если поделитесь любой информацией - мне эта радость скорее всего предстоит в обозримом будущем.
andyp
Цитата(Anatol' @ Oct 17 2013, 08:31) *
Кстати, если будете проверять это утверждение, буду рад, если поделитесь любой информацией - мне эта радость скорее всего предстоит в обозримом будущем.


попробую слепить что-то простенькое в октаве если время найдется.
_Anatoliy
Цитата(Anatol' @ Oct 17 2013, 07:31) *
Насколько я понимаю, можно интерполировать данные с каждого АЦП отдельно фильтром с нужной АЧХ, а потом сложить не ошибившись с разницей во времени. Если разброс характеристик АЦП компенсирован правильно, то настоящий сигнал сложится, а "фальшивый" (Fs - F) сложится в противофазе и исчезнет. При чём независимо от того, в первой он зоне найквиста был, или во второй, всё восстановится правильно. Подозреваю, что для случая >2 АЦП это тоже должно работать.

Вот здесь рассматривается этот случай.Да,тут комплексный фильтр нужен.
Anatol'
Цитата(_Anatoliy @ Oct 17 2013, 16:19) *
Вот здесь рассматривается этот случай.Да,тут комплексный фильтр нужен.

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

Цитата(andyp @ Oct 17 2013, 14:53) *
попробую слепить что-то простенькое в октаве если время найдется.

Не, численно там всё и так понятно, хотя за порыв спасибо )
(если я правильно понял, что имеется в виду GNU Octave)
Мне гораздо больше интересны вариации параметров с температурой. Хотя я и так почти уверен, что они плывут сильно.
_Anatoliy
Цитата(Anatol' @ Oct 18 2013, 04:32) *
Комплексный не обязательно - можно два действительных для уже повышенной частоты дискретизации. Я проверял на модельных сигналах. Точнее, даже один, если эти два сложить.
Про комплексные фильтры была мысль, но с ходу довести её до рабочей не удалось. Статью посмотрю, спасибо.

Странно,формула 8 в документе выше описывает передаточную функцию УВХ для разных тау,фазовая характеристика у неё нелинейная.И для расчёта фильтров используются комплексные данные.
Насчёт температурной стабильности цифр у меня нет,но мне приходилось работать с платой от Acquitek с подобным алгоритмом,в диапазоне температур окружающей среды +10...+50 градусов образы интерливинга я не видел.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.