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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Интерполяция CIC фильтром
Olga_woroncova
сообщение Nov 28 2017, 08:28
Сообщение #1





Группа: Новичок
Сообщений: 3
Регистрация: 27-11-17
Пользователь №: 100 388



Здравствуйте! Подскажите пожалуйста, делаю интерполяцию с помощью CIC фильтра, вроде бы всё по теории, но у получившегося сигнала амплитуда меньше, чем должна быть. Почему так получается? правильно ли я выбираю коэффициент для нормирования амплитуды?
Код
close all; clc; clear;

% Формирование сигнала.
Fs = 1000;
T = 1/Fs;
L = 50;
t = (0:L-1)*T;

x = 5*sin(2*pi*50*t);

% Коэффициент интерполяции
R = 5;
T1 = 1/(R*Fs);
t1 = (0:R*L-1)*T1;

% Величина задержки
D = 2*R;

% Порядок фильтра
N = 4;

% Усиление
Klg = 20*N*log10(D);
K = D^N;

% Расчет коэффициентов передаточной функции
% H(w) = (1 - z^(-D))^N / (1 - z^-1)^N
b = 1;
a = 1;
for n = 1 : N
    b = conv(b, [1 zeros(1,D-1) -1]);
    a = conv(a, [1 -1]);
end

% АЧХ и ФЧХ полученного фильтра стандартными средствами матлаб.
figure;
freqz(b,a);

% Применяем фильтр к сигналу стандартными средствами матлаб
nx = zeros(1,R*L);
nx(1:R:R*L) = x;
y = filter(b,a,nx);
y = (y/K)*R;

% И смотрим результат
figure;
plot(t,x,'-o',t1,y, '-o')

xlabel('Время, с')
ylabel('Амлитуда сигнала, у.е.')
legend({'сигнал', 'filter()'})

Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
ViKo
сообщение Nov 28 2017, 08:52
Сообщение #2


Универсальный солдатик
******

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



А задержка вас не смущает? По-моему, оба эти свойства есть следствие того, что фильтр слишком низкочастотный.
Go to the top of the page
 
+Quote Post
coding4dsp
сообщение Nov 28 2017, 08:59
Сообщение #3





Группа: Участник
Сообщений: 11
Регистрация: 30-08-17
Пользователь №: 99 040



Добрый день!

Во-первых, судя по АЧХ синус попадает на наклон, где сигнал претерпевает ослабление.
Во-вторых, ваш фильтр не стабилен! Посмотрите на сигнал, при L = 50000;

На CIC не очень похоже - CIC это FIR фильтр, а у вас IIR.
Go to the top of the page
 
+Quote Post
litv
сообщение Nov 28 2017, 10:17
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 398
Регистрация: 6-10-04
Из: Воронеж
Пользователь №: 806



Рекомендую почитать http://www.dsplib.ru/content/cic/cic.html
Go to the top of the page
 
+Quote Post
quato_a
сообщение Nov 28 2017, 12:26
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 73
Регистрация: 27-07-11
Из: Зеленоград
Пользователь №: 66 439



Цитата(coding4dsp @ Nov 28 2017, 11:59) *
На CIC не очень похоже - CIC это FIR фильтр, а у вас IIR.


CIC - это FIR (КИХ) ?


--------------------
Суббота начинается в понедельник
Go to the top of the page
 
+Quote Post
thermit
сообщение Nov 28 2017, 12:56
Сообщение #6


Знающий
****

Группа: Участник
Сообщений: 750
Регистрация: 3-08-09
Пользователь №: 51 730



Цитата(quato_a @ Nov 28 2017, 15:26) *
CIC - это FIR (КИХ) ?



Ибоваистену.
cic1 - реализации однородного ких через бих. На форуме куча информации про этосамое.
Go to the top of the page
 
+Quote Post
Kluwert
сообщение Dec 9 2017, 18:40
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 216
Регистрация: 15-11-09
Пользователь №: 53 639



Цитата(quato_a @ Nov 28 2017, 15:26) *
CIC - это FIR (КИХ) ?

По-сути, CIC (фильтр Хогенауэра) - это совершенно тупой (нерекурсивный изначально) фильтр скользящего среднего. Заслуга Хогенауэра (можно легко найти его статью в Инете), что, используя формулы бинома Ньютона, он представил его в виде рекурсивного фильтра. Мало того, при конечной разрядности, он использует сумматоры с циклическим перполнением, у которых ещё и переменная разрядность как функция номера секции. Во времена, когда ещё даже не сущестовало даже БМК (и, тем более, ПЛИС) - это было великим делом.

Но у CIC-фильтров есть один существенный недостаток: легко прикинуть, что, т.к. он равноценен некому фильтру СС, то его АЧХ будет типа sinc(f), что приводит к дикой неравномерности АЧХ в полосе пропускания. Как правило этот фильтр используется в квадратурных приёмниках и если допустимо, что бы частота оцифровки квадратур была заметно больше полуширины полосы сигнала, то - можно с этим жить. Но, как правило, это не позволительная роскошь. А тогда, на выходе этого фильтра приходится примастрячивать компенсирующей фильтр весьма нехилой длины. Да, он уже работает на пониженной частоте. Но по аппаратурной сложности все плюсы CIC-фильтра сходят на нет. Кроме того, CIC страдает просто фантастическом ростом выходной разрядности, поледующее грамотное упихивание оной в заданную - это не такая тривиальная задача, как кажется.

Поэтому, у нас в конторе, например, уже давно от CIC-фильтров отказались - в квадратурных приёмниках производится 2-3-ступенчатое понижение частоты на обычных нерекурсивных фильтрах невысокого порядка. Для современнных мощных и скоростных ПЛИС - это гораздо более экономичное и практичное решение (во всех смыслах).
Go to the top of the page
 
+Quote Post
coding4dsp
сообщение Dec 11 2017, 07:37
Сообщение #8





Группа: Участник
Сообщений: 11
Регистрация: 30-08-17
Пользователь №: 99 040



Kluwert, а какие у вас коэффициенты интерполяции/децимации?
Go to the top of the page
 
+Quote Post
Kluwert
сообщение Dec 11 2017, 08:51
Сообщение #9


Местный
***

Группа: Участник
Сообщений: 216
Регистрация: 15-11-09
Пользователь №: 53 639



Цитата(coding4dsp @ Dec 11 2017, 10:37) *
Kluwert, а какие у вас коэффициенты интерполяции/децимации?

Весьма разные. В связных задачах и до сотни доходило, потому что там в какой-нибудь системе связи на КВ/УКВ выходная полоса измеряется единицами килогерц, а на входе - десятки мегагерц. Сначала - "гетеродинирование на АЦП" (когда АЦП работает на частоте в несколько раз ниже частоты сигнала, обобщённая т. Котельникова) давала 3-4-кратный сброс частоты оцифровки, ну а затем - в цифре. В радиолокационных задачах - меньше, там полосы обычно гораздо шире.
Мало того, было даже как-то "соревнование", когда в 4 руки делали квадратурный приёмник на разных плисовских платформах. Я - на базе обычных фильтров, "соперник" - на CIC. Я сделал раза в 2 быстрее sm.gif
Кстати, по поводу CIC я допустил небольшую неточность: если вы решаете радиолокационную/гидроакустическую задачу и фильтры в квадратурных каналах у вас - это фильтры сжатия или согласованные фильтры, ну, или, дальше у вас стоит коррелятор (кому что нравиться), то компенсирующий фильтр на выходе можно вообще не ставить: вы просто можете учесть завалы в АЧХ CIC'а в АЧХ фильтров, или в опорном сигнале в коррелятора. Правда, здесь могут начаться тонкие игры с разрядностью: ибо разрешение как раз определяется в основном ВЧ-частью спектра, а эта часть как раз и будет давиться и проваливаться в младшие разряды. Так что ... вот.
Go to the top of the page
 
+Quote Post
coding4dsp
сообщение Dec 11 2017, 14:25
Сообщение #10





Группа: Участник
Сообщений: 11
Регистрация: 30-08-17
Пользователь №: 99 040



Интересно! Я полагал, что аппаратная реализация CIC'ов лаконична и прозрачна по сложности. Собственно, как и в software.

А что с использованием ресурсов ПЛИС? Как работать с ПЛИС я не знаю, но слышал о кол-ве использованных лутов, брамов, DSP и пр.
А что с качеством? Подавление вне полезной полосы и пульсации в полосе пропускания одинаковы у обоих методов?
Не критикуя Вас и ваших коллег, Вы уверены, что одинаково хорошо работали над своими реализациями?




Go to the top of the page
 
+Quote Post
quato_a
сообщение Dec 11 2017, 16:52
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 73
Регистрация: 27-07-11
Из: Зеленоград
Пользователь №: 66 439



Цитата(Kluwert @ Dec 11 2017, 11:51) *
Мало того, было даже как-то "соревнование", когда в 4 руки делали квадратурный приёмник на разных плисовских платформах. Я - на базе обычных фильтров, "соперник" - на CIC. Я сделал раза в 2 быстрее sm.gif


Соревнование без корок? sm.gif


--------------------
Суббота начинается в понедельник
Go to the top of the page
 
+Quote Post
Olga_woroncova
сообщение Dec 22 2017, 05:24
Сообщение #12





Группа: Новичок
Сообщений: 3
Регистрация: 27-11-17
Пользователь №: 100 388



Спасибо за ответы! Я так поняла, что амплитуда идеально не совпадет, если использовать только CIC фильтр. Для улучшения результата в литературе рекомендуют перед CIC фильтром поставить фильтр-корректор(АЧХ на рисунке). Но данный фильтр имеет высокий порядок для обеспечения необходимой характеристики (пример из статьи). Целесообразно ли вообще его применять? Если да, то подскажите как можно уменьшить его порядок.
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
quato_a
сообщение Dec 22 2017, 08:12
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 73
Регистрация: 27-07-11
Из: Зеленоград
Пользователь №: 66 439



Цитата(Olga_woroncova @ Dec 22 2017, 08:24) *
Целесообразно ли вообще его применять?

У себя в проекте отказался от CIC интерполяции в R раз при формировании OFDM-сигнала как раз-таки из-за большого порядка фильтра-корректора. Использую интерполяцию через БПФ.
Может вместо борьбы с сокращением порядка фильтра-корректора воспользоваться добавлением нулей к сигналу и FIR на полосу сигнала? Думаю, ресурсов потребует меньше.

Сообщение отредактировал quato_a - Dec 22 2017, 12:45


--------------------
Суббота начинается в понедельник
Go to the top of the page
 
+Quote Post
Lmx2315
сообщение Dec 22 2017, 08:47
Сообщение #14


отэц
*****

Группа: Свой
Сообщений: 1 660
Регистрация: 18-09-05
Из: Москва
Пользователь №: 8 684



(написал ерунду потому что невнимательно прочитал начало темы, перепутал интерполятор с дециматором)


--------------------
b4edbc0f854dda469460aa1aa a5ba2bd36cbe9d4bc8f92179f 8f3fec5d9da7f0
SHA-256
Go to the top of the page
 
+Quote Post
thermit
сообщение Dec 22 2017, 12:14
Сообщение #15


Знающий
****

Группа: Участник
Сообщений: 750
Регистрация: 3-08-09
Пользователь №: 51 730



Цитата(quato_a @ Dec 22 2017, 11:12) *
У себя в проекте отказался от CIC интерполяции в R раз при формировании OFDM-сигнала как раз-таки из-за большого порядка фильтра-корректора. Использую интерполяцию через БПФ.
Может вместо борьбы с сокращением порядка фильтра-корректора воспользоваться добавлением нулей к сигналу и FIR на полосу сигнала? Думаю, ресурсом потребует меньше.


Что мешало скорректировать искажения цика на этапе формирования поднесущих?


Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 20th April 2018 - 20:00
Рейтинг@Mail.ru


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