Olga_woroncova 0 28 ноября, 2017 Опубликовано 28 ноября, 2017 · Жалоба Здравствуйте! Подскажите пожалуйста, делаю интерполяцию с помощью 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()'}) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 28 ноября, 2017 Опубликовано 28 ноября, 2017 · Жалоба А задержка вас не смущает? По-моему, оба эти свойства есть следствие того, что фильтр слишком низкочастотный. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
coding4dsp 0 28 ноября, 2017 Опубликовано 28 ноября, 2017 · Жалоба Добрый день! Во-первых, судя по АЧХ синус попадает на наклон, где сигнал претерпевает ослабление. Во-вторых, ваш фильтр не стабилен! Посмотрите на сигнал, при L = 50000; На CIC не очень похоже - CIC это FIR фильтр, а у вас IIR. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
litv 0 28 ноября, 2017 Опубликовано 28 ноября, 2017 · Жалоба Рекомендую почитать http://www.dsplib.ru/content/cic/cic.html Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
quato_a 3 28 ноября, 2017 Опубликовано 28 ноября, 2017 · Жалоба На CIC не очень похоже - CIC это FIR фильтр, а у вас IIR. CIC - это FIR (КИХ) ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
thermit 1 28 ноября, 2017 Опубликовано 28 ноября, 2017 · Жалоба CIC - это FIR (КИХ) ? Ибоваистену. cic1 - реализации однородного ких через бих. На форуме куча информации про этосамое. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kluwer 0 9 декабря, 2017 Опубликовано 9 декабря, 2017 · Жалоба CIC - это FIR (КИХ) ? По-сути, CIC (фильтр Хогенауэра) - это совершенно тупой (нерекурсивный изначально) фильтр скользящего среднего. Заслуга Хогенауэра (можно легко найти его статью в Инете), что, используя формулы бинома Ньютона, он представил его в виде рекурсивного фильтра. Мало того, при конечной разрядности, он использует сумматоры с циклическим перполнением, у которых ещё и переменная разрядность как функция номера секции. Во времена, когда ещё даже не сущестовало даже БМК (и, тем более, ПЛИС) - это было великим делом. Но у CIC-фильтров есть один существенный недостаток: легко прикинуть, что, т.к. он равноценен некому фильтру СС, то его АЧХ будет типа sinc(f), что приводит к дикой неравномерности АЧХ в полосе пропускания. Как правило этот фильтр используется в квадратурных приёмниках и если допустимо, что бы частота оцифровки квадратур была заметно больше полуширины полосы сигнала, то - можно с этим жить. Но, как правило, это не позволительная роскошь. А тогда, на выходе этого фильтра приходится примастрячивать компенсирующей фильтр весьма нехилой длины. Да, он уже работает на пониженной частоте. Но по аппаратурной сложности все плюсы CIC-фильтра сходят на нет. Кроме того, CIC страдает просто фантастическом ростом выходной разрядности, поледующее грамотное упихивание оной в заданную - это не такая тривиальная задача, как кажется. Поэтому, у нас в конторе, например, уже давно от CIC-фильтров отказались - в квадратурных приёмниках производится 2-3-ступенчатое понижение частоты на обычных нерекурсивных фильтрах невысокого порядка. Для современнных мощных и скоростных ПЛИС - это гораздо более экономичное и практичное решение (во всех смыслах). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
coding4dsp 0 11 декабря, 2017 Опубликовано 11 декабря, 2017 · Жалоба Kluwert, а какие у вас коэффициенты интерполяции/децимации? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kluwer 0 11 декабря, 2017 Опубликовано 11 декабря, 2017 · Жалоба Kluwert, а какие у вас коэффициенты интерполяции/децимации? Весьма разные. В связных задачах и до сотни доходило, потому что там в какой-нибудь системе связи на КВ/УКВ выходная полоса измеряется единицами килогерц, а на входе - десятки мегагерц. Сначала - "гетеродинирование на АЦП" (когда АЦП работает на частоте в несколько раз ниже частоты сигнала, обобщённая т. Котельникова) давала 3-4-кратный сброс частоты оцифровки, ну а затем - в цифре. В радиолокационных задачах - меньше, там полосы обычно гораздо шире. Мало того, было даже как-то "соревнование", когда в 4 руки делали квадратурный приёмник на разных плисовских платформах. Я - на базе обычных фильтров, "соперник" - на CIC. Я сделал раза в 2 быстрее :) Кстати, по поводу CIC я допустил небольшую неточность: если вы решаете радиолокационную/гидроакустическую задачу и фильтры в квадратурных каналах у вас - это фильтры сжатия или согласованные фильтры, ну, или, дальше у вас стоит коррелятор (кому что нравиться), то компенсирующий фильтр на выходе можно вообще не ставить: вы просто можете учесть завалы в АЧХ CIC'а в АЧХ фильтров, или в опорном сигнале в коррелятора. Правда, здесь могут начаться тонкие игры с разрядностью: ибо разрешение как раз определяется в основном ВЧ-частью спектра, а эта часть как раз и будет давиться и проваливаться в младшие разряды. Так что ... вот. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
coding4dsp 0 11 декабря, 2017 Опубликовано 11 декабря, 2017 · Жалоба Интересно! Я полагал, что аппаратная реализация CIC'ов лаконична и прозрачна по сложности. Собственно, как и в software. А что с использованием ресурсов ПЛИС? Как работать с ПЛИС я не знаю, но слышал о кол-ве использованных лутов, брамов, DSP и пр. А что с качеством? Подавление вне полезной полосы и пульсации в полосе пропускания одинаковы у обоих методов? Не критикуя Вас и ваших коллег, Вы уверены, что одинаково хорошо работали над своими реализациями? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
quato_a 3 11 декабря, 2017 Опубликовано 11 декабря, 2017 · Жалоба Мало того, было даже как-то "соревнование", когда в 4 руки делали квадратурный приёмник на разных плисовских платформах. Я - на базе обычных фильтров, "соперник" - на CIC. Я сделал раза в 2 быстрее :) Соревнование без корок? :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Olga_woroncova 0 22 декабря, 2017 Опубликовано 22 декабря, 2017 · Жалоба Спасибо за ответы! Я так поняла, что амплитуда идеально не совпадет, если использовать только CIC фильтр. Для улучшения результата в литературе рекомендуют перед CIC фильтром поставить фильтр-корректор(АЧХ на рисунке). Но данный фильтр имеет высокий порядок для обеспечения необходимой характеристики (пример из статьи). Целесообразно ли вообще его применять? Если да, то подскажите как можно уменьшить его порядок. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
quato_a 3 22 декабря, 2017 Опубликовано 22 декабря, 2017 (изменено) · Жалоба Целесообразно ли вообще его применять? У себя в проекте отказался от CIC интерполяции в R раз при формировании OFDM-сигнала как раз-таки из-за большого порядка фильтра-корректора. Использую интерполяцию через БПФ. Может вместо борьбы с сокращением порядка фильтра-корректора воспользоваться добавлением нулей к сигналу и FIR на полосу сигнала? Думаю, ресурсов потребует меньше. Изменено 22 декабря, 2017 пользователем quato_a Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lmx2315 5 22 декабря, 2017 Опубликовано 22 декабря, 2017 · Жалоба (написал ерунду потому что невнимательно прочитал начало темы, перепутал интерполятор с дециматором) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
thermit 1 22 декабря, 2017 Опубликовано 22 декабря, 2017 · Жалоба У себя в проекте отказался от CIC интерполяции в R раз при формировании OFDM-сигнала как раз-таки из-за большого порядка фильтра-корректора. Использую интерполяцию через БПФ. Может вместо борьбы с сокращением порядка фильтра-корректора воспользоваться добавлением нулей к сигналу и FIR на полосу сигнала? Думаю, ресурсом потребует меньше. Что мешало скорректировать искажения цика на этапе формирования поднесущих? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться