|
|
  |
Multirate decimation filter, Как правильно сделать? |
|
|
|
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 7 2009, 16:26
|
Знающий
   
Группа: Свой
Сообщений: 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 МГЦ спокойно.
|
|
|
|
|
Dec 7 2009, 16:52
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 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ти каскадов %)
--------------------
|
|
|
|
|
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 с переменной полосой пропускания (основная селекция на нем), после этого демодулятор сигналов. Забыл упомянуть. Фаза должна быть линейна.
--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
|
|
|
|
|
Dec 8 2009, 17:54
|
Местный
  
Группа: Свой
Сообщений: 221
Регистрация: 10-12-05
Из: Украина
Пользователь №: 12 052

|
Посмотрите вот сюда http://kanyevsky.kpi.ua/Studentam/labexercise%203.pdfТам есть Bireciprocal WDF - 2 таких каскада подряд дают ваши -80 дб, а неравномерность в полосе пропускания - минимальная. И умножителей не нужно.
|
|
|
|
|
Dec 9 2009, 04:33
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 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ть надо %)
--------------------
|
|
|
|
|
Dec 9 2009, 18:08
|
Знающий
   
Группа: Свой
Сообщений: 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 влёгкую такую задачу решит.
|
|
|
|
|
Dec 11 2009, 04:49
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 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 %) Но автору виднее %)
--------------------
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|