реклама на сайте
подробности

 
 
> Реализация фильтра
_Anatoliy
сообщение Jun 18 2013, 05:13
Сообщение #1


Утомлённый солнцем
******

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



Всем доброго времени суток.Есть задача - сделать фильтр согласованный с входным сигналом.Входной сигнал представляет собой радиоимпульс ЛЧМ с полосой 300МГц и длительностью 25 мкс. При оцифровке сигнала,например,с частотой 1ГГц получается окно для фильтрации 25000 отсчётов.Ясно что такой фильтр ни в какую FPGA не поместится,это если делать в лоб,во времеННой области.Как делать в частотной области - вообще не понятно,ведь время прихода сигнала не известно.Может есть какие хитрые приёмы реализации подобных фильтров?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
petrov
сообщение Jun 18 2013, 07:09
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(_Anatoliy @ Jun 18 2013, 09:13) *
Как делать в частотной области - вообще не понятно,ведь время прихода сигнала не известно.


Чем не устраивает быстрая свёртка? Коэффициенты фильтра можно считать на лету.

Цитата(_Anatoliy @ Jun 18 2013, 09:13) *
Может есть какие хитрые приёмы реализации подобных фильтров?


Хитрые приёмы связаны с хитрыми CAZAC последовтаельностями, посмотрите последовательности Chu если так ЛЧМ хочется.
Для некоторых последовательностей согласованные фильтры очень простые, например Golay Complementary Sequences.
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Jun 18 2013, 09:21
Сообщение #3


Утомлённый солнцем
******

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



Цитата(petrov @ Jun 18 2013, 08:09) *
Чем не устраивает быстрая свёртка? Коэффициенты фильтра можно считать на лету.
Хитрые приёмы связаны с хитрыми CAZAC последовтаельностями, посмотрите последовательности Chu если так ЛЧМ хочется.
Для некоторых последовательностей согласованные фильтры очень простые, например Golay Complementary Sequences.

Спасибо за ответ,начал поиск литературы.

Как я понял - быстрая свёртка это и есть то что я назвал в топовом сообщении "в частотной области". А здесь мне не понятен один момент:для FFT я набираю массив данных длиной 2^N,но может статься что в этом массиве окажется например 30% импульса ЛЧМ,следующие 70% попадут уже в следующий набор данных.Это как то скажется на качестве корреляции?Мне сдаётся что вместо одного пика на выходе согласованного фильтра я получу два пика(для первого и второго набора данных).
Go to the top of the page
 
+Quote Post
alex_os
сообщение Jun 18 2013, 10:18
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030



Цитата(_Anatoliy @ Jun 18 2013, 13:21) *
Спасибо за ответ,начал поиск литературы.

Как я понял - быстрая свёртка это и есть то что я назвал в топовом сообщении "в частотной области". А здесь мне не понятен один момент:для FFT я набираю массив данных длиной 2^N,но может статься что в этом массиве окажется например 30% импульса ЛЧМ,следующие 70% попадут уже в следующий набор данных.Это как то скажется на качестве корреляции?Мне сдаётся что вместо одного пика на выходе согласованного фильтра я получу два пика(для первого и второго набора данных).


Нужно использовать результаты предидидущих блоков. Как вариант см. код ниже. Используется тот факт что свертка суммы последовательностей есть сумма сверток. Хорошо написано было про это кажется у Рабинера с Голдом.

Код
N = 13;
x = randn(1, 7*N);  % signal
h = randn(1,N);     % impulse response of a filter

yref = conv(x, h);

y = zeros(1, length(x)+length(h)-1);

% size of FFT is 2*N !!!
H = fft([h, zeros(1,N)]);
prev_hx = zeros(1, N-1);

for i=1:7
    
    X = fft([x((i-1)*N+1 : i*N), zeros(1,N)]);
    hx = ifft(H.*X);
    % прибавляем предидущий хвост
    hx(1:N-1) = hx(1:N-1) + prev_hx;
    prev_hx = hx(N+1:end-1);
    % запоминаем "хвост"  
    y((i-1)*N+1 : i*N) = hx(1:N);
end

figure(1);
% Результаты вычисленные двумя способами идентичны
plot(1:7*N, yref(1:7*N), 1:7*N, y(1:7*N))



--------------------
ну не художники мы...
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Jun 19 2013, 12:23
Сообщение #5


Утомлённый солнцем
******

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



Цитата(alex_os @ Jun 18 2013, 11:18) *
Нужно использовать результаты предидущих блоков. Как вариант см. код ниже. Используется тот факт что свертка суммы последовательностей есть сумма сверток. Хорошо написано было про это кажется у Рабинера с Голдом.

