Страница 1 из 2

Практическа реализация цифрового фильтра

Добавлено: Вс окт 12, 2014 01:37:39
isx
Решил выделить этот вопрос в отдельную тему.
Теоретических аспектов работы фтлльтра в интернете полно, но вот практических реальзаций не очень.
Обьясните пожалуйста, как все-таки на практике все происходит. Изучая КИХ сложилось такое впнчатление об НЧ фильтрах. Сначала в буфер записываем значения с ацп, затем, когда пройдет один период порогового сигнала(максимальной пропускаемой частоты) преобразоваваем эти значения плавно в прямую, соединяющую начальную и конечную точки массива.
Логика подсказывает, что получится какая-то угОльная херня, но оазмышления по теории не дают других вариантов....

Re: Практическа реализация цифрового фильтра

Добавлено: Вс окт 12, 2014 09:19:27
misyachniy
На структурной схеме фильтра:
http://www.kit-e.ru/articles/cad/2010_10_61.php
Видно, что для получения одного значения сигнала на выходе фильтра нужно взять значение нескольких выборок, помножить каждую на отдельный коэффициент, затем сложить вместе.

Re: Практическа реализация цифрового фильтра

Добавлено: Вс окт 12, 2014 16:06:40
isx
А откуда коэфициент брать? Сколько выборок нужно сделать и лт чего зависит их количество?

Re: Практическа реализация цифрового фильтра

Добавлено: Вс окт 12, 2014 16:31:46
Goodefine
Была когда-то тема...

Re: Практическа реализация цифрового фильтра

Добавлено: Вс окт 12, 2014 18:39:58
isx
За ссылку спасибо, очннь интересная ветка.
Попробую поставить вопрос по другому :)
Нам, чтоб реализовать фильтр нужна текущая выборка, предыдущие выборки и коэфициент. Это теоретическая сторона. На практике нам нужно взять текущее значение напряжения с ацп и записать его в буфер(это будет предыдущая выборка), считать новое значение с ацп(это будет текущая выборка) и
Спойлерпопрыгать с бубном вокруг костра
что-то сделать (это должно стать кофициентом).
Вот я как раз и не пойму, что нужно сделать на практике для получения коэфициента... :dont_know:

Re: Практическа реализация цифрового фильтра

Добавлено: Вс окт 12, 2014 19:34:23
misyachniy
isx писал(а):А откуда коэфициент брать? Сколько выборок нужно сделать и лт чего зависит их количество?
Предполагает научиться задавая вопросы? ;-)

Частота выборок зависит от частоты сигнала.
О теореме Котельникова расказывать не буду.

Количество выборок зависит от порядка и типа фильтра который требуется.

Коэффициенты для фильтров профессионалы "берут" в тех программах, в которых решают другие задачи, например Matlab.

Для практиков и "обычных" инженеров программы ищутся в Гугле по строке "программа для расчета коэффициентов фильтра"
Например http://www.winfilter.20m.com/

Re: Практическа реализация цифрового фильтра

Добавлено: Вс окт 12, 2014 21:10:14
isx
Тоесть изучать поднаготную теории фильтров не имеет смысла и нужно использовать готовые программы?

Re: Практическа реализация цифрового фильтра

Добавлено: Вс окт 12, 2014 21:32:59
Goodefine
Для общего развития и более глубокого понимания, успешного обхода вероятных граблей можно и изучить. Но в большинстве случаев достаточно знать типовые области применения различных фильтров аналоговой природы и их особенности. Затем изучить какие ограничения накладывает цифра (ее дискретность), как будет влиять частота дискретизации, тип характеристики - КИХ, хвостатые БИХ и т.п. А сами коэффициенты вычислять довольно трудоемкое занятие (погуглите синтез цифровых фильтров), которое нужно предоставить специально обученной программе. Я вижу такой путь.

Re: Практическа реализация цифрового фильтра

Добавлено: Вс окт 12, 2014 22:30:23
isx
Спасибо за информацию. Попробую завтра посмотреть программки. Как вопросы появятся вернусь :)

Re: Практическа реализация цифрового фильтра

Добавлено: Сб окт 18, 2014 14:36:14
IRMADE
[quote="isx"]Решил выделить этот вопрос в отдельную тему.

Цифровые фильтры НЧ, полосовые дискриминаторы, ВЧ, строятся очень просто. Я разработал такие на основании информации, полученной в "Интегральные микросхемы с КМОП структурами", Р. Милин, Г. Гарланд, Москва, Энергия, 1979г. Изучайте!

Re: Практическа реализация цифрового фильтра

Добавлено: Сб окт 18, 2014 17:43:34
КРАМ
isx писал(а):Тоесть изучать поднаготную теории фильтров не имеет смысла и нужно использовать готовые программы?
Если хотите свободно и осмысленно применять цифровую фильтрацию, то желательно разобраться в существе...
Представьте себе обычную RC - цепочку(резистор со входа на выход и емкость параллельно выходу).
Это простейший пропорционально-интегрирующий фильтр (с учетом сопротивления нагрузки).
По сути ИНТЕГРАТОР. Конденсатор НАКАПЛИВАЕТ напряжение пропорционально времени накопления и току заряда...
То есть он СУММИРУЕТ мгновенные значения входного напряжения с множителем определяемым постоянной времени цепи.
То есть математическим аналогом такого фильтра будет СУММАТОР последовательных дискретных значений входного напряжения с определенными коэффициентами. Эти коэффициенты зависят от времени выборки по отношению к текущему моменту времени.
Вот и делают ОКНО АНАЛИЗА, где размещают все ПОСЛЕДНИЕ значения выборок сигнала. Эти значения умножают на коэффициенты окна анализа и суммируют.
В простейшем случае коэффициенты одинаковы и равны 1/N, где N - число выборок в окне (длина окна или длительность накопления - это одно и то же). То есть фактически находят СРЕДНЕЕ за период анализа.
Получился ФНЧ.
А чтобы из ФНЧ сделать ФВЧ нужно ВЫЧЕСТЬ из входного сигнала значения ФНЧ.
Это эквивалентно снятию сигнала в RC цепочке не с конденсатора, а с резистора. Фактически дифференцирующая RC цепочка суть есть разность между входным сигналом и интегрирующей RC цепочкой из тех же элементов.
Попробуйте повернуть схему и Вы в этом убедитесь.
Так вот, в ФВЧ КИХ коэффициенты ОТРИЦАТЕЛЬНЫЕ...
:)
БИХ работает ровно точно также, но суммирование ведут на лету и с взвешивающим коэффициентом, который понижает влияние истории накопления на текущее суммирование. БИХ высоких порядков по сути являются симбиозом простейшего БИХ и КИХ...

Re: Практическа реализация цифрового фильтра

Добавлено: Сб окт 18, 2014 19:22:37
uk8amk
WinFilter не выходит скачать.
Если у кого получилось, выложите пожалуйста.

Re: Практическа реализация цифрового фильтра

Добавлено: Сб окт 18, 2014 19:24:49
dr.doc
Рекурсивный ФНЧ:
Y(n) = Na*Yn + Nb*Xn >> k ; где Yn - предыдущий отсчет, Xn - текущий, k - целочисленный делитель степени 2-ки, Y(n) - текущее выходное значение.
http://we.easyelectronics.ru/Theory/che ... fRLtr.html

Пример реализации:
Спойлер; --------------------------------------
; Собственно цифровой фильтр
;---------------------------------------
; Y(n) = Na*Yn + Nb*Xn >> k ; где Yn - предыдущий отсчет, Xn - текущий, k - целочисленный делитель
; степени 2-ки

; Nb*Xn
; r20,r19,r18*r17,r16 = R7:R3 & clear r2 40 cikles

ldi r19,High(Nb) ; Constants
ldi r18,Low(Nb)

clr r20 ; значение записано выше

rcall D_MUL
mov r21,r3 ; save
mov r22,r4
mov r23,r5 ; max 3 byte
; Na*Yn
ldi r17,High(Na)
ldi r16,Low(Na)
lds r18,YnI+2 ; Low
lds r19,YnI+1 ; High
lds r20,YnI+0
rcall D_MUL
; Введем дополнение для увеличения точности результата (сохранение остатка при делении на 8)
ldi r16,K
dividesFI:
lsr r6 ; MSB
ror r5
ror r4
ror r3

dec r16
brne dividesFI
;---------------------------
add r21,r3
adc r22,r4
adc r23,r5

sts YnI+0,r23 ; MSB
sts YnI+1,r22
sts YnI+2,r21
; ror - деление на степень 2-ки
ldi r16,K
dividesI:
lsr r23 ; MSB
ror r22
ror r21

dec r16
brne dividesI ; Ответ в r22,r21
От частоты дискретизации и коэффициентов зависит частота среза.

Re: Практическа реализация цифрового фильтра

Добавлено: Чт окт 23, 2014 00:29:07
isx
Всем спасибо большое за ответы. Вроде начинаю понимать суть дела :) .
КРАМ писал(а):Если хотите свободно и осмысленно применять цифровую фильтрацию, то желательно разобраться в существе...
Не люблю работать с тем, о чем нифига не знаешь. Программы это хорошо, но вот если возникнет проблема, то не понимая сути, ничего сделать не сможешь :dont_know: ..
КРАМ писал(а):В простейшем случае коэффициенты одинаковы и равны 1/N, где N - число выборок в окне (длина окна или длительность накопления - это одно и то же). То есть фактически находят СРЕДНЕЕ за период анализа.
Тогда получается, что частота среза будет зависеть не только от выбранного коэффициента, но и от частоты выборок и длины окна?

Re: Практическа реализация цифрового фильтра

Добавлено: Чт окт 23, 2014 07:20:32
КРАМ
isx писал(а): Тогда получается, что частота среза будет зависеть не только от выбранного коэффициента, но и от частоты выборок и длины окна?
Тогда получается, что частота среза зависит ТОЛЬКО ОТ ДЛИНЫ ОКНА во временнОй интерпретации.
То есть для получения среза в 1 Гц потребуется накопить данные за время в 1 секунду. Независимо от числа выборок.
Частота выборок должна соответствовать требованиям теоремы Котельникова, то есть быть больше удвоенной верхней частоты ВХОДНОГО спектра. Плюс к этому нужно добавить требования по подавлению зеркального спектра при преобразовании. Эти требования формируются на основании имеющихся параметров использованного входного аналогового фильтра, который подавит зеркальный спектр.
Частота среза НЕ ЗАВИСИТ ОТ КОЭФФИЦИЕНТОВ оконной функции. От формы окна зависит ФОРМА АЧХ фильтра (параметры склонов, пульсации АЧХ, величины подавления в полосе заграждения и т.п.)

Re: Практическа реализация цифрового фильтра

Добавлено: Чт окт 23, 2014 09:21:25
isx
КРАМ писал(а): Плюс к этому нужно добавить требования по подавлению зеркального спектра при преобразовании. Эти требования формируются на основании имеющихся параметров использованного входного аналогового фильтра, который подавит зеркальный спектр.
А можно подробнее про этот фильтр? Судя из прочитанного:
Зеркальная частота - частота в супергетеродинах, симметричная ( зеркальная) частоте настройки по отношению к частоте гетеродина.
зеркальная частота будет равна 1МГц (скорость работы ацп) -+ 20кГц (максимальная звуковая частота). Если это так, то такую частоту вообще не будем слышать....

Re: Практическа реализация цифрового фильтра

Добавлено: Чт окт 23, 2014 09:35:40
КРАМ
Все очень просто. При семплировании входного сигнала неизвестно сколько периодов этого сигнала находилось между выборками.
Получается стробоскопическое преобразование.
https://ru.wikipedia.org/wiki/Алиасинг
Ну а фильтр обрезающий эти паразитные полосы преобразования называется антиалиасинговым (сглаживающим)...

Re: Практическа реализация цифрового фильтра

Добавлено: Чт окт 23, 2014 10:26:47
isx
Чёт я запутался... Это получается нам надо срезать все частоты свыше звукового диапазона перед тем как подать их на ацп? Но по сути, они сами должны срезаться из-за недостаточной частоты выборок...

Re: Практическа реализация цифрового фильтра

Добавлено: Чт окт 23, 2014 10:39:53
КРАМ
Нет, нужно срезать все частоты выше половины частоты дискретизации.
Вы имеете право корректно оцифровать только тот входной сигнал, который удовлетворяет теореме Котельникова.
Все остальное должно быть подавлено.
Далее Вы производите цифровую фильтрацию внутри преобразованного спектра.
Например.
Есть звуковой диапазон 20 кГц. Вы его преобразовали с частотой семплирования 96 кГц. Все что выше 48 кГц должно быть подавлено с динамическим диапазоном АЦП.
Для 10 разрядного АЦП это будет 60 дБ. То есть на частоте 48 кГц уже должно быть -60 дБ. А срез антиалиасингового ФНЧ должен быть выше входного спектра, то есть 20 кГц.
Вот и считайте этот входной ФНЧ

Re: Практическа реализация цифрового фильтра

Добавлено: Чт окт 23, 2014 19:38:13
isx
Спасибо большое за подробные разъяснения :)
Пока вопросов нет. Скоро перейду к практике, думаю, с ней и вопросы появятся :) .