Полная версия этой страницы:
отличие CIC от FIR
Цитата(Krys @ Apr 18 2015, 10:26)

Вы что, преподаватель? )) Уже в 2х темах спрашиваете )))
- вы что, больной???
- нет... а вы что, доктор? (с)
Есть повод.
Вопрос только в одной теме - вы невнимательны.
Artunique
Jun 18 2015, 11:13
А чем определяется порядок CIC? Как узнать, какого порядка достаточно для данного фильтра?
Количеством звеньев. Одно звено = интегратор + гребенчатый фильтр. Порядок определяется исходя из требований к АЧХ, в первую очередь к подавлению за полосой пропускания. Каждое следующие звено увеличивает это подавление.
Artunique
Jun 18 2015, 11:25
Цитата(serjj @ Jun 18 2015, 14:20)

Количеством звеньев. Одно звено = интегратор + гребенчатый фильтр. Порядок определяется исходя из требований к АЧХ, в первую очередь к подавлению за полосой пропускания. Каждое следующие звено увеличивает это подавление.
А если после CIC ставится корректирующий FIR? То в таком случае порядок CIC не важен?
Зачем используют CIC фильтр? Чтобы обеспечить фильтрацию до очень узкой полосы в сравнении с частотой сэмплирования АЦП. Потом делают децимацию и уже на значительно пониженной частоте ставят FIR, который в т.ч. делает коррекцию АЧХ. При децимации важно, чтобы шум и помехи за полосой CIC фильтра был подавлен как можно лучше. Если вы поставите фильтр малого порядка, а потом сделаете децимацию, то шум/помехи свернутся в вашу полосу, интерферируя с вашим сигналом. И уже никакой FIR в этой ситуации не поможет, т.к. всё это добро уже попало в вашу полосу.
Artunique
Jun 18 2015, 11:40
Цитата(serjj @ Jun 18 2015, 14:36)

Зачем используют CIC фильтр? Чтобы обеспечить фильтрацию до очень узкой полосы в сравнении с частотой сэмплирования АЦП. Потом делают децимацию и уже на значительно пониженной частоте ставят FIR, который в т.ч. делает коррекцию АЧХ. При децимации важно, чтобы шум и помехи за полосой CIC фильтра был подавлен как можно лучше. Если вы поставите фильтр малого порядка, а потом сделаете децимацию, то шум/помехи свернутся в вашу полосу, интерферируя с вашим сигналом. И уже никакой FIR в этой ситуации не поможет, т.к. всё это добро уже попало в вашу полосу.
Спасибо! Все понятно. А как рассчитать тогда этот порядок?
Рекомендую
прочитать, там всё очень хорошо объясняется.
Artunique
Jun 18 2015, 11:50
Цитата(serjj @ Jun 18 2015, 14:46)

Рекомендую
прочитать, там всё очень хорошо объясняется.
Читал. В этой статье какое-то несоответствие в плане задержки фильтра. Во всей англоязычной литературе задержка берется равной 1 или 2. В этой статье задержка равна 2R. Если у меня R = 320, значит задержка 640? это же бред какой-то
bogaev_roman
Jun 18 2015, 11:53
Цитата(Artunique @ Jun 18 2015, 14:50)

Читал. В этой статье какое-то несоответствие в плане задержки фильтра. Во всей англоязычной литературе задержка берется равной 1 или 2. В этой статье задержка равна 2R. Если у меня R = 320, значит задержка 640? это же бред какой-то
Это задержка, выраженная в частоте дискретизации, до понижения частоты, поэтому и порядок такой. И реально R нужен гораздо меньше, в зависимости от требуемого подавления, там в статье даже написано -
Цитата
Например пусть требуется произвести децимацию сигнала с коэффициентом при подавлении алиасинга на 40 дБ
. Вы представляете, какое подавление будет при 320? Вообще, если есть возможность, то очень наглядно можно посмотреть характеристику в матлабе fdatool.
Artunique
Jun 18 2015, 12:04
Цитата(bogaev_roman @ Jun 18 2015, 14:53)

Это задержка, выраженная в частоте дискретизации, до понижения частоты, поэтому и порядок такой. И реально R нужен гораздо меньше, в зависимости от требуемого подавления, там в статье даже написано - . Вы представляете, какое подавление будет при 320? Вообще, если есть возможность, то очень наглядно можно посмотреть характеристику в матлабе fdatool.
Значит при R=320 получается огромное усиление? Как тогда быть? нужно децимировать в 320 раз
Цитата
Вы представляете, какое подавление будет при 320?
Задержки определяют положение полюсов на АЧХ. Их комбинация иными словами даёт требуемую ширину полосы пропускания а не подавление. Подавление зависит от порядка. В статье есть формула, из которой следует, что подавление за полосой примерно (11...13)N (дБ), где N - порядок. В случае если в каждом звене задержки разные, то полюса будут приходиться на разные частоты и играя этими задержками можно получить подавление еще на 10-15 дБ лучше, т.к. большие лепестки будут разбиваться полюсами других каскадов. CIC фильтр можно охарактеризовать вектором его задержек, размером N. Первая задержка определяет ширину полосы. Остальные задержки должны быть небольше. В матлабе всё это прекрасно смотрится. В свое время я подбирал эти коэффициенты и для 5го порядка получал около 75-80 дБ, если не изменяет память.
Цитата
Во всей англоязычной литературе задержка берется равной 1 или 2. В этой статье задержка равна 2R
Есть два подхода к реализации фильтра. В первом случае сначала делаются интеграторы, потом децимация, а потом гребенчатые фильтры. Тогда экономится память, т.к. на пониженной частоте задержи уменьшаются во столько же раз, во сколько понизилась частота. Но фильтр становится менее гибким, т.к. задержки должны быть кратны децимации. И на интеграторах растёт разрядность, которую нельзя снижать до децимации или выхода фильтра (не помню). В другом подходе фильтр делается из каскадов, каждый каскад это интегратор + гребенчатый. Каскады ставятся друг за другом. И только после делается децимация. Тогда задержки получаются большими. В ПЛИС их лучше делать на памяти. Но уходит намного меньше логики и задержки можно выбрать любыми.
UPD.
Цитата
Значит при R=320 получается огромное усиление? Как тогда быть? нужно децимировать в 320 раз
Делал децимацию с 100 МГц до 128 кГц, а это 750 раз. Там в два этапа CIC ставил, но это было давно и неправда, в 1 думаю тоже можно. Каких то проблем с переусилением не было.
Artunique
Jun 18 2015, 12:29
Цитата(serjj @ Jun 18 2015, 15:12)

Делал децимацию с 100 МГц до 128 кГц, а это 750 раз. Там в два этапа CIC ставил, но это было давно и неправда, в 1 думаю тоже можно. Каких то проблем с переусилением не было.
Если в 2 этапа делать, то корректор нужно после каждого CIC ставить или в конце?
В конце, корректировать нужно только второй фильтр. Между CIC делается промежуточная децимация. Попробуйте сначала в 1 этап. Может не нужно будет этот изврат городить)
Artunique
Jun 18 2015, 12:39
Цитата(serjj @ Jun 18 2015, 15:35)

В конце, корректировать нужно только второй фильтр. Между CIC делается промежуточная децимация. Попробуйте сначала в 1 этап. Может не нужно будет этот изврат городить)
Я просто пользуюсь коркой Quartus для CIC и FIR. И с избирательностью никак в ТЗ не попадаю. Грешил на переполнения, но их нет. Коэффициенты для FIR считал матлабом. И с разрядностью как только не экспериментировал. В fdatool вбиваю параметры CIC, у него усиление на графике АЧХ 280 получается. У FIR корректора 120. Это влияет на что-то? или эти значения нормируются как-то в плисине и можно не париться?
У вас разрядность на выходе CIC W_adc + 9, FIR - W_adc + 10. Этого достаточно. Ничего экспериментировать не нужно. Я не знаю как устроена корка CIC фильтра от Альтеры и как её настраивать, нужно курить доки. И в матлабе премудростями всякими для расчёта фильтров не пользовался. Своя модель для CIC была, по ней всё работало и с железкой билось. Могу только вам свою корку CIC предложить. Я хотя бы знаю как её настраивать.
Artunique
Jun 18 2015, 12:56
Цитата(serjj @ Jun 18 2015, 15:51)

У вас разрядность на выходе CIC W_adc + 9, FIR - W_adc + 10. Этого достаточно. Ничего экспериментировать не нужно. Я не знаю как устроена корка CIC фильтра от Альтеры и как её настраивать, нужно курить доки. И в матлабе премудростями всякими для расчёта фильтров не пользовался. Своя модель для CIC была, по ней всё работало и с железкой билось. Могу только вам свою корку CIC предложить. Я хотя бы знаю как её настраивать.
У меня с adc и nco по 14 бит идут на смеситель. оттуда я забираю 15-16 бит, которые уже идут в cic и далее в fir. на выходе fir должно быть строго 24 бита
В общем если надо, то вот
cic. Если решите попробовать его поставить, велкам могу сказать что там менять (хотя там все оч просто). Ну или добивайте альтеровскую корку )
Цитата(Artunique @ Jun 18 2015, 20:39)

И с избирательностью никак в ТЗ не попадаю.
Потому что надо сначала считать, потом делать. Лень делать в матлабе, возьмите маткад. Забейте туда ИХ вашего цика, фира, сделайте свертку и возьмите прямое фурье. Работа на полчаса - час. Сразу станет понятен и порядок цика и его регулярность и как "яйца" ИХ тракта себя ведут.
Artunique
Jun 18 2015, 13:34
Цитата(serjj @ Jun 18 2015, 16:01)

В общем если надо, то вот
cic. Если решите попробовать его поставить, велкам могу сказать что там менять (хотя там все оч просто). Ну или добивайте альтеровскую корку )
Спасибо, посмотрю. И еще такой вопрос: усиление CIC реальное чему равно? я имею в виду после применения округления по статье Хогенауэра. оно же явно меньше?
Цитата
усиление CIC реальное чему равно?
да что ж вы так прицепились к этому несчастному усилению? Для вас критерием должны являться относительные величины а не абсолютные. А это например подавление фильтра за полосой. В матлабе я всегда АЧХ нормирую, у меня даже мысли не возникало смотреть какое у него там усиление, я же не усилитель делаю. В железе и в CIC и в FIR промежуточное усиление есть, усиление по выходу, т.е. усечение разрядности, вы там реального усиления тоже не увидите. Другое дело, что усечение нужно делать очень аккуратно, потому что если сделать неправильно оно повлияет на собственно соотношение полоса пропускания/полоса подавление, как следствие - потеря чутья. А усиление - вещь которая в цифре зависит от разрядности, выбранного масштаба коэффициентов и т.д., совершенно непоказательная характеристика.
Artunique
Jun 18 2015, 13:55
Цитата(serjj @ Jun 18 2015, 16:46)

да что ж вы так прицепились к этому несчастному усилению? Для вас критерием должны являться относительные величины а не абсолютные. А это например подавление фильтра за полосой. В матлабе я всегда АЧХ нормирую, у меня даже мысли не возникало смотреть какое у него там усиление, я же не усилитель делаю. В железе и в CIC и в FIR промежуточное усиление есть, усиление по выходу, т.е. усечение разрядности, вы там реального усиления тоже не увидите. Другое дело, что усечение нужно делать очень аккуратно, потому что если сделать неправильно оно повлияет на собственно соотношение полоса пропускания/полоса подавление, как следствие - потеря чутья. А усиление - вещь которая в цифре зависит от разрядности, выбранного масштаба коэффициентов и т.д., совершенно непоказательная характеристика.
смотрите. у меня есть cic фильтр с какой-то разрядностью на входе. при моем коэфф-те децимации (320) разрядность на выходе разрастается до невероятных цифр, типа 52 бита. далее встает вопрос: все эти биты гнать в fir и там урезать на выходе или резать в cic? и в каких пределах резать тоже непонятно. мне известно только то, что на выходе fir мне надо 24 бита железно
Из этих 52 вам нужно только 23 (14+9). Остальные нужно выкинуть. От конкретной реализации будет зависеть, где и как их можно выкидывать. Я описал вам 2 реализации, в 1й - вы их сможете откинуть только в конце (точно не помню, но вроде так), во 2й - после каждого каскада можете откидывать все лишние биты, используя коэффициенты масштабирования и оставляя только 23. И на выходе получете 23.
Artunique
Jun 18 2015, 14:10
Цитата(serjj @ Jun 18 2015, 17:05)

используя коэффициенты масштабирования
можно подробнее?
В моём коде это параметры cPOINT0...4. Изменяя их вы получаете разный уровень сигнала на выходе фильтра. Они отвечают за промежуточное усиление фактически, т.е. между звеньями. Проверятся например в modelsim'e подачей на вход фильтра ступеньки с уровнем 0.8913 от полной шкалы (-1 дБ, типа максимальный сигнал с АЦП) и наблюдением за выходом с различными наборами этих коэффициентов. Вам нужно найти такой оптимум, что выход будет максимальным, но не переполнится.
Fat Robot
Jun 19 2015, 08:43
Одно из полезных свойств CIC-фильтра (или его прототипа: каскада MA-фильтров с длиной ЛЗ, равной коэффициенту децимации + дециматора) это то, что на входных частотах, кратных выходной частоте отсчетов, АЧХ будет равна 0. И АЧХ будет убывать к 0 в окрестностях этих частот.
Эти окрестности при децимации перейдут в окрестности нулевой частоты, т.е. в вашу рабочую полосу.
Выбирая порядок CIC фильтра, вы обмениваете уровень шума в рабочей полосе (просачивание в рабочую полосу aliasing составляющих, получившихся за счет децимации) на неравномерность (завал) ачх в рабочей полосе, а также на вычислительную/реализационную сложность, особенно если речь идет о фильтре, расположенном ближе к входу (большая частота отсчетов).
для больших коэффициентов децимации весь каскад преобразования строится так:
{CICx(Dcm=n1) - FIR - HBF(Dcm=2)} - {CICy(Dcm=n2) - FIR - HBF(Dcm=2)} - {} - ... - {} - FIR-корректор ачх - дециматор
обычно 2х звеньев {} с CIC3 и CIC5 достаточно, чтобы покрыть все разумные нужды в радиосвязной области.
CIC в первом звене можно сделать полифазным чтобы получить для него набор рациональных коэффициентов децимации. В этом случае область применения (доступный набор коэффициентов децимации) еще больше расширяется, правда в обмен на ресурсы (площадь и потребление).
Для FIR и HBF коэффициенты рассчитываются под multiplier-free реализацию. Количество операций для формирования одного отсчета больше в звеньях, включенных ближе к выходу, но частота их выполнения меньше, т.к. ниже частота отсчетов.
Для "FIR-корректор ачх" в конфигурируемом каскаде понижения частоты обычно предусматривают возможность записи любых коэффициентов, т.е. этот фильтр требует полноценного умножителя или умножителей, но он работает на "низкой" выходной частоте, поэтому для него возможны компактные multicycle реализации.
Прототип CIC (каскад MA + DCM) удобно использовать для floating point моделирования, когда уже понятно, что в это определенное место нужно включить CIC, но еще не понятно, как для него квантовать отсчеты.
"Что знал, то сказал"
Artunique
Jun 19 2015, 14:41
А кто-нибудь в курсе как должен выглядеть спектр на выходе CIC? Я в симулинке моделирую, там спектр после CIC больше шум напоминает
Цитата(Artunique @ Jun 19 2015, 22:41)

А кто-нибудь в курсе как должен выглядеть спектр на выходе CIC? Я в симулинке моделирую, там спектр после CIC больше шум напоминает
Снова повторяю, если не владеете матлабом, возьмите любой другой математический софт и постройте АЧХ любого CIC фильтра. Работы на 15 минут. В приложении банальнейший маткад
Думаю, будет полезно/любопытно:
"IMPLEMENTATION AND COMPARISON OF DIFFERENT CIC FILTER STRUCTURE FOR DECIMATION".
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.