|
Multirate decimation filter, Как правильно сделать? |
|
|
|
Dec 2 2009, 04:40
|
Знающий
   
Группа: Свой
Сообщений: 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?
--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
|
|
|
|
|
 |
Ответов
|
Dec 3 2009, 05:11
|
Знающий
   
Группа: Свой
Сообщений: 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. приношу извинения за ламерские вопросы, не могу найти именно ответ на вопрос - как правильно сделать переменное прореживание в фильтре Хогенауэра.
--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
|
|
|
|
|
Dec 3 2009, 05:39
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 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 разных цик фильтра и сравните. Перестройка частоты вообще делается элементарно, этот блок на виду у всех. Остается только сделать перестройку усиления фильтра, т.к. у циков он сильно зависит от коэфф. децимации.
--------------------
|
|
|
|
|
Dec 7 2009, 15:24
|
Знающий
   
Группа: Свой
Сообщений: 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. Что скажете?
--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
|
|
|
|
|
Dec 7 2009, 15:46
|

Частый гость
 
Группа: Свой
Сообщений: 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
|
|
|
|
|
Dec 8 2009, 10:58
|
Знающий
   
Группа: Свой
Сообщений: 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 процессор (причем это может подаваться как по проводному интерфейсу так и беспроводному, в общем имею то что имею, тз поставлено такое  ), в котором так же будет стоять квадратурный смеситель и FIR с переменной полосой пропускания (основная селекция на нем), после этого демодулятор сигналов. Забыл упомянуть. Фаза должна быть линейна.
--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
|
|
|
|
Сообщений в этой теме
Vitaliy_ARM Multirate decimation filter Dec 2 2009, 04:40 Михаил_K Цитата(Vitaliy_ARM @ Dec 2 2009, 07:40) В... Dec 2 2009, 06:58 Vitaliy_ARM Цитата(Михаил_K @ Dec 2 2009, 09:58) А ва... Dec 2 2009, 07:04  des00 Цитата(Vitaliy_ARM @ Dec 2 2009, 01:04) В... Dec 2 2009, 08:47   Vitaliy_ARM Цитата(des00 @ Dec 2 2009, 11:47) нет, та... Dec 2 2009, 09:15   serebr Цитата(des00 @ Dec 2 2009, 14:47) ЗЗЫ. Ду... Dec 2 2009, 10:48    des00 Цитата(serebr @ Dec 2 2009, 04:48) Если ф... Dec 2 2009, 11:29     Vitaliy_ARM Цитата(des00 @ Dec 2 2009, 14:29) Но поло... Dec 2 2009, 11:41      des00 Цитата(Vitaliy_ARM @ Dec 2 2009, 05:41) Ф... Dec 2 2009, 11:54      serebr Цитата(Vitaliy_ARM @ Dec 2 2009, 17:41) Р... Dec 2 2009, 12:18       Vitaliy_ARM Цитата(serebr @ Dec 2 2009, 15:18) Сказат... Dec 2 2009, 13:35        des00 Цитата(Vitaliy_ARM @ Dec 2 2009, 07:35) У... Dec 2 2009, 13:42 MKS В догонку, загляните еще в эту тему. Там решается ... Dec 2 2009, 16:27    des00 Цитата(Vitaliy_ARM @ Dec 7 2009, 09:24) С... Dec 7 2009, 16:52  dmitry-tomsk Цитата(Vitaliy_ARM @ Dec 3 2009, 09:11) К... Dec 7 2009, 16:26 hobgoblin В догонку, на всякий случай, посмотрите вот этот ф... Dec 8 2009, 10:03 анатолий Посмотрите вот сюда http://kanyevsky.kpi.ua/Studen... Dec 8 2009, 17:54 des00 Цитата(анатолий @ Dec 8 2009, 11:54) Посм... Dec 9 2009, 04:33  des00 Цитата(des00 @ Dec 8 2009, 22:33) 500 яче... Dec 9 2009, 17:24   dmitry-tomsk Цитата(des00 @ Dec 9 2009, 20:24) кстати ... Dec 9 2009, 18:08    des00 Цитата(dmitry-tomsk @ Dec 9 2009, 12... Dec 11 2009, 04:49     dmitry-tomsk Цитата(des00 @ Dec 11 2009, 07:49) вам ко... Dec 11 2009, 07:02      des00 Цитата(dmitry-tomsk @ Dec 11 2009, 01... Dec 11 2009, 07:38       dmitry-tomsk Цитата(des00 @ Dec 11 2009, 11:38) огласи... Dec 11 2009, 08:07        des00 Цитата(dmitry-tomsk @ Dec 11 2009, 02... Dec 11 2009, 08:10         dmitry-tomsk Цитата(des00 @ Dec 11 2009, 11:10) т.е. н... Dec 11 2009, 08:24          des00 Цитата(dmitry-tomsk @ Dec 11 2009, 02... Dec 11 2009, 08:38
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|