Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ФВЧ 2-го порядка
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
RCray
Приветствую. Разрешите задать накопившиеся вопросы:

Дано: Использую сейчас цифровой ФВЧ Баттерворта 2-го порядка, чтобы давить низко-частотные вариации постоянной составляющей с датчика. Частота оцифровки 4 КГц, частоты среза 0.05-0.5 Гц.

1. Какой цифровой ФВЧ (2-го порядка) будет с наименьшей групповой задержкой? Нелинейности в полосе пропускания не нужны. Всё работает как надо, но не даёт покоя мысль, что вдруг можно лучше.

2. Текущий фильтр рассчитал в Matlab'е, но при просмотре Magnitude Response, Phase Response, Group Delay на низких частотах там аппроксимация на графиках уже не очень получается - частота среза очень маленькая. Сделал расчёт набора своих фильтров, набросав простой скрипт в Python'e. Проверил - Phase Response, Group Delay полностью совпадают с Matlab. Захотелось добавить в свою модель Magnitude Response и тут нашла коса на камень. Как расчитать аналоговый ФНЧ 2-го порядка через f и f0 - понятно. А вот какая конечная формула расчёта аналогового ФВЧ 2-го порядка через f и f0 - не могу сообразить.

3. С этим фильтром в фиксированной точке для обсчёта данных приходится оперировать 64-битными числами. Это опять же из-за очень низкой частоты среза по отношению к частоте оцифровки. Коэффициенты фильтра 27-бит, промежуточные вычисления даже в 64-бита не влазят - приходится сдвигать туда-обратно. Ресурсов пока хватает, но хотел бы знать вдруг можно проще.

4. Раньше использовал QEDesign, очень помогала в своё время, но теперь не знаю где взять сломанную версию.


Заранее спасибо.
Fat Robot
1. Обычно для фильтров интересна неравномерность ГВЗ, а не ее абсолютное значение. Если вам это интересно, то для компенсации неравномерности рассчитывают всепропускающий фильтр-компенсатор, который включают последовательно с фильтром, обеспечивающим требуемую ачх. См. описание ф-ции iirgrpdelay

2. см в матлабе описание ф-ции freqz. Она используется для визуализации характеристик фильтра. В качестве входного параметра она принимает в том числе
f — Frequencies, specified as a vector. f must have at least two elements. When the unit of time is seconds, f is expressed in hertz. Data Types: double
т.е. вы можете сделать любое разрешение при визуализации в любом интересующем вас диапазоне

3. fdatool в матлабе позволяет интерактивно квантовать входы/выходы, коэффициенты, промежуточные результаты

4. nuhertz filter solutions. есть на фтп

В качестве решения при таких соотношениях частот можно рассмотреть: y(t) = x(t) - фнч(x(t)).

В качестве фнч в таком включении хорошо работает и просто реализуется каскад: CIC-дециматор 1-го порядка + CIC-интерполятор 2-го порядка, при этом R_dec = R_int.

Цитата(RCray @ Dec 12 2014, 13:09) *
RCray
1. Понимаю, что вы имели ввиду, но это скорее верно для digital communication. Здесь же нужно обработать показания датчика и по результатам выдать управляющий сигнал как можно скорее - тут как раз абсолютное значение важно и чем меньше тем лучше.

2. Спасибо, посмотрю в эту сторону.

3. Попробовал я поработать с тем, что даёт Matlab и как-то перестал ему доверять. Наверно я где-то неправильно интерпретирую выданные результаты квантования и разрядности промежуточного результата. Они у меня сильно отличаются от практики.

4. Попробовал - действительно стоящий инструмент. Буду использовать как дополнительное подспорье. Спасибо за наводку. Кстати NFS сгенерировал мне и transfer function для моего ФВЧ, чем дал подсказку как её вывести для общего случая.


Пробовал я y = x - ФНЧ(x), для моего случая результат получается чуть хуже, чем в лоб.


Цитата(Fat Robot @ Dec 12 2014, 17:36) *
Fat Robot
Я решал схожую задачу так:
- проектировал набор фильтров, удовлетворяющих первоочередным условиям задачи. В моем случае это были порядок и АЧХ аналогового фильтра.
- Подавал на вход каждого фильтра единичный скачок (step function).
- Выбирал фильтр с минимальным временем реакции. Вариантов в моем случае было не много.

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

Цитата(RCray @ Dec 13 2014, 07:18) *
1. Понимаю, что вы имели ввиду, но это скорее верно для digital communication. Здесь же нужно обработать показания датчика и по результатам выдать управляющий сигнал как можно скорее - тут как раз абсолютное значение важно и чем меньше тем лучше.

RCray
У меня вариантов с приемлемыми АЧХ, временем отклика и ресурсами микроконтроллера действительно не так много. Оптимальные варианты нашел - вот хотел уточнить здесь уже факультативные вопросы так сказать.

Спасибо.


Цитата(Fat Robot @ Dec 14 2014, 16:46) *
Я решал схожую задачу так:
- проектировал набор фильтров, удовлетворяющих первоочередным условиям задачи. В моем случае это были порядок и АЧХ аналогового фильтра.
- Подавал на вход каждого фильтра единичный скачок (step function).
- Выбирал фильтр с минимальным временем реакции. Вариантов в моем случае было не много.

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


RCray
Для ФНЧ Боттерворта 2-го порядка:
G(w) = H(s)H(-s) = 1 / [1 + (w/w0)**4]

В итоге после скитаний я наконец узнал про полиномы Баттерворта. После подстановки вручную получил очень простую формулу для ФВЧ Боттерворта 2-го порядка:
G(w) = H(s)H(-s) = 1 / [1 + (w0/w)**4]

Блин ну почему авторам статей об этот сразу не написать!
billidean
Добрый день.
Кто-нибудь может помочь:
нужна линейная формула с коэффициентами ФНЧ Баттерворта 6-го порядка с полосой 40 кГц. Далее я её буду реализовывать в ПЛИС на vhdl, поэтому она должна быть линейной с операциями +, - и *.

Заранее спасибо.
TSerg
Filter Solutions © Nuhertz

Цитата(RCray @ Dec 15 2014, 09:19) *
Блин ну почему авторам статей об этот сразу не написать!


Это написано в любом талмуде по ЦОС
L(w^2) = 1 + w^(2n);
RCray
Serg, what is L and where is cut-off frequency dependency?

Цитата(TSerg @ Dec 15 2014, 12:11) *
L(w^2) = 1 + w^(2n);



Не могли бы вы переформулировать свой вопрос?

Цитата(billidean @ Dec 15 2014, 09:58) *
Добрый день.
Кто-нибудь может помочь:
нужна линейная формула с коэффициентами ФНЧ Баттерворта 6-го порядка с полосой 40 кГц. Далее я её буду реализовывать в ПЛИС на vhdl, поэтому она должна быть линейной с операциями +, - и *.

Заранее спасибо.

billidean
Открыл отдельную тему http://electronix.ru/forum/index.php?showtopic=124926
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.