
- •Модуль 14: КИХ – фильтр на C28x
- •Основы теории цифровых фильтров
- •Схема цифрового фильтра во
- •Передаточная функция цифрового фильтра
- •Передаточная функция цифрового
- •Передаточная функция цифрового
- •Диаграмма цифрового фильтра в
- •Фильтр с конечной импульсной характеристикой (КИХ)
- •Фильтр с бесконечной импульсной характеристикой (БИХ)
- •Простая структура КИХ фильтра
- •Свойства КИХ фильтра
- •Пример 1: КИХ фильтр
- •Пример 1: КИХ фильтр
- •Пример 1: КИХ фильтр
- •Пример 2: КИХ фильтр
- •Вычисление периодичности КИХ
- •C реализация КИХ фильтра
- •C реализация КИХ фильтра
- •Реализация КИХ фильтра на
- •Линии задержки с циклическим
- •Аппаратура циклической адресации
- •КИХ фильтр – операция Dual MAC
- •Заключение: циклическая адресация
- •Библиотека фильтров от Texas
- •MATLAB программа расчета фильтра
- •MATLAB программа расчета фильтра
- •Библиотечная функция FIR16
- •Библиотечная функция FIR16
- •Пример использования библиотеки
- •Лабораторная работа 14:

Свойства КИХ фильтра
Заменив z его оригинальным определением:
|
|
|
|
z e pT e( j )T |
нормализовав к T=1, |
|||||
|
опустив (меньше фильтр) и |
|||||||||
|
|
получим |
|
|
|
|
|
|
||
|
|
|
|
|
N 1 |
|
|
|||
|
|
|
H (z) |
|
z e j H (e j ) bk e jk |
|
|
|||
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
k 0 |
|
|
|
|
|
так как e-j2 |
= 1, получим: |
|
||||||
|
|
-j2 k |
N 1 |
|
||||||
|
|
|
N 1 |
|
||||||
|
H (e j( 2 ) ) bk e jk ( 2 ) bk e jk e j 2 k |
H (e j ) |
||||||||
|
|
|
k 0 |
k 0 |
|
Частотная характеристика КИХ фильтр периодична 2 !
Можно ограничить спектр!
14 - 11

