Перейти к содержанию
    

вроде бы без проблем использую CIC и FIR для децимации и интерполяции, знаю их характеристики (АЧХ, ФЧХ, ПФ). использую микросхемы дециматор и интерполятор (AD6620 и AD9856), там CIC фильтры, + в первой FIR есть на последней стадии децимации.

 

Но так до конца не понимаю разницы между CIC и FIR. Попытался найти в учебнике по ЦОС- про CIC нет ни слова...

 

За свою жизнь воплотил проект, где сигнал интерполировался в 4 раза FIR фильтром, причем свойства фильтра выбрал так-

* неравномерность АЧХ в полосе <= необходимой,

* затухание на 2-й гармонике исходного сигнала не менее требуемого

получил коэф-ты, зарядил в ДСПш-ку и все.

правильно ли я это сделал?

 

Вот что не дает покоя-

1. зачем тогда в ряде прог по расчету ЦФ (напр. MATLAB) есть фильтры, к-е наз-ся интерполирующие/децимир.

2. в чем фишка использовать CIC? не лучше ли FIR?

3. может просто все дело в простоте реализации CIC?

4. можно ли использовать IIR, если не важна ФЧХ интерполятора/дециматора?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть вопросы изменения частоты дискретизации. Там необходимо использовать предварительно фильтрацию. В принципе, если ФЧХ не важна, то фильтрация может осуществляться как FIR так и IIR. Однако, теория теорией, но в жизни важны реализационные аспекты. С учетом этого, FIR в этих задачах предпочтительнее, так как именно на их базе возможны вычислительно эффективные полифазные структуры.

А CIC фильтры эффективно реализуются на аппаратном уровне так как не требует умножителей. При этом надо учесть, что CIC это по сути FIR, только типа рекурсивная реализация.

При чисто программной фильтрации-децимации архитектура CIC вычислительно менее эфективна, чем полифазные FIR. При аппаратной реализации CIC более эффективны.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

спасибо за лекцию - про CIC и FIR понял.

а если необходима минимальная задержка сигнала при децимации/интерполяции, можно ли использовать IIR фильтр при чисто программной реализации (на ДСП)?

Дело в том, что сейчас использую дециматор на 256, 8 из которых- CIC2, 16- CIC5 и 2- FIR, при этом задержка в фильтре порядка 1,5 мс. полоса сигнала порядка 4-16кГц.

Время задержки весьма критичный для меня параметр, вот и думаю использовать IIR фильтр для децимации. Будет ли это решением проблемы?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

сейчас использую дециматор на 256, 8 из которых- CIC2, 16- CIC5 и 2- FIR
- а почему Вы приняли именно такую схему децимации? Вообще то считается, что первый каскад должен максимально децимировать, т.е в Вашем случае как минимум 64, а то и все 128.

 

По поводу IIR сам не работал по такой схеме, но чисто теоритически (если фаза не страшна) можно, однако вычислительная сложность будет нерационально большой, так как в этом случае придется рассчитывать отсчеты, которые потом все равно удалять (децимировать).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

- а почему Вы приняли именно такую схему децимации? Вообще то считается, что первый каскад должен максимально децимировать, т.е в Вашем случае как минимум 64, а то и все 128.

 

 

схема такова потому что она реализуется на ИМС AD6620, у нее ограниченные возможности, можно сделать CIC2= 8, CIC5=16, FIR=2.

 

По поводу IIR сам не работал по такой схеме, но чисто теоритически (если фаза не страшна) можно, однако вычислительная сложность будет нерационально большой, так как в этом случае придется рассчитывать отсчеты, которые потом все равно удалять (децимировать).

 

а дляинтерполятора все равно- выч сложность будет примерно одного порядка?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть еще одно отличие CIC от FIR. При реализации FIR можно получить АЧХ с требуемыми параметрами, например косинусный фильтр с нужным коэффициентом скругления. А вот с CIC такой гибкости нету. Поэтому при децимации сначала используют CIC, а затем FIR, дабы получить нужные свойства. Еще один немаловажный параметр фильтра - ГВЗ. У рекурсивных фильтров, которым является CIC она не линейна (линейна лишь в части полосы)Кстати, утверждение, что первый каскад должен максимально децимировать не верно. Лучше для максимальной децимации использовать FIR, а уж чего не хватает - добивать CICом. Так можно получить меньшую неравномерность АЧХ и ГВЗ.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Еще один немаловажный параметр фильтра - ГВЗ. У рекурсивных фильтров, которым является CIC она не линейна (линейна лишь в части полосы)

 

Немного не так - CIC это не рекурсивный фильтр (в том смысле что это не IIR), это рекурсивная реализация FIR фильтра, причем с линейной ФЧХ во всей частотной области и следовательно постоянным ГВЗ:)

 

Что касается использования IIR для децимации, то конечно можно. Но только ГВЗ для IIR будет не такая уж и маленькая. Хотя и меньше:) Но будет нелинейной ФЧХ и будут (скорее всего) вычисления с плавающей точкой. Хотя, если не ошибаюсь, для IIR также возможна полифазная реализация.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

с дециматором ясно, а как насчет интерполятора?

ведь даже в матлабе по умолчанию ф-я decimate использует БИХ фильтр чебышева?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Немного не так - CIC это не рекурсивный фильтр (в том смысле что это не IIR), это рекурсивная реализация FIR фильтра, причем с линейной ФЧХ во всей частотной области и следовательно постоянным ГВЗ:)

 

гм. Возможно я ошибся на счет ГВЗ....

 

с дециматором ясно, а как насчет интерполятора?

ведь даже в матлабе по умолчанию ф-я decimate использует БИХ фильтр чебышева?

 

С интерполяцией наоборот. Если есть требования к неравномерности АЧХ, то сначала нужно интерполировать FIRом, а потом можно добить CICом

 

Кстати, неплохо про CIC написано у Xilinx. Смотрите прикрепленный файлик

cic.pdf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Лучше для максимальной децимации использовать FIR, а уж чего не хватает - добивать CICом
- Чето намудрили, если уж FIRом сумели много децимировать, то CIC уже нафиг не нужен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

- Чето намудрили, если уж FIRом сумели много децимировать, то CIC уже нафиг не нужен.

 

вот вот я впал в замешательство зачем?!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Немножко оффтопик, но частью по теме.

 

Господа просветите ламера.

 

Использую у себя на ФПГА в качестве дециматоров/интерполяторов N каскадов FIR со всеми единичными коэффициентами (порядок FIR определяется кратным изменением частоты).

 

АЧХ и ФЧХ CIC и этого FIR совпадают.

 

Чем такой фильтр хуже/лучше чем классический CIC (с рекурсивной частью) ?

 

 

Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

- Чето намудрили, если уж FIRом сумели много децимировать, то CIC уже нафиг не нужен.

 

СIC нужен. С ростом коэффициента децимации возрастает объем оборудования, занимаемого FIRом. В частности величина линий задержки и объем памяти для коэффициентов. Так например на VirtexII в тысяыном плисе я реализовывал двухканальный FIR с коэффициентом децимации 128. При этом сожрало практически всю память плиса. А поставленный перед ним CIC, занимая небольшой объем позволил увеличить общий коэффициент децимации до 32768.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

спасибо всем за ответы.

как насчет реализации дециматоров и интерполяторов на FPGA, нужно реализовать интерполятор и дециматор на 256, "конечная" Fs>= 4MSPS.

насколько это трудоемкая задача? можно ли реализовать на cpld?

кто делал- поделитесь соображениями.

сам до этого не использовал FPGA, только ДСП.

если есть ссылки по теме скинте пожалуйста.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

спасибо всем за ответы.

как насчет реализации дециматоров и интерполяторов на FPGA, нужно реализовать интерполятор и дециматор на 256, "конечная" Fs>= 4MSPS.

насколько это трудоемкая задача? можно ли реализовать на cpld?

кто делал- поделитесь соображениями.

сам до этого не использовал FPGA, только ДСП.

если есть ссылки по теме скинте пожалуйста.

 

Боюсь что на CPLD будет трудновато. Разве что действительно CIC использовать, если нет требования к АЧХ.

 

Если же использовать FIR, то нужно строить полифазную структуру, с учетом того, что фильтр как правило симметричный. Задача не слишком сложная, главное правильно понять. Помню когда делал дециматор, чуть мозг не спалил, когда делал разворот в центре фильтра :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...