Проясните,пожалуйста,один вопрос. У Вас в скрипте используется цикл 1:7,для примера это очень подходит. Вопрос касается практической реализации - можно ли этот цикл сделать бесконечным? Не станет ли алгоритм неустойчивым в процессе длительной работы? Я имею ввиду накопление погрешности фиксированной точки при вычислениях. Или нужно применять какие-то меры?
Go to the top of the page
 
+Quote Post
alex_os
сообщение Jun 20 2013, 06:26
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030



Цитата(_Anatoliy @ Jun 19 2013, 16:23) *
Проясните,пожалуйста,один вопрос. У Вас в скрипте используется цикл 1:7,для примера это очень подходит. Вопрос касается практической реализации - можно ли этот цикл сделать бесконечным? Не станет ли алгоритм неустойчивым в процессе длительной работы? Я имею ввиду накопление погрешности фиксированной точки при вычислениях. Или нужно применять какие-то меры?


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


--------------------
ну не художники мы...
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Jun 20 2013, 08:17
Сообщение #7


Утомлённый солнцем
******

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



Цитата(alex_os @ Jun 20 2013, 07:26) *
Цикл может быть сколь угодно длинным. Накопление погрешности не происходит. Рекурсия отсутствует, т.е. выходной
блок данных зависит от входных отсчетов, но не зависит от предидущего выходного блока.

Спасибо!
Только всё равно пока не выходит каменный цветок.
1).Входной поток данных с АЦП равен 1GSPS.Понятно,что FFT на такой скорости я сделать не смогу.Если КИХ-фильтры легко распараллеливаются для снижения тактовой частоты,то как сделать такое распараллеливание для FFT я пока не представляю.
2).Допустим я нашёл метод распараллеливания FFT на два канала,тогда скорость работы каждого канала будет 500МГц. Думаю что для Виртекса это нормальная частота. Считаем дальше : длина ИХ составляет 25000 отсчётов,предполагаю(может ошибаюсь) что при распараллеливании FFT длина ИХ уменьшится вдвое,получаем 12500 отсчётов. Из приведенного Вами скрипта видно что размер FFT равен удвоенной длине ИХ,итого требуемый размер FFT составит 32768. FFT такого размера на частоте 500Мгц будет выполняться 132 мкс плюс IFFT , итого 264 мкс что больше требуемых 100 мкс.
Поправьте,плз,если где ошибся.
Go to the top of the page
 
+Quote Post
alex_os
сообщение Jun 20 2013, 08:30
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030



Цитата(_Anatoliy @ Jun 20 2013, 12:17) *
Спасибо!
Только всё равно пока не выходит каменный цветок.
1).Входной поток данных с АЦП равен 1GSPS.Понятно,что FFT на такой скорости я сделать не смогу.Если КИХ-фильтры легко распараллеливаются для снижения тактовой частоты,то как сделать такое распараллеливание для FFT я пока не представляю.


Так нужно сигнал снести в ноль (если еще не снесен) отфильтровать и децимировать раза в 2-3. Центральная частота ЛЧМ примерно известна?


--------------------
ну не художники мы...
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Jun 20 2013, 08:50
Сообщение #9


Утомлённый солнцем
******

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



Цитата(alex_os @ Jun 20 2013, 09:30) *
Так нужно сигнал снести в ноль (если еще не снесен) отфильтровать и децимировать раза в 2-3. Центральная частота ЛЧМ примерно известна?

Центральную частоту сигнала я могу сам выбирать.Сигнал широкополосный (примерно 350МГц), тактовая 1ГГЦ самое то. Правда есть вариант расщепить в аналоге на Real и Imag и применить двойной АЦП с тактовой 500МГц,но не уверен что в такой широкой полосе удасться получить малый разброс фазовых и амплитудных характеристик.

Вот я ступил sad.gif

Ведь если использовать один АЦП для реального сигнала, а в ПЛИС умножить его на комплексную экспоненту с нужной частотой (снести в ноль) то тогда действительно можно выполнить децимацию в два раза.Тогда вместо 264мкс получим 132мкс,возможно удастся договориться.
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Jun 20 2013, 13:46
Сообщение #10


Утомлённый солнцем
******

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



Цитата(_Anatoliy @ Jun 20 2013, 10:50) *
Ведь если использовать один АЦП для реального сигнала, а в ПЛИС умножить его на комплексную экспоненту с нужной частотой (снести в ноль) то тогда действительно можно выполнить децимацию в два раза.Тогда вместо 264мкс получим 132мкс,возможно удастся договориться.

Но распараллеливание FFT всё равно нужно,без него те же 264мкс и получаются.Кто нибудь знает как это делается? wacko.gif
Go to the top of the page
 
+Quote Post
petrov
сообщение Jun 20 2013, 13:55
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(_Anatoliy @ Jun 20 2013, 17:46) *
Но распараллеливание FFT всё равно нужно,без него те же 264мкс и получаются.Кто нибудь знает как это делается? wacko.gif


Бабочку можно сделать не только по основанию 2, но и 4,8,16... вплоть до однотактовой комбинационной схемы на весь блок.


Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- _Anatoliy   Реализация фильтра   Jun 18 2013, 05:13
- - Lmx2315   ..я может глупость скажу, но мне интересно - почем...   Jun 18 2013, 05:48
|- - _Anatoliy   Цитата(Lmx2315 @ Jun 18 2013, 06:48) ..я ...   Jun 18 2013, 06:12
|- - Maverick   Цитата(_Anatoliy @ Jun 18 2013, 09:12) В...   Jun 18 2013, 06:37
|- - _Anatoliy   Цитата(Maverick @ Jun 18 2013, 07:37) Воз...   Jun 18 2013, 06:54
|- - alex_os   Сигнал должен быть комплексным, оцифровываем на 30...   Jun 18 2013, 07:03
|- - alex_os   Цитата(petrov @ Jun 18 2013, 11:09) Хитры...   Jun 18 2013, 07:23
||- - petrov   Цитата(alex_os @ Jun 18 2013, 11:23) А ка...   Jun 18 2013, 07:31
|- - _Anatoliy   Цитата(alex_os @ Jun 18 2013, 11:18) Нужн...   Jun 18 2013, 10:31
||- - petrov   Цитата(_Anatoliy @ Jun 18 2013, 14:31) О,...   Jun 18 2013, 10:58
||- - _Anatoliy   Цитата(petrov @ Jun 18 2013, 11:58) Возмо...   Jun 18 2013, 11:37
|- - _Anatoliy   Цитата(petrov @ Jun 20 2013, 15:55) Бабоч...   Jun 20 2013, 14:02
|- - petrov   Ну а что такого написать FFT самому? Куда проще то...   Jun 20 2013, 14:12
|- - _Anatoliy   Цитата(petrov @ Jun 20 2013, 16:12) Ну а ...   Jun 20 2013, 14:16
- - thermit   Цитатаalex_os: А как обычный ЛЧM "натянуть...   Jun 18 2013, 07:48
- - thermit   Вы помоему круто просчитались. Для вычисления непр...   Jun 20 2013, 14:26
|- - _Anatoliy   Цитата(thermit @ Jun 20 2013, 16:26) Спа...   Jun 20 2013, 14:34
|- - Maverick   Цитата(_Anatoliy @ Jun 20 2013, 17:34) к...   Jun 21 2013, 21:06
|- - _Anatoliy   Цитата(Maverick @ Jun 21 2013, 22:06) Сп...   Jun 23 2013, 08:51
|- - _Anatoliy   Сдаётся мне что применение быстрой свёртки для это...   Jun 24 2013, 04:50
|- - Lmx2315   QUOTE (_Anatoliy @ Jun 23 2013, 12:51) По...   Jun 24 2013, 14:26
|- - _Anatoliy   Цитата(Lmx2315 @ Jun 24 2013, 15:26) ..за...   Jun 24 2013, 15:20
|- - Lmx2315   QUOTE (_Anatoliy @ Jun 24 2013, 19:20) По...   Jun 24 2013, 17:14
- - ViKo   Попробую и я ляпнуть глупость. Вы фильтруете прин...   Jun 24 2013, 08:20
|- - _Anatoliy   Цитата(ViKo @ Jun 24 2013, 09:20) Попробу...   Jun 24 2013, 08:39
|- - alex_os   Цитата(_Anatoliy @ Jun 24 2013, 12:39) Не...   Jun 24 2013, 09:03
||- - _Anatoliy   Цитата(alex_os @ Jun 24 2013, 10:03) Не п...   Jun 24 2013, 09:13
||- - alex_os   Цитата(_Anatoliy @ Jun 24 2013, 13:13) Но...   Jun 24 2013, 09:25
||- - _Anatoliy   Цитата(alex_os @ Jun 24 2013, 10:25) Скор...   Jun 24 2013, 10:00
|- - petrov   Цитата(_Anatoliy @ Jun 24 2013, 12:39) Ка...   Jun 24 2013, 10:32
|- - _Anatoliy   Цитата(petrov @ Jun 24 2013, 11:32) в быс...   Jun 24 2013, 10:48
- - thermit   В общем и целом - да. При децимации длина в отсчет...   Jun 24 2013, 14:32


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 07:58
Рейтинг@Mail.ru


Страница сгенерированна за 0.01524 секунд с 7
ELECTRONIX ©2004-2016