|
Корректировка мультиплексированных АЦП |
|
|
|
Nov 17 2015, 04:28
|
Группа: Участник
Сообщений: 10
Регистрация: 20-08-15
Пользователь №: 88 064

|
Здравствуйте. Для повышения частоты дискретизации с наименьшими затратами используют простой способ - параллельное включение 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 - Nov 17 2015, 04:31
|
|
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 21)
|
Nov 17 2015, 04:39
|
Профессионал
    
Группа: Свой
Сообщений: 1 849
Регистрация: 6-02-05
Пользователь №: 2 451

|
Цитата(akrabad @ Nov 16 2015, 22:28)  Здравствуйте. Для повышения частоты дискретизации с наименьшими затратами используют простой способ - параллельное включение 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. Объясните пожалуйста, в чем проблема. И как это можно исправить. Информацию о методах корректировок беру из статей на английском, ибо наши об этом почти не пишут. Приведите, пожалуйста, ссылки на статьи (или сами статьи).
|
|
|
|
|
Nov 17 2015, 07:22
|
Группа: Участник
Сообщений: 10
Регистрация: 20-08-15
Пользователь №: 88 064

|
Цитата(_Anatoliy @ Nov 17 2015, 13:40)  Поигрался в своё время с первой статьёй,потом понял что зря время теряю,и именно по этой причине для разных частот нужны разные иксы. В итоге сделал корректор по прилагаемой статье,результат превзошёл самые смелые ожидания. Посмотрел по-быстрому статью. Схема корректировки содержит два фильтра, которые фильтруют "эффекты", вносимые 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.
|
|
|
|
|
Nov 17 2015, 07:42
|

Утомлённый солнцем
     
Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832

|
Цитата(akrabad @ Nov 17 2015, 10:22)  Посмотрел по-быстрому статью. Схема корректировки содержит два фильтра, которые фильтруют "эффекты", вносимые SHA, и уничтожают(eliminate) мнимые компоненты. Результаты корректировки в статье отличные. Пики на уровне - 90dB, что мне и нужно. Но я не могу использовать SHA. Его попросту нет. У меня есть две АЦП в устройстве и ПЛИС, которая и будет выполнять цифровую корректировку на заднем плане (digital background calibration) Если я сказал что-то не так по поводу "вашей" статьи, то, пожалуйста, поправьте. Вам не нужен никакой SHA(он внутри АЦП). А я так и делал: два АЦП+FPGA. После калибровки проверял в диапазоне температур - полёт нормальный.
|
|
|
|
|
Nov 17 2015, 07:46
|
Группа: Участник
Сообщений: 10
Регистрация: 20-08-15
Пользователь №: 88 064

|
Цитата(_Anatoliy @ Nov 17 2015, 14:42)  Вам не нужен никакой SHA(он внутри АЦП). А я так и делал: два АЦП+FPGA. После калибровки проверял в дипазоне температур - полёт нормальный. Хорошо, попробую. Спасибо за статью! Я ее до этого видел, вроде бы, но из-за моего незнания отбросил.
|
|
|
|
|
Nov 24 2015, 09:33
|
Группа: Участник
Сообщений: 10
Регистрация: 20-08-15
Пользователь №: 88 064

|
Цитата(_Anatoliy @ Nov 17 2015, 13:40)  Поигрался в своё время с первой статьёй,потом понял что зря время теряю,и именно по этой причине для разных частот нужны разные иксы. В итоге сделал корректор по прилагаемой статье,результат превзошёл самые смелые ожидания. При моделировании фильтров F1 и F2, по формулам из статьи, с частотой дискретизации = 206438400, тау1 = 1.001*10^(-9), тау2 = 1.003*10^(-9), где тау1 и тау2 - постоянные времени RC-цепочек, получил график АЧХ, похожий на график АЧХ в статье. Синий - F1. Зеленый - F2.  Эти фильтры зависят, по-сути, только от этих тау. Как узнать их для реального устройства? Как Вы их узнавали? Каким-то детектором? И еще один вопрос. Для замены двух фильтров одним необходимо поделить F2(w) на F1(w)?
|
|
|
|
|
Nov 26 2015, 06:35
|

Утомлённый солнцем
     
Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832

|
Вот модуль коэффициента передачи моего корректирующего фильтра в полосе 500МГц. Цитата(akrabad @ Nov 24 2015, 12:33)  Как Вы их узнавали? Каким-то детектором? Нет,просто набирал отсчёты с каждого АЦП подавая на вход сетку частот контрольного сигнала. Отсчёты скармливал в матлаб,он мне выдавал нужную ИХ корректора. В статье есть все необходимые формулы. Цитата(akrabad @ Nov 24 2015, 12:33)  Для замены двух фильтров одним необходимо поделить F2(w) на F1(w)? Да,именно так я и сделал. Кстати,могу показать сигнал на выходе корректора.
Эскизы прикрепленных изображений
|
|
|
|
|
Dec 23 2015, 10:56
|
Группа: Участник
Сообщений: 10
Регистрация: 20-08-15
Пользователь №: 88 064

|
При корректирующей фильтрации канала, интерполированного нулями в два раза, происходит корректировка не только полезного сигнала, но и его "копии". Т.к. мы эту "копию" откорректировали, то она появилась на выходе. Как это надо учесть при расчете фильтров(а)? По формулам из статьи, предоставленной пользователем _Anatoliy, я так до конца и не уяснил метод корректировки, а точнее, его реализацию.
|
|
|
|
|
Dec 23 2015, 12:25
|
Группа: Участник
Сообщений: 10
Регистрация: 20-08-15
Пользователь №: 88 064

|
Цитата(_Anatoliy @ Dec 23 2015, 18:59)  Никак не учитывать. Не забывайте что при откорректированном основном сигнале образ интерливинга будет уничтожен. Если я корректирую канал фильтром от 0 до Fs/4, где Fs - результирующая частота дискретизации двух АЦП, то сигналы, поступающие от 0 до Fs/4 корректируются. Но при использовании апсамплинга и фильтра от 0 до Fs/2 сигнал не корректируется. Они не корректируются потому что при апсамплинге возникает копия спектра.  Если задавать АЧХ и ФЧХ по значениям для конкретной частоты, то мы можем корректировать эту частоту.
|
|
|
|
|
Dec 23 2015, 12:41
|
Группа: Участник
Сообщений: 10
Регистрация: 20-08-15
Пользователь №: 88 064

|
Цитата(_Anatoliy @ Dec 23 2015, 19:31)  Что то делаете не так. На моей картинке видно что образ надёжно сидит в шумах. А сколько тапов у вашего корректирующего фильтра? Количество тапов = 1025. F1 - задерживающий фильтр. F2 - фильтр, полученный обратным преобразование фурье по необходимой АЧХ и ФЧХ + окно Ханна.
|
|
|
|
|
Dec 23 2015, 13:27
|
Группа: Участник
Сообщений: 10
Регистрация: 20-08-15
Пользователь №: 88 064

|
Цитата(_Anatoliy @ Dec 23 2015, 20:01)  Офигеть! У меня всего 62 тапа. И никаких окон не нужно - они только мешают. А сколько точек FFT?А сколько точек IFFT? А сколько эталонных частот подавали для калибровки? Что вы подразумеваете под эталонными частотами? А для чего вы использовали FFT в алгоритме получения фильтра? - Подал 14 частот на АЦП;
- По этим сигналам получил 14 значений для разностных АЧХ и ФЧХ для фильтра F2;
- Произвел интерполяцию;
- Получил 1025 значений АЧХ и ФЧХ(теперь буду меньше);
- Задал комплексный коэффициент передачи;
- Выполнил IFFT и получил 1025 значений фильтра.
Сообщение отредактировал akrabad - Dec 23 2015, 13:31
|
|
|
|
|
Dec 24 2015, 07:14
|

Утомлённый солнцем
     
Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832

|
Цитата(akrabad @ Dec 23 2015, 16:27)  Что вы подразумеваете под эталонными частотами? А для чего вы использовали FFT в алгоритме получения фильтра? 1.Подал 14 частот на АЦП; 2.По этим сигналам получил 14 значений для разностных АЧХ и ФЧХ для фильтра F2; 3.Произвел интерполяцию; 4.Получил 1025 значений АЧХ и ФЧХ(теперь буду меньше); 5.Задал комплексный коэффициент передачи; 6.Выполнил IFFT и получил 1025 значений фильтра. Я не так делал. 1. Подаю 30 частот,можно не все сразу,а по одному сигналу. Частоты считаю так: Код fs=550;%Fs one ADC Nfreq = 32; Nfft = Nfreq-1; TableFreq = fs*(1:Nfft-1)/Nfft; 2). Выполняю FFT размерностью Nfft для каждого АЦП.Результат G1 и G2. 3). Считаю результирующий фильтр и добавляю значения нулевой частоты и fs Код F0(i) = conj(G1(ind)) ./ conj(G2(ind)); F0 = [1.04 F0 1.008];%% 4). Преобразую результат Код N = length(F0); nF0 = [F0(1:N) conj(F0(N-1:-1:2))].'; nF0([1 N]) = real(nF0([1 N])); 5). Выполняю IFFT размерностью 62 точки 6). Нормирую полученную ИХ. 7). Прошиваю в FPGA и любуюсь результатом.
|
|
|
|
|
Jan 12 2016, 06:48
|
Группа: Участник
Сообщений: 10
Регистрация: 20-08-15
Пользователь №: 88 064

|
Цитата(_Anatoliy @ Dec 24 2015, 14:14)  2). Выполняю FFT размерностью Nfft для каждого АЦП.Результат G1 и G2. 3). Считаю результирующий фильтр и добавляю значения нулевой частоты и fs Я получаю G1 и G2 вот так Код for iter = 1:1:Nfreq-2 %Цикл по всем сигналам Temp = fft(ch_1, Nfft); %fft первой АЦП G1(iter) = Temp(iter+1); %G1 - 1x34 % Temp - 1x35 Temp = fft(ch_2, Nfft); %fft второй АЦП G2(iter) = Temp(iter+1); end F0 = conj(G1) ./ conj(G2);% По формуле нам надо только(-ws/2 + w) Правильно ли? Цитата(_Anatoliy @ Dec 24 2015, 14:14)  6). Нормирую полученную ИХ. Под нормированием вы подразумеваете только приведение суммы коэфф. к 1? После ifft ИХ выглядит так. "Сдвигали" ли вы ее?
Сообщение отредактировал akrabad - Jan 12 2016, 13:59
|
|
|
|
|
Jan 13 2016, 11:47
|

Утомлённый солнцем
     
Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832

|
Цитата(akrabad @ Jan 12 2016, 09:48)  Я получаю G1 и G2 вот так Код for iter = 1:1:Nfreq-2 %Цикл по всем сигналам Temp = fft(ch_1, Nfft); %fft первой АЦП G1(iter) = Temp(iter+1); %G1 - 1x34 % Temp - 1x35 Temp = fft(ch_2, Nfft); %fft второй АЦП G2(iter) = Temp(iter+1); end F0 = conj(G1) ./ conj(G2);% По формуле нам надо только(-ws/2 + w) Правильно ли? Под нормированием вы подразумеваете только приведение суммы коэфф. к 1? После ifft ИХ выглядит так. "Сдвигали" ли вы ее?  1).Я получаю G1 и G2 вот так Код for i=1:Nfft-1 NumBin = i+1; sp = fft(squeeze(sg(1,i,:)))/(Nfft/2); G1(i) = sp(NumBin); sp = fft(squeeze(sg(2,i,:)))/(Nfft/2); stem(abs(sp)); m = abs(sp(NumBin)); a = angle(sp(NumBin)) - pi*TableFreq(i)/fs; G2(i) = m.*exp(1i*a); end; Тактовый сигнал для второго АЦП сдвинут на pi, это нужно учесть. 2). Как считается F0 я приводил. 3). Да 4). Конечно сдвигал.
|
|
|
|
|
Nov 16 2016, 19:35
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Читаю эту тему. Всплыло несколько вопросов. 1. Фильтры, что здесь обсуждаются, корректируют смещение выходов АЦП одного относительно другого? Например, постоянно один АЦП выдает значения на несколько единиц меньше другого. Если фильтр FIR умножает выборки на коэффициенты, как он сможет добавить постоянное число? 2. Аналогичный вопрос по коррекции сдвига между АЦП. Если они работают не строго в противофазе, это скорректируется? 3. Если АЧХ фильтра есть ДПФ от импульсной характеристики, то почему сразу не вычислить коэффициенты фильтра, подав на входы АЦП импульс? Дальше, почему именно импульс, а не перепад? Все равно потом вычисляется отношение частотных характеристик. То есть, подал перепад, вычислил спектры, поделил. Вычислил ОДПФ, получил коэффициенты корректирующего фильтра. 4. Если у меня полоса АЦП в несколько раз больше полосы сигнала, и АЧХ в интересующем меня диапазоне, можно считать, идентичная, может, мне ограничиться тремя величинами: смещением, коэффициентом передачи, временнЫм сдвигом?
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|