Программа обработки построена по конвейерному принципу. Конвейерный принцип предполагает выполнение последовательных команд. После выполнения последней команды программа возвращается в начало.
На рис. 5.1. изображен рекурсивный ЦФ 2-го порядка:
Рисунок 5.1 – Структурная схема рекурсивного ЦФ 2-го порядка.
Исходя из разностного уравнения, можно получить все требуемые характеристики выходного сигнала в заданный момент времени.
Для рекурсивного фильтра коэффициенты умножения А0, А1, А2 могут либо равняться нулю, либо каким-то конкретным значениям. Порядок рекурсивного фильтра определяется количеством линий задержки в выходном сигнале. В случае, если В0 и В1 равны нулю, фильтр превращается в нерекурсивный (трансверсальный фильтр).
Преимущество рекурсивного ЦФ:
Для реализации требуемой крутизны фильтра требуется небольшое (малое) количество операций.
Недостатки рекурсивного ЦФ:
1. Больший уровень шумов по сравнению с нерекурсивным фильтром.
2. Требуется использовать масштабирование, чтобы система не самовозбудилась.
Для реализации коэффициентов умножения используют знакоразрядную форму представления. Для этого выполним следующие шаги:
1) Возьмем двоичное 15-разрядное число. Два старших разряда отделим от остальных точкой.
2) Разряды, находящиеся слева от точки (два разряда) имеют следующий вес: младший – 20, следующий – 21.
3) Разряды, находящиеся правее точки, имеют веса:
1-й – ;
2-й – ;
.
.
.
13-й – ;
4) Для уменьшения количества операций умножения некоторые разряды инвертируются. Инверсия разряда обозначается знаком «-» над заданным разрядом, - это означает, что данный ес нужно взять со знаком «-».
Пример:
Пусть заданы следующие коэффициенты умножения:
Для умножения заданного коэффициента на цифровой отсчет поступают следующим образом:
ü На первом этапе цифровой отсчет сдвигают влево либо вправо на заданное количество разрядов – это равносильно умножению на 2К.
ü На втором этапе используют прежнее значение на предыдущем такте и новое значение на следующем такте.
Пример: y0=A0×x(nT)=(2-8-2-10)×x(nT).
1-й этап: y0:= 2-8 ×x(nT).
2-й этап: y0:=y0-2-10×x(nT).
Пример программы для приведенных выше коэффициентов умножения: