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

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> Multirate decimation filter, Как правильно сделать?
Vitaliy_ARM
сообщение Dec 2 2009, 04:40
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246



Доброе время суток.

Возникла необходимость сделать прореживающий фильтр с коэффициентами прореживания R = 512, 1024, 2048, 4096 на базе CIC + компенсирующий FIR. У альтеры в апноуте (AN 455) описан алгоритм расчета коэффициентов FIR-а для компенсации "односкоростного" CIC. Вопрос, как это применить для многоскоростного фильтра? Правильно ли будет разбить CIC на две части, первая допустим с коэффициентами прореживания 4,8,16,32, вторая с прореживанием на 128, и рассчитать компенсирующий FIR для второго CIC?


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post
Михаил_K
сообщение Dec 2 2009, 06:58
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 552
Регистрация: 29-02-08
Пользователь №: 35 481



Цитата(Vitaliy_ARM @ Dec 2 2009, 07:40) *
Возникла необходимость сделать прореживающий фильтр с коэффициентами прореживания R = 512, 1024, 2048, 4096 на базе CIC


А вам необходимы все коэффициенты одновременно (т.е. будете 4 канала обрабатывать), или они будут переключаться во время работы? Если второй вариант - нет смысла разбивать CIC на части.
Go to the top of the page
 
+Quote Post
Vitaliy_ARM
сообщение Dec 2 2009, 07:04
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246



Цитата(Михаил_K @ Dec 2 2009, 09:58) *
А вам необходимы все коэффициенты одновременно (т.е. будете 4 канала обрабатывать), или они будут переключаться во время работы? Если второй вариант - нет смысла разбивать CIC на части.


Второй вариант. Т.е. если я рассчитаю для CIC с R = 512 коэффициенты компенсирующего FIR фильтра, то и на всех остальных R это будет тот же фильтр?


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post
des00
сообщение Dec 2 2009, 08:47
Сообщение #4


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Vitaliy_ARM @ Dec 2 2009, 01:04) *
Второй вариант. Т.е. если я рассчитаю для CIC с R = 512 коэффициенты компенсирующего FIR фильтра, то и на всех остальных R это будет тот же фильтр?


нет, там фильтр будет другой, но в интересующей вас полосе разность частотных характеристик будет ~0.005Дб если вас это устроит то этим можно пренебречь %)

ЗЫ. Кстати считается такой фильтр элементарно в любом каде (Matlab/Matcad/Mapple) зная АЧХ цика %)
ЗЗЫ. Думаю очевидно что фильтр должен будет стоять ДО цика.


--------------------
Go to the top of the page
 
+Quote Post
Vitaliy_ARM
сообщение Dec 2 2009, 09:15
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246



Цитата(des00 @ Dec 2 2009, 11:47) *
нет, там фильтр будет другой, но в интересующей вас полосе разность частотных характеристик будет ~0.005Дб если вас это устроит то этим можно пренебречь %)

Меня интересует максимальная полоса на выходе, т.е. близкая к Fs/2. Т.е. может имеет смысл разбить цик на две части? Чтобы влияние первого ачх было как можно меньше

Цитата(des00 @ Dec 2 2009, 11:47) *
ЗЫ. Кстати считается такой фильтр элементарно в любом каде (Matlab/Matcad/Mapple) зная АЧХ цика %)

Я не силен пока в цифровой обработке сигналов, может подскажите ссылку на статью или информацию, что с чем связано и как это делать в матлабе?
Цитата(des00 @ Dec 2 2009, 11:47) *
ЗЗЫ. Думаю очевидно что фильтр должен будет стоять ДО цика.

Почему? Фирмы типа альтеры рекомендуют в дециматорах ставить после, в интерполяторах до. Вы имеете ввиду потерю динамического диапазона на краях АЧХ Цика?


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post
serebr
сообщение Dec 2 2009, 10:48
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 191
Регистрация: 10-01-05
Из: San Francisco Bay, Silicon Valley
Пользователь №: 1 869



Цитата(des00 @ Dec 2 2009, 14:47) *
ЗЗЫ. Думаю очевидно что фильтр должен будет стоять ДО цика.

Если фильтр децимальный, то FIR ставят после CIC и прореживания для сокращения количества вычислительных операций.
Go to the top of the page
 
+Quote Post
des00
сообщение Dec 2 2009, 11:29
Сообщение #7


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(serebr @ Dec 2 2009, 04:48) *
Если фильтр децимальный, то FIR ставят после CIC и прореживания для сокращения количества вычислительных операций.


сыплю голову пеплом, писал ответ о дециматоре, а написал про интерполятор %)

Цитата(Vitaliy_ARM @ Dec 2 2009, 03:15) *
Меня интересует максимальная полоса на выходе, т.е. близкая к Fs/2. Т.е. может имеет смысл разбить цик на две части? Чтобы влияние первого ачх было как можно меньше


Но полоса то вам нужна после децимации верно ? Теперь оцените на сколько вы делаете децимацию и какую часть вашей полосы портит CIC. Сложно делать заявления без опоры на цифры(считать лень), но по опыту начиная с коэфф. децимации 8 АЧХ различаются не более чем на 0.1Дб для 6ти каскадов CIC. Незнаю ваших требований к CIC фильтру, но если входная разрядность ~16, число каскадов больше 3-х, и делаете вы это на фпга то лучше вам НЕ делать фильтр хогенауэра. Для проца смотреть надо %)

Цитата
Я не силен пока в цифровой обработке сигналов, может подскажите ссылку на статью или информацию, что с чем связано и как это делать в матлабе?


В атаче расчет RC фильтра с коррекцией АЧХ CIC фильтра, 13 маткад. Все комментарии на русском. Ничего сложного %)
Прикрепленные файлы
Прикрепленный файл  _______RC________.zip ( 111.87 килобайт ) Кол-во скачиваний: 201
 


--------------------
Go to the top of the page
 
+Quote Post
Vitaliy_ARM
сообщение Dec 2 2009, 11:41
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246



Цитата(des00 @ Dec 2 2009, 14:29) *
Но полоса то вам нужна после децимации верно ? Теперь оцените на сколько вы делаете децимацию и какую часть вашей полосы портит CIC. Сложно делать заявления без опоры на цифры(считать лень), но по опыту начиная с коэфф. децимации 8 АЧХ различаются не более чем на 0.1Дб для 6ти каскадов CIC. Незнаю ваших требований к CIC фильтру, но если входная разрядность ~16, число каскадов больше 3-х, и делаете вы это на фпга то лучше вам НЕ делать фильтр хогенауэра. Для проца смотреть надо %)

Разрядность 18бит, исполнение в FPGA. Полоса нужна после децимации, близкая к Fs/2, где Fs - частота дискретизации после прореживания. Неравномерность АЧХ должна быть как можно меньше, 0.05% устроит. Число каскадов цика можно выбирать от 3 до 8, чем меньше - тем лучше. Фильтр Хогенауэра лучший вариант при таких коэффициентах прореживания, важно, что занимает мало места.
Вопрос тот же. Как правильно построить фильтр Хогенауэра с переменным коэффициентом прореживания?
Цитата(des00 @ Dec 2 2009, 14:29) *
В атаче расчет RC фильтра с коррекцией АЧХ CIC фильтра, 13 маткад. Все комментарии на русском. Ничего сложного %)

Спасибо за информацию.


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post
des00
сообщение Dec 2 2009, 11:54
Сообщение #9


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Vitaliy_ARM @ Dec 2 2009, 05:41) *
Фильтр Хогенауэра лучший вариант при таких коэффициентах прореживания, важно, что занимает мало места.


5 каскадов CIC, 18 бит на входе, R = 4096, M = 1, хогенауэр потребует первого интегратора на 78 бит (!!!), 3 каскада 54 бита. И это вы называете лучшим вариантом ? smile.gif Почитайте теорию хогенауэра для начала, перед тем как делать такие заявления %)

Цитата
Вопрос тот же. Как правильно построить фильтр Хогенауэра с переменным коэффициентом прореживания?


рассчитайте отдельные фильтры на все коэффициенты децимации, тогда вам станет ясно как сделать перестраиваемый %) Ответ там лежит на поверхности


--------------------
Go to the top of the page
 
+Quote Post
serebr
сообщение Dec 2 2009, 12:18
Сообщение #10


Частый гость
**

Группа: Свой
Сообщений: 191
Регистрация: 10-01-05
Из: San Francisco Bay, Silicon Valley
Пользователь №: 1 869



Цитата(Vitaliy_ARM @ Dec 2 2009, 17:41) *
Разрядность 18бит, исполнение в FPGA. Полоса нужна после децимации, близкая к Fs/2, где Fs - частота дискретизации после прореживания. Неравномерность АЧХ должна быть как можно меньше, 0.05% устроит. Число каскадов цика можно выбирать от 3 до 8, чем меньше - тем лучше. Фильтр Хогенауэра лучший вариант при таких коэффициентах прореживания, важно, что занимает мало места.
Сказать, что нужна полоса после прореживания, близкая к Fs/2, это значит - ничего не сказать. Надо знать, насколько именно близко? На 1% от Fs/2 или на 0.01%? От этого порядок требуемого фильтра будет меняться в сотни раз, если есть требование подавления "зеркальных" частот при децимации.
В качестве аналогии могу привести такой пример: насколько сильно будут разгоняться протоны в Большом адронном коллайдере? Ответ - близко к скорости света. Так ведь это и ежу понятно, что близко, вопрос в том - насколько близко? На 1% от c или на 0.01%? Или ещё ближе? smile.gif Энергия протонов при этом тоже будет меняться на порядки.
Go to the top of the page
 
+Quote Post
Vitaliy_ARM
сообщение Dec 2 2009, 13:35
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246



Цитата(serebr @ Dec 2 2009, 15:18) *
Сказать, что нужна полоса после прореживания, близкая к Fs/2, это значит - ничего не сказать. Надо знать, насколько именно близко? На 1% от Fs/2 или на 0.01%? От этого порядок требуемого фильтра будет меняться в сотни раз, если есть требование подавления "зеркальных" частот при децимации.
В качестве аналогии могу привести такой пример: насколько сильно будут разгоняться протоны в Большом адронном коллайдере? Ответ - близко к скорости света. Так ведь это и ежу понятно, что близко, вопрос в том - насколько близко? На 1% от c или на 0.01%? Или ещё ближе? smile.gif Энергия протонов при этом тоже будет меняться на порядки.


Уточню. На частоте Найквиста должно быть подавление не хуже 70дБ. Порядок FIR = 110.


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post
des00
сообщение Dec 2 2009, 13:42
Сообщение #12


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Vitaliy_ARM @ Dec 2 2009, 07:35) *
Уточню. На частоте Найквиста должно быть подавление не хуже 70дБ. Порядок FIR = 110.


маловато будет информации smile.gif


--------------------
Go to the top of the page
 
+Quote Post
MKS
сообщение Dec 2 2009, 16:27
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 469
Регистрация: 13-03-05
Пользователь №: 3 315



В догонку, загляните еще в эту тему. Там решается похожая задача с примером в матлабе.
Успехов.
Go to the top of the page
 
+Quote Post
des00
сообщение Dec 3 2009, 04:04
Сообщение #14


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



подумал на досуге о вашей проблеме.

Варианта с нормальной производительностью/ресурсом вижу два
1. 5 каскадов циков с 30/34 бита арифметикой, правда придеться "поесть" памяти.
2. Каскадная децимация, сначала на 128 + FIR, потом уже хогенауэр. Арифметика будет "всего" 43 битная.

Что из этого будет в итоге "весить" меньше решать вам %)

ЗЫ. еще немаловажный вопрос время выхода фильтра на режим при перестройке полосы, помните что интегральные части циков надо сбрасывать.


--------------------
Go to the top of the page
 
+Quote Post
Vitaliy_ARM
сообщение Dec 3 2009, 05:11
Сообщение #15


Знающий
****

Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246



Цитата(MKS @ Dec 2 2009, 19:27) *
В догонку, загляните еще в эту тему. Там решается похожая задача с примером в матлабе.
Успехов.


К сожалению пока нет матлаба. Обязательно гляну при возможности.

Цитата(des00 @ Dec 3 2009, 07:04) *
подумал на досуге о вашей проблеме.

Варианта с нормальной производительностью/ресурсом вижу два
1. 5 каскадов циков с 30/34 бита арифметикой, правда придеться "поесть" памяти.
2. Каскадная децимация, сначала на 128 + FIR, потом уже хогенауэр. Арифметика будет "всего" 43 битная.

Что из этого будет в итоге "весить" меньше решать вам %)

ЗЫ. еще немаловажный вопрос время выхода фильтра на режим при перестройке полосы, помните что интегральные части циков надо сбрасывать.

Тогда вопрос, каким способом делать переменное прореживание?
Делаем прореживание в CICе и при этом используем один FIR, пренебрегая изменением АЧХ CICа?

Почему нельзя пользоваться усечением разрядности CIC?
p.s. приношу извинения за ламерские вопросы, не могу найти именно ответ на вопрос - как правильно сделать переменное прореживание в фильтре Хогенауэра.


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 15th June 2025 - 17:29
Рейтинг@Mail.ru


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