Пример 1: КИХ фильтр
x(n) |
|
|
|
|
|
|
|
|
|
|
|
|
|
x(n-1) |
|
|
|
|
|
|
Частотная характеристик |
||||||||||||||||||
|
|
|
|
|
|
|
Z-1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Тип фильтра ? |
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
0.5 |
|
|
|
|
0.5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
y(n) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
b0 = 0..5 b1 = 0..5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
z |
e |
pT |
1 |
|
|
|||||||||||||||||
0 |
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
; p j ; 2 f; T fA |
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
H (z) b z0 |
b z 1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
|
|
0 |
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ffA = частота дискретизации |
|||||||||||||||||
|
|
H (z) 0.5(1 z |
1 |
) |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
A |
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
j 2 f |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
H ( j ) 0.5(1 e |
|
|
|
|
f A |
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
H ( j ) 0.5(1 cos(2 |
|
|
|
f |
) |
j sin(2 |
f |
)) |
|
|
|
|
|
|
|
|||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fA |
|
|
fA |
|
|
|
|
|
|
|
|||
|
|
|
H ( j ) |
|
Re2 Im2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
14 - 12

Пример 1: КИХ фильтр
(продолжение)
|
H ( j ) 0.5(1 cos(2 |
f |
) |
j sin(2 |
f |
)) |
||||
|
|
|||||||||
|
|
|
|
|
|
fA |
|
fA |
||
|
H ( j ) |
|
Re2 Im2 |
|
|
|
|
|
||
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|H(jω| (j )|)|
1
0..5
1. f 0 |
: | H(j |
2 f 0.125* fA |
: | H(j 0.92 |
3 f 0.25* fA |
: | H(j 0.707 |
4 f 0.375* fA |
: | H(j 0.382 |
5 f 0.5 * fA |
: | H(j 0 |
Тип фильтра: нижних частот
|
|
|
f/f |
|
|
|
|
|
|
|
|
.25 |
0.5 |
f/fA |
|
A |
|||
0. |
. |
|
14 - 13

|
|
|
|
|
|
|
Пример 1: КИХ фильтр |
|||||||||||
|
|
|
|
|
|
|
|
(продолжение) |
|
|
||||||||
|
|
H ( j ) 0.5(1 cos(2 |
f |
) j sin(2 |
|
f |
)) |
|
|
|
||||||||
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
fA |
|
fA |
Наложение спектра, |
|||||
|
|
H ( j ) |
|
Re2 Im2 |
|
|
|
|
||||||||||
|
|
|
|
|
|
|
.5 f |
|||||||||||
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
если f > 0. |
A |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
Входная частота будет |
|||||||||||
|
1. f 0.625* fA |
: | H(j 0.382 |
|
|
|
|
||||||||||||
|
2 f 0.75* fA |
: | H(j 0.707 |
|
|
|
|
ограничена 0.5*f |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
A |
|
|
3 f 0.875* fA |
: | H(j 0.92 |
|
|
|
|
дополнительным |
|||||||||||
|
4 f fA |
: | H(j 1 |
|
|
|
|
входным фильтром |
|||||||||||
|
|
|
|
|
|
|
|
|||||||||||
|H(jω| (j )| |
|
|
|
|
|
|
|
|
нижних частот |
|||||||||
)| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0..5
.25 |
0.5 |
f/f |
|
0. |
. |
|
|
f/fA |
|||
|
|
|
A 14 - 14 |

Пример 1: КИХ фильтр
(продолжение)
Решение: использовать антиалай-зинговый фильтр на входе для ограничения входной частоты на fA/2. x[n]
x(t) |
|
|
|
|
|
|
АЦП |
|
|
|
КИХ |
|
y[n |
||||
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Аналоговый
антиалайзинговы й фильтр
14 - 15

Пример 2: КИХ фильтр
x(n) |
|
|
|
|
|
|
|
|
|
x(n-1) |
b0 = 0.5 b1 = - 0.5 |
||||
|
|
|
|
|
Z-1 |
||||||||||
|
|
|
|
|
|
|
|
|
|
Частотная характеристик |
|||||
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0.5 |
|
|
|
|
|
|
|
-0.5 |
|
|
|
|
|
|
Тип фильтра ? |
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+
y(n)
Замечание : изменение b1 с +0.5 на -0.5 !
|H(jω| (j )|)|
1 |
|
|
|
Тип фильтра: |
|
|
|||
|
|
|
|
|
0..5 |
|
|
|
верхних частот |
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.25 |
0. |
5 |
f/f |
|
||
0. |
. |
|
||||
f/fA |
||||||
|
|
|
|
|
|
A 14 - 16 |

|
Пример 3: КИХ фильтр |
|
||||||||
|
|
-1) |
|
|
|
|
|
|
|
|
|
|
x(n(n- ) |
|
-2) |
|
Предположим,, что нет предыдущ |
||||
|
-1 |
|
-1 |
|||||||
x(n)( ) |
|
x(n(n- ) |
|
|||||||
Z-1 |
|
Z-1 |
|
отсчетов |
|
-1) = 0; X(-2) = 0 |
||||
0.25 |
.5 |
|
0.25 |
|
|
X(0)( ) = 20;; X((- ) |
; (- ) |
|||
|
|
|
и пусть |
|
|
|
||||
. |
0. |
|
|
. |
|
|
|
|
|
|
|
|
|
|
|
|
|
b0 |
.25 b = 0.5 b = 0.25 |
||
|
|
|
|
|
|
|
= 0. |
1 . |
2 . |
|
|
|
+ |
|
|
+ |
|
0 |
|
1 |
2 |
$ |
|
|
|
y(n)( ) |
|
|
|
|
||
Вход |
|
|
|
|
|
|
|
|
|
|
40 |
|
|
|
|
|
|
|
|
|
|
|
40 |
|
|
|
|
|
|
|
|
|
30 |
|
|
|
|
|
|
|
|
|
|
20 |
|
|
|
|
|
|
|
|
|
|
10 |
|
12 |
|
|
timeti |
|
|
|
|
|
|
|
sat sun |
|
|
|
|
||||
montuewedt |
fri |
|
|
|
|
|||||
thut fri |
s |
t s |
|
|
|
|
|
|
||
$ |
Выход |
|
|
|
|
|
|
|
|
|
40 |
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
30 |
|
|
|
|
|
|
|
|
|
|
20 |
|
|
|
|
|
Усредненное вычисле |
||||
10 |
|
|
|
|
|
|
|
fri |
sun |
timeti |
montuewedthu fri |
sats t s |
14 - 17 |
||
t |
t |
|
|

Вычисление периодичности КИХ
фильтра
Младший
адрес
памяти X0
X1
Старший X2 адрес памяти
Перед вычислением второго результата КИХ фильтра:
X0 -- последний отсчет
старое X0 становиться новым X1
старый X1 становиться
новым X2
“обновление
линии
задержки”
Какое перемещение необходимо выполнить сна
14 - 18

C реализация КИХ фильтра
/***************************************************************
*Функция: IQssfir()
*Описание: IQmath FIR фильтр n-порядка.
*y(k) = a(0)*x(k) + a(1)*x(k-1) + ... + a(n-1)*x(k-n+1)
*DSP: TMS320F2812, TMS320F2811, TMS320F2810
*Подключаемые файлы: DSP281x_Device.h, IQmathLib.h
*Функция прототип: _iq IQssfir(_iq*, _iq*, Uint16)
*Применение: y = IQssfir(x, a, n);
*Входные параметры: x = указатель на массив входных отсчетов
* |
a |
= |
указатель на массив |
коэффициентов |
* |
n |
= |
число коэффициентов |
|
* Возвращаемое значение: y = результат
*****************************************************************/
14 - 19

C реализация КИХ фильтра
_iq IQssfir(_iq *x, _iq *a, Uint16 n)
{
Uint16 i; |
// переменная общего назначения |
_iq y; |
// результат |
_iq *xold; |
// указатель на линию задержки |
/*** Настройка указателей ***/ |
|
a = a + (n-1); |
// а указывает на последний коэффициент |
x = x + (n-1); |
// x указывает на последний элемент |
xold = x; |
// временного буфера |
/*** Последний цикл не требует обновления линии задержки ***/
y = _IQmpy(*a--, *x--);
/*** Обработка циклов ведется с конца в начало ***/
for(i=0; i<n-1; i++)
{
y = y |
+ _IQmpy(*a-- |
, *x);// цикл |
фильтра |
*xold |
-- = *x--; |
// |
обновление линии задержки |
}
return(y);
}
14 - 20