shf_05 0 22 июля, 2008 Опубликовано 22 июля, 2008 · Жалоба вроде бы без проблем использую CIC и FIR для децимации и интерполяции, знаю их характеристики (АЧХ, ФЧХ, ПФ). использую микросхемы дециматор и интерполятор (AD6620 и AD9856), там CIC фильтры, + в первой FIR есть на последней стадии децимации. Но так до конца не понимаю разницы между CIC и FIR. Попытался найти в учебнике по ЦОС- про CIC нет ни слова... За свою жизнь воплотил проект, где сигнал интерполировался в 4 раза FIR фильтром, причем свойства фильтра выбрал так- * неравномерность АЧХ в полосе <= необходимой, * затухание на 2-й гармонике исходного сигнала не менее требуемого получил коэф-ты, зарядил в ДСПш-ку и все. правильно ли я это сделал? Вот что не дает покоя- 1. зачем тогда в ряде прог по расчету ЦФ (напр. MATLAB) есть фильтры, к-е наз-ся интерполирующие/децимир. 2. в чем фишка использовать CIC? не лучше ли FIR? 3. может просто все дело в простоте реализации CIC? 4. можно ли использовать IIR, если не важна ФЧХ интерполятора/дециматора? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex65111 0 22 июля, 2008 Опубликовано 22 июля, 2008 · Жалоба Есть вопросы изменения частоты дискретизации. Там необходимо использовать предварительно фильтрацию. В принципе, если ФЧХ не важна, то фильтрация может осуществляться как FIR так и IIR. Однако, теория теорией, но в жизни важны реализационные аспекты. С учетом этого, FIR в этих задачах предпочтительнее, так как именно на их базе возможны вычислительно эффективные полифазные структуры. А CIC фильтры эффективно реализуются на аппаратном уровне так как не требует умножителей. При этом надо учесть, что CIC это по сути FIR, только типа рекурсивная реализация. При чисто программной фильтрации-децимации архитектура CIC вычислительно менее эфективна, чем полифазные FIR. При аппаратной реализации CIC более эффективны. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
shf_05 0 23 июля, 2008 Опубликовано 23 июля, 2008 · Жалоба спасибо за лекцию - про CIC и FIR понял. а если необходима минимальная задержка сигнала при децимации/интерполяции, можно ли использовать IIR фильтр при чисто программной реализации (на ДСП)? Дело в том, что сейчас использую дециматор на 256, 8 из которых- CIC2, 16- CIC5 и 2- FIR, при этом задержка в фильтре порядка 1,5 мс. полоса сигнала порядка 4-16кГц. Время задержки весьма критичный для меня параметр, вот и думаю использовать IIR фильтр для децимации. Будет ли это решением проблемы? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex65111 0 23 июля, 2008 Опубликовано 23 июля, 2008 · Жалоба сейчас использую дециматор на 256, 8 из которых- CIC2, 16- CIC5 и 2- FIR - а почему Вы приняли именно такую схему децимации? Вообще то считается, что первый каскад должен максимально децимировать, т.е в Вашем случае как минимум 64, а то и все 128. По поводу IIR сам не работал по такой схеме, но чисто теоритически (если фаза не страшна) можно, однако вычислительная сложность будет нерационально большой, так как в этом случае придется рассчитывать отсчеты, которые потом все равно удалять (децимировать). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
shf_05 0 23 июля, 2008 Опубликовано 23 июля, 2008 · Жалоба - а почему Вы приняли именно такую схему децимации? Вообще то считается, что первый каскад должен максимально децимировать, т.е в Вашем случае как минимум 64, а то и все 128. схема такова потому что она реализуется на ИМС AD6620, у нее ограниченные возможности, можно сделать CIC2= 8, CIC5=16, FIR=2. По поводу IIR сам не работал по такой схеме, но чисто теоритически (если фаза не страшна) можно, однако вычислительная сложность будет нерационально большой, так как в этом случае придется рассчитывать отсчеты, которые потом все равно удалять (децимировать). а дляинтерполятора все равно- выч сложность будет примерно одного порядка? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kuzis 0 23 июля, 2008 Опубликовано 23 июля, 2008 · Жалоба Есть еще одно отличие CIC от FIR. При реализации FIR можно получить АЧХ с требуемыми параметрами, например косинусный фильтр с нужным коэффициентом скругления. А вот с CIC такой гибкости нету. Поэтому при децимации сначала используют CIC, а затем FIR, дабы получить нужные свойства. Еще один немаловажный параметр фильтра - ГВЗ. У рекурсивных фильтров, которым является CIC она не линейна (линейна лишь в части полосы)Кстати, утверждение, что первый каскад должен максимально децимировать не верно. Лучше для максимальной децимации использовать FIR, а уж чего не хватает - добивать CICом. Так можно получить меньшую неравномерность АЧХ и ГВЗ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Самурай 12 23 июля, 2008 Опубликовано 23 июля, 2008 · Жалоба Еще один немаловажный параметр фильтра - ГВЗ. У рекурсивных фильтров, которым является CIC она не линейна (линейна лишь в части полосы) Немного не так - CIC это не рекурсивный фильтр (в том смысле что это не IIR), это рекурсивная реализация FIR фильтра, причем с линейной ФЧХ во всей частотной области и следовательно постоянным ГВЗ:) Что касается использования IIR для децимации, то конечно можно. Но только ГВЗ для IIR будет не такая уж и маленькая. Хотя и меньше:) Но будет нелинейной ФЧХ и будут (скорее всего) вычисления с плавающей точкой. Хотя, если не ошибаюсь, для IIR также возможна полифазная реализация. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
shf_05 0 23 июля, 2008 Опубликовано 23 июля, 2008 · Жалоба с дециматором ясно, а как насчет интерполятора? ведь даже в матлабе по умолчанию ф-я decimate использует БИХ фильтр чебышева? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kuzis 0 23 июля, 2008 Опубликовано 23 июля, 2008 · Жалоба Немного не так - CIC это не рекурсивный фильтр (в том смысле что это не IIR), это рекурсивная реализация FIR фильтра, причем с линейной ФЧХ во всей частотной области и следовательно постоянным ГВЗ:) гм. Возможно я ошибся на счет ГВЗ.... с дециматором ясно, а как насчет интерполятора? ведь даже в матлабе по умолчанию ф-я decimate использует БИХ фильтр чебышева? С интерполяцией наоборот. Если есть требования к неравномерности АЧХ, то сначала нужно интерполировать FIRом, а потом можно добить CICом Кстати, неплохо про CIC написано у Xilinx. Смотрите прикрепленный файлик cic.pdf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex65111 0 23 июля, 2008 Опубликовано 23 июля, 2008 · Жалоба Лучше для максимальной децимации использовать FIR, а уж чего не хватает - добивать CICом - Чето намудрили, если уж FIRом сумели много децимировать, то CIC уже нафиг не нужен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
shf_05 0 23 июля, 2008 Опубликовано 23 июля, 2008 · Жалоба - Чето намудрили, если уж FIRом сумели много децимировать, то CIC уже нафиг не нужен. вот вот я впал в замешательство зачем?! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 24 июля, 2008 Опубликовано 24 июля, 2008 · Жалоба Немножко оффтопик, но частью по теме. Господа просветите ламера. Использую у себя на ФПГА в качестве дециматоров/интерполяторов N каскадов FIR со всеми единичными коэффициентами (порядок FIR определяется кратным изменением частоты). АЧХ и ФЧХ CIC и этого FIR совпадают. Чем такой фильтр хуже/лучше чем классический CIC (с рекурсивной частью) ? Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kuzis 0 24 июля, 2008 Опубликовано 24 июля, 2008 · Жалоба - Чето намудрили, если уж FIRом сумели много децимировать, то CIC уже нафиг не нужен. СIC нужен. С ростом коэффициента децимации возрастает объем оборудования, занимаемого FIRом. В частности величина линий задержки и объем памяти для коэффициентов. Так например на VirtexII в тысяыном плисе я реализовывал двухканальный FIR с коэффициентом децимации 128. При этом сожрало практически всю память плиса. А поставленный перед ним CIC, занимая небольшой объем позволил увеличить общий коэффициент децимации до 32768. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
shf_05 0 24 июля, 2008 Опубликовано 24 июля, 2008 · Жалоба спасибо всем за ответы. как насчет реализации дециматоров и интерполяторов на FPGA, нужно реализовать интерполятор и дециматор на 256, "конечная" Fs>= 4MSPS. насколько это трудоемкая задача? можно ли реализовать на cpld? кто делал- поделитесь соображениями. сам до этого не использовал FPGA, только ДСП. если есть ссылки по теме скинте пожалуйста. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kuzis 0 24 июля, 2008 Опубликовано 24 июля, 2008 · Жалоба спасибо всем за ответы. как насчет реализации дециматоров и интерполяторов на FPGA, нужно реализовать интерполятор и дециматор на 256, "конечная" Fs>= 4MSPS. насколько это трудоемкая задача? можно ли реализовать на cpld? кто делал- поделитесь соображениями. сам до этого не использовал FPGA, только ДСП. если есть ссылки по теме скинте пожалуйста. Боюсь что на CPLD будет трудновато. Разве что действительно CIC использовать, если нет требования к АЧХ. Если же использовать FIR, то нужно строить полифазную структуру, с учетом того, что фильтр как правило симметричный. Задача не слишком сложная, главное правильно понять. Помню когда делал дециматор, чуть мозг не спалил, когда делал разворот в центре фильтра :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться