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

 
 
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
des00
сообщение Dec 3 2009, 05:39
Сообщение #16


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

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



Цитата(Vitaliy_ARM @ Dec 2 2009, 23:11) *
Тогда вопрос, каким способом делать переменное прореживание?
Делаем прореживание в CICе и при этом используем один FIR, пренебрегая изменением АЧХ CICа?


как я понимаю вопрос у вас про каскадную децимацию ? Если да то считать надо насколько вы портите нужную вам полосу. Без цифр сложно судить.

Цитата
Почему нельзя пользоваться усечением разрядности CIC?


Если вы про фильтр хогенауэра, как уже сказал читайте теорию у первоисточников

"An Economical Class of Digital Filters for Decimation and Interpolation" EUGENE В. HOGENAUER -> Register Growth

Цитата
Not only is Bmax the MSB at the filter output, but it is also
the MSB for all stages of the filter. This can be shown by
applying modulo arithmetic to the filter output function. For
two’s complement arithmetic, the modulo operation can be
implemented by simply eliminating bit positions above Bmax .


Но если очень хочется то можно, но с умом, но это вам не сильно поможет. Все равно первый интегратор должен быть точным по разрядности. В других типах CIC фильтров усекать между ступенями фильтра можно.

Цитата
не могу найти именно ответ на вопрос - как правильно сделать переменное прореживание в фильтре Хогенауэра.


что сложного то ? логика здравого смысла + сделайте 4 разных цик фильтра и сравните. Перестройка частоты вообще делается элементарно, этот блок на виду у всех. Остается только сделать перестройку усиления фильтра, т.к. у циков он сильно зависит от коэфф. децимации.


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


Знающий
****

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



Сейчас окончательно определился с т.з.
У меня 80Мгц ацп, надо принимать сигналы с полосой 500кГц в диапазоне частот 1-30МГц.
При этом полоса должна переключаться: 500кГц, 250кГц, 125кГц, 62,5кГц, чтобы уменьшить трафик.
Скажите чего еще не хватает?
Цитата(des00 @ Dec 3 2009, 08:39) *
что сложного то ? логика здравого смысла + сделайте 4 разных цик фильтра и сравните. Перестройка частоты вообще делается элементарно, этот блок на виду у всех. Остается только сделать перестройку усиления фильтра, т.к. у циков он сильно зависит от коэфф. децимации.

Т.е. вы предлагаете сделать несколько циков и включать только нужное количество для децимации. При этом надо ставить еще умножители для коррекции усиления?

У меня родилась еще одна мысль, что если сделать один переменный цик + постоянный FIR. Только второму коэффициенты подгружать из вне. Получатеся, что не надо никаких умножителей дополнительных. Скорость переключаться будет один раз за сессию - очень редко. В этом случае нужно рассчитать 4 компенсирующих FIR. Что скажете?


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


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

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



Цитата(Vitaliy_ARM @ Dec 7 2009, 21:24) *
Сейчас окончательно определился с т.з.
У меня 80Мгц ацп, надо принимать сигналы с полосой 500кГц в диапазоне частот 1-30МГц.
При этом полоса должна переключаться: 500кГц, 250кГц, 125кГц, 62,5кГц, чтобы уменьшить трафик.
Скажите чего еще не хватает?

Постановка задачи кардинально отличается от первоначальной формулировки. Скорее всего потребуется переносить частоту 1-30 МГц в область низких частот и там уже заниматься фильтрацией.

Не хватает ещё требований к полосовому фильтру: диапазон пропускаемых частот, неравномерность АЧХ в нём, диапазон задерживаемых частот, коэффициент подавления в нём.

Сообщение отредактировал serebr - Dec 7 2009, 15:51
Go to the top of the page
 
+Quote Post
dmitry-tomsk
сообщение Dec 7 2009, 16:26
Сообщение #19


Знающий
****

Группа: Свой
Сообщений: 672
Регистрация: 18-02-05
Пользователь №: 2 741



Цитата(Vitaliy_ARM @ Dec 3 2009, 09:11) *
К сожалению пока нет матлаба. Обязательно гляну при возможности.


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

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

А почему именно CIC, да потом ещё париться с коррекцией, вытягивать высшие гармоники, загубленные CIC, из шумов квантования? Не проще ли сразу ставить FIR, для таких коэффициентов прореживания два каскада вполне хватит, если совсем прямоугольную АЧХ надо, то три. Считать коэффициенты можно в matlab для ваших вариантов и делать несколько банков коэффициентов для разных коэффициентов прореживания. Если ПЛИС с DSP слайсами, то такие фильтры требуют очень мало ресурсов и работают на 450-550 МГЦ спокойно.
Go to the top of the page
 
+Quote Post
des00
сообщение Dec 7 2009, 16:52
Сообщение #20


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

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



Цитата(Vitaliy_ARM @ Dec 7 2009, 09:24) *
Сейчас окончательно определился с т.з.
У меня 80Мгц ацп, надо принимать сигналы с полосой 500кГц в диапазоне частот 1-30МГц.
При этом полоса должна переключаться: 500кГц, 250кГц, 125кГц, 62,5кГц, чтобы уменьшить трафик.
Скажите чего еще не хватает?


вы будет сносить в 0?

Цитата
Т.е. вы предлагаете сделать несколько циков и включать только нужное количество для децимации. При этом надо ставить еще умножители для коррекции усиления?


Я предлагаю вам сделать в матлабе/маткаде/верилоге нужные вам CIC фильтры и посмотреть что у них общего, а что у них специфическое. Но если исследовательская жилка в вас умерла то вот ответ : нужен перестраиваемый дециматор в середине фильтра (тот самый что везде рисуется со стрелкой вниз) + корректор усиления т.к децимирующий фильтр хогенауэра имеет усиление G = (R*M)^N.

Цитата
У меня родилась еще одна мысль, что если сделать один переменный цик + постоянный FIR. Только второму коэффициенты подгружать из вне. Получатеся, что не надо никаких умножителей дополнительных. Скорость переключаться будет один раз за сессию - очень редко. В этом случае нужно рассчитать 4 компенсирующих FIR. Что скажете?


Какой тогда смысл вообще использовать CIC ?

Цитата(dmitry-tomsk @ Dec 7 2009, 10:26) *
А почему именно CIC, да потом ещё париться с коррекцией, вытягивать высшие гармоники, загубленные CIC, из шумов квантования? Не проще ли сразу ставить FIR, для таких коэффициентов прореживания два каскада вполне хватит, если совсем прямоугольную АЧХ надо, то три. Считать коэффициенты можно в matlab для ваших вариантов и делать несколько банков коэффициентов для разных коэффициентов прореживания. Если ПЛИС с DSP слайсами, то такие фильтры требуют очень мало ресурсов и работают на 450-550 МГЦ спокойно.


Цик очень простой и очень просто перестраивается по частоте. Хотя в данном случае, при таком диком отношении тактовой к символьной проще сделать все с помошью фиров на маках.

2 Vitaliy_ARM

Кстати а основная селекция у вас где будет делаться? просто есть красивый вариант поставить сначала переменный CIC, а потом уже фиксированный FIR на 128. В этом случае CIC можно вообще не корректировать. Подставил ваши параметры в выложенный маткадовский файл, на частоте найквиста после децимации такой цик будет вам заваливать полосу, в худшем случае на дикие 0.00065дБ для 3-х каскадов и 0.00102 дБ для 5ти каскадов %)


--------------------
Go to the top of the page
 
+Quote Post
hobgoblin
сообщение Dec 8 2009, 10:03
Сообщение #21


Местный
***

Группа: Свой
Сообщений: 202
Регистрация: 2-10-06
Из: Петербург
Пользователь №: 20 881



В догонку, на всякий случай, посмотрите вот этот файл:
http://www.mathworks.com/matlabcentral/fx_...1/firdesign.pdf

Там в конце пример расчета в Matlab фильтров для кристалла GC4016. Задача похожа на вашу, только полоса одна - 80 кГц и частота дискретизации в районе 70 Мегов. Может пригодиться.
Go to the top of the page
 
+Quote Post
Vitaliy_ARM
сообщение Dec 8 2009, 10:58
Сообщение #22


Знающий
****

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



Цитата(serebr @ Dec 7 2009, 18:46) *
Постановка задачи кардинально отличается от первоначальной формулировки. Скорее всего потребуется переносить частоту 1-30 МГц в область низких частот и там уже заниматься фильтрацией.

Не хватает ещё требований к полосовому фильтру: диапазон пропускаемых частот, неравномерность АЧХ в нём, диапазон задерживаемых частот, коэффициент подавления в нём.

Да, надо сделать квадратурный приемник пачки радиоимпульсов (АМ) (в дальнейшем предполагается менять демодуляторы). Перенос на ПЧ. Остальное будет в DSP процессоре. На входе стоит NCO+аппаратные умножители, после них надо сделать прореживающий фильтр с перечислинными выше полосами, неравномерность ачх в полосе 0-450кГц не должна превышать 0,1%, подавление на частоте 500кГц и далее должно быть не хуже 80дБ. Под все остальные фильтры требования изменяются пропорционально полосе пропускания. На сколько мне известно, обычный фир с полосами пропускания меньшими 50..100 относительно частоты найквиста, потребляют больше ресурсов, чем CIC+FIR. Задача проредить полосу в 80/2 = 40МГц в полосу 0,5МГц. Нелинейность АЧХ не критична. Желательно залезть в 500..1000 Альтеровских ячеек с двумя фильтрами.

Цитата(des00 @ Dec 7 2009, 19:52) *
Кстати а основная селекция у вас где будет делаться? просто есть красивый вариант поставить сначала переменный CIC, а потом уже фиксированный FIR на 128. В этом случае CIC можно вообще не корректировать. Подставил ваши параметры в выложенный маткадовский файл, на частоте найквиста после децимации такой цик будет вам заваливать полосу, в худшем случае на дикие 0.00065дБ для 3-х каскадов и 0.00102 дБ для 5ти каскадов %)


Полученные IQ каналы будут подаваться на DSP процессор (причем это может подаваться как по проводному интерфейсу так и беспроводному, в общем имею то что имею, тз поставлено такое unsure.gif ), в котором так же будет стоять квадратурный смеситель и FIR с переменной полосой пропускания (основная селекция на нем), после этого демодулятор сигналов.

Забыл упомянуть. Фаза должна быть линейна.


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


Местный
***

Группа: Свой
Сообщений: 221
Регистрация: 10-12-05
Из: Украина
Пользователь №: 12 052



Посмотрите вот сюда http://kanyevsky.kpi.ua/Studentam/labexercise%203.pdf
Там есть Bireciprocal WDF - 2 таких каскада подряд дают ваши -80 дб,
а неравномерность в полосе пропускания - минимальная.
И умножителей не нужно.
Go to the top of the page
 
+Quote Post
des00
сообщение Dec 9 2009, 04:33
Сообщение #24


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

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



Цитата(анатолий @ Dec 8 2009, 11:54) *
Посмотрите вот сюда http://kanyevsky.kpi.ua/Studentam/labexercise%203.pdf
Там есть Bireciprocal WDF - 2 таких каскада подряд дают ваши -80 дб,
а неравномерность в полосе пропускания - минимальная.
И умножителей не нужно.


лаба конечно интересная, но
Цитата
A single filter stage can provide the downsamphng to R=2. To achieve the dovvnsampling to 4,8,16 etc. 2,3,4,... such downsamphng stages are connected in a chain.


явно двумя каскадами не обойдется + характеристики этого фильтра по полосе автора не должны устроить

2 Vitaliy_ARM

Цитата
Задача проредить полосу в 80/2 = 40МГц в полосу 0,5МГц.


Как я понял идет снос в 0 и задача изменить частоту дискретизации с 80МГц до 0.5/0.25/0.125/0.0625МГц, всего в 160/320/640/1280 раз. Я бы рассмотрел вариант 4 каскада CIC на 8/16/32/64 + FIR на 20. В этом случае подавление CIC ом зеркал будет не хуже 80 Дб, но влияние на сам сигнал будет ~0.12Дб. Но коррекцию можно перенести на стоящий дальше фир, который должен добить нужное вам затухание уже по основному каналу.

Цитата
Желательно залезть в 500..1000 Альтеровских ячеек с двумя фильтрами.


500 ячеек на канал, сильно сомневаюсь. Один CIC вылезет вам где то под 400/500 плиток + FIR, скорее всего не менее 64го порядка, раздует где то под ~5000 (это если на логике), или ~3000 (это на умножителях) или ~2000 (это на маках).

Цитата
Забыл упомянуть. Фаза должна быть линейна.


а какая еще она будет то у FIR (CIC это тот же FIR) %)


ЗЫ. я могу сильно ошибаться в расчетах ибо в ДСП еще ламер %)

PPS. так и есть ошибся в 2 раза с коэффициентом децимации, фир не на 20, а на 10ть надо %)


--------------------
Go to the top of the page
 
+Quote Post
des00
сообщение Dec 9 2009, 17:24
Сообщение #25


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

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



Цитата(des00 @ Dec 8 2009, 22:33) *
500 ячеек на канал, сильно сомневаюсь. Один CIC вылезет вам где то под 400/500 плиток + FIR, скорее всего не менее 64го порядка, раздует где то под ~5000 (это если на логике), или ~3000 (это на умножителях) или ~2000 (это на маках).


кстати как вариант посмотрите еще реализацию на полифазных фирах в принципе можно ужаться по ресурсу, но умножители в любом случае потребуются.


--------------------
Go to the top of the page
 
+Quote Post
dmitry-tomsk
сообщение Dec 9 2009, 18:08
Сообщение #26


Знающий
****

Группа: Свой
Сообщений: 672
Регистрация: 18-02-05
Пользователь №: 2 741



Цитата(des00 @ Dec 9 2009, 20:24) *
кстати как вариант посмотрите еще реализацию на полифазных фирах в принципе можно ужаться по ресурсу, но умножители в любом случае потребуются.

А зачем, собственно, они нужны? Неужели нельзя подкопить данные в буфере и переставлять указатель в буфере не на 1, а на M (где M коэффициент прореживания). Для macc архитектуры буфер данных всячески есть, если прореживание в первом каскаде хотя бы в 16 раз (а можно и много больше, но неравномерность АЧХ возрастёт), то частота данных на выходе 80/16 = 5 МГц, для умножителя на 200 МГц (если какой-нибудь слабенький циклон) получаем порядок фильтра 180/5 = 36 с запасом на нестабильность тактовой. Если сделать симметричный фильтр, то уже 72, а это неплохо для первого каскада, 80 дБ подавление вполне можно сделать. Правда, не знаю как циклон справится с умножением и аккумуляцией на 24-25 разряда на 200 МГц, там нет DSP слайсов, spartan 3a или 6 влёгкую такую задачу решит.
Go to the top of the page
 
+Quote Post
des00
сообщение Dec 11 2009, 04:49
Сообщение #27


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

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



Цитата(dmitry-tomsk @ Dec 9 2009, 12:08) *
Неужели нельзя подкопить данные в буфере и переставлять указатель в буфере не на 1, а на M (где M коэффициент прореживания).


вам конечно виднее, но что то мне подсказывает что где то здесь есть подвох.

Цитата
Правда, не знаю как циклон справится с умножением и аккумуляцией на 24-25 разряда на 200 МГц, там нет DSP слайсов, spartan 3a или 6 влёгкую такую задачу решит.


Любите вы высокие частоты аж жуть %) правда оценка в 25 разрядов слишком уж оптимистична. Со смесителя пойдет около 14-18 ти битов, с выхода цика еще будет накинуто битов 6. Итого на фир прилетит ~24х бита и сам он накинет еще бит ~14 итого аккумы нужны будут бит на 38 %) Но автору виднее %)


--------------------
Go to the top of the page
 
+Quote Post
dmitry-tomsk
сообщение Dec 11 2009, 07:02
Сообщение #28


Знающий
****

Группа: Свой
Сообщений: 672
Регистрация: 18-02-05
Пользователь №: 2 741



Цитата(des00 @ Dec 11 2009, 07:49) *
вам конечно виднее, но что то мне подсказывает что где то здесь есть подвох.



Любите вы высокие частоты аж жуть %) правда оценка в 25 разрядов слишком уж оптимистична. Со смесителя пойдет около 14-18 ти битов, с выхода цика еще будет накинуто битов 6. Итого на фир прилетит ~24х бита и сам он накинет еще бит ~14 итого аккумы нужны будут бит на 38 %) Но автору виднее %)

А кто сказал, что нужен CIC? Я имею ввиду децимацию только на FIR, у меня подобную задачу решают два каскада FIR, дают 90 дБ в полосе запирания и 0.001 дБ неравномерность в полосе пропускания. Работают на частоте 400 МГц на virtex.
Go to the top of the page
 
+Quote Post
des00
сообщение Dec 11 2009, 07:38
Сообщение #29


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

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



Цитата(dmitry-tomsk @ Dec 11 2009, 01:02) *
Я имею ввиду децимацию только на FIR, у меня подобную задачу решают два каскада FIR, дают 90 дБ в полосе запирания и 0.001 дБ неравномерность в полосе пропускания. Работают на частоте 400 МГц на virtex.


огласите пожалуйста параметры символьных частот вашего фильтра? Символьная/тактовая на входе, символьная/тактовая на выходе ?


--------------------
Go to the top of the page
 
+Quote Post
dmitry-tomsk
сообщение Dec 11 2009, 08:07
Сообщение #30


Знающий
****

Группа: Свой
Сообщений: 672
Регистрация: 18-02-05
Пользователь №: 2 741



Цитата(des00 @ Dec 11 2009, 11:38) *
огласите пожалуйста параметры символьных частот вашего фильтра? Символьная/тактовая на входе, символьная/тактовая на выходе ?

параметры почти такие же, как и у автора топика
Go to the top of the page
 
+Quote Post
des00
сообщение Dec 11 2009, 08:10
Сообщение #31


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

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



Цитата(dmitry-tomsk @ Dec 11 2009, 02:07) *
параметры почти такие же, как и у автора топика

т.е. нарезка АЦП на 80МГц, интерполяция в 40 раз. Если я правильно понял вашу фразу
Цитата
Неужели нельзя подкопить данные в буфере и переставлять указатель в буфере не на 1, а на M (где M коэффициент прореживания).
вы непрерывно пишете в фильтр на 80МГц, потом берете каждый M ый записанный отсчет и считаете выход фильтра так ? На выходе фильтра у вас уже тактовая 1МГц.


--------------------
Go to the top of the page
 
+Quote Post
dmitry-tomsk
сообщение Dec 11 2009, 08:24
Сообщение #32


Знающий
****

Группа: Свой
Сообщений: 672
Регистрация: 18-02-05
Пользователь №: 2 741



Цитата(des00 @ Dec 11 2009, 11:10) *
т.е. нарезка АЦП на 80МГц, интерполяция в 40 раз. Если я правильно понял вашу фразу вы непрерывно пишете в фильтр на 80МГц, потом берете каждый M ый записанный отсчет и считаете выход фильтра так ? На выходе фильтра у вас уже тактовая 1МГц.

Примерно так, только не интерполяция, а децимация. Фильтр работает не так. Предположим в фильтре 36 коэффициентов и он симметричный, то есть порядок 72. Считаем свёртку на 36 коэффициентов с суммами двух отсчётов, согласно принципу работы симметричного фильтра (см. userguide на dsp48 virtex-4). Затем переставляем указатель на M входных отсчётов и считаем следующую свертку. В обычном fir считаются все отсчёты (указатель переставляется на 1), а затем M-1 выкидываются (то есть работаем зря, о чём и пишет автор Вашей статьи о полифазных фильтрах в первых строках статьи). Полифазный хорош был бы, если частота входных отсчётов очень большая, а коэффциент прореживания маленький, тогда пришлось бы использовать много умножителей и использовать особую структуру фильтра. Здесь же достаточно одного умножителя и обычного MACC фильтра (на каскад, один каскаж в данном случае хоть и обеспечит 70 дБ, но даст очень большую неравномерность в полосе пропуская, порядка 1 дБ).
Go to the top of the page
 
+Quote Post
des00
сообщение Dec 11 2009, 08:38
Сообщение #33


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

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



Цитата(dmitry-tomsk @ Dec 11 2009, 02:24) *
Примерно так, только не интерполяция, а децимация. Фильтр работает не так. Предположим в фильтре 36 коэффициентов и он симметричный, то есть порядок 72. Считаем свёртку на 36 коэффициентов с суммами двух отсчётов, согласно принципу работы симметричного фильтра (см. userguide на dsp48 virtex-4). Затем переставляем указатель на M входных отсчётов и считаем следующую свертку.


понятно, спасибо.

PS. а как вы его перестраиваете по полосе ? ну коэффициенты пересчитать это понятно, но ведь при сужении полосы должна изменятся длинна импульсной характеристики. Или фильтр считается на самую узкую полосу, а ИХ на более широких полосах добивается нулями?


--------------------
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 Текстовая версия Сейчас: 23rd August 2025 - 14:18
Рейтинг@Mail.ru


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