Компенсатор фільтра FIR при використанні фільтра децимації CIC


10

При децимулюванні вузькосмугового сигналу з каскадним фільтром-гребінцем (CIC) , який фільтр FIR є більш підходящим для компенсації частоти відповіді CIC?



так, цей ...
Августо Зебадуа

Відповіді:


3

Немає однозначної відповіді на ваше запитання: як і будь-яка проблема дизайну фільтрів, це залежить від ваших вимог. Як досить добре описано на сторінці Вікіпедії , фільтри CIC (каскадний інтегратор-гребінець) складаються з декількох пар ступенів інтегратора та гребінця (звідси назва). Кожна стадія інтегратора-гребінця має сукупний імпульсний відгук, який еквівалентний фільтру боксерського автомобіля (тобто такому, що має прямокутну частотну характеристику). Частотна характеристика (величина) боксара має форму, що нагадує функцію sinc, тому загальна структура CIC матиме відповідне значення, схоже на функцію sinc, прийняту на деяку потужність , де NNN - кількість ступенів інтегратора-гребінця.

Однак не існує чимало ручок для налаштування на основі будь-яких вимог, що стосуються конкретних програм. Ви можете налаштувати коефіцієнт децимації / інтерполяції структури CIC, затримки гребінця та кількість ступенів, але ви все ще застрягли з частотою сигналу частоти, що не є особливо ідеальним, оскільки це не плоско поперек основна частка і має відносно високі бічні кулі. Отже, для ЦІК типовим є інший фільтр, який "очищає" загальну відповідь.

Руб: що вам потрібно від будь-якого компенсаційного фільтра, який ви поставите після CIC, визначатиметься вашою заявою. Що дійсно важливо - це відповідь загального каскаду, який ви могли б обмежити, виходячи з потреб своєї програми. Немає конкретного фільтра, який би був "найбільш підходящим".


Там, де ви написали "один з прямокутною частотною характеристикою", ви не маєте на увазі "один з прямокутною імпульсною відповіддю?"
nibot

Так, ви праві. Дякуємо, що вказали на помилку.
Джейсон R

4

Було подібне запитання, https://dsp.stackexchange.com/a/1551/306 , і далі - підмножина відповіді з іншого поста.

Як правило, для компенсації CIC-фільтра зворотний відгук CIC-фільтрів може бути використаний для генерації компенсаційного фільтра. CIC має відповідь 2

Н(ω)=|сiн(ωD/2)сiн(ωМ/2)|N

Де D - диференційована затримка, M - швидкість децимації, а N - порядок фільтрів (кількість каскадних фільтрів). Зворотне можна вказати як

Н(ω)=|сiн(ωМ/2)сiн(ωD/2)|N

Як тільки ми отримаємо частотну характеристику компенсаційного фільтра, ми можемо просто вибрати довжину фільтра FIR, яку ми бажаємо. Тривалість FIR залежить від застосування. Очевидно, що чим довше фільтр FIR, тим краща компенсація.

Далі наведені сюжети цієї прямої компенсації.

Далі йде код Python для створення частотних характеристик та графіків.

імпортувати numpy як np з numpy import sin, abs, pi import pylab

D = 1; M = 7; N = 3

Hfunc = lambda w : abs( (sin((w*M)/2)) / (sin((w*D)/2.)) )**N
HfuncC = lambda w : abs( (sin((w*D)/2.)) / (sin((w*M)/2.)) )**N

w = np.arange(1024) * pi/1024

G = (M*D)**N
H = np.array(map(Hfunc, w))
Hc = np.array(map(HfuncC, w))
# only use the inverse (compensation) roughly to the first null.
Hc[int(1024*pi/M/2):] = 1e-8
plot(w, 20*log10(H/G))
plot(w, 20*log10(Hc*G))
grid('on')

сiнc-1

1 Altera, "Розуміння фільтрів компенсації CIC"

2 Р. Ліонс, "Розуміння цифрової обробки сигналів", 2-е видання, Зал Прентісе, річка Верхнє сідло, Нью-Джерсі, 2004


Ви показуєте потрібну частотну характеристику у компенсаційному фільтрі ... але як ви отримуєте коефіцієнти фільтра, які виробляють фільтр, який наближає цю відповідь? Я думаю, що це запитання.
nibot

0

ISOP (Інтерпольований поліном другого порядку) часто використовується для компенсації пропускної здатності прохідної смуги CIC.

Відповідь Matlab цього фільтра може бути показана за допомогою:

alpha = 0.01 ;
b     = [1, alpha, -alpha] ; 
h     = mfilt.firsrc(1,1,b)
freqz( b )

Вибір альфа для ваших вимог - складна частина. Найгірший варіант моделювання грубої сили, перекидаючи на 0 до 0,5 з кроком 0,001, знаходячи альфа, що призводить до найкращої компенсації забивання. Визначення найкращої компенсації заглушки як мінімальної помилки на межі вашої смуги пропускання.

Для ефективності цей фільтр зазвичай розміщується з нижчою швидкістю передачі даних перед CIC для інтерполяції та після CIC для децимації.


Див. Див. Dsp.stackexchange.com/questions/19584/… для іншого тлумачення / пояснення цього підходу до компенсації.
Дан Бошен
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.