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

Библиотечная функция FIR16
Объявление объекта:
typedef struct { |
|
|
|
|
|
|
|
|
|
||
|
long *coeff_ptr; |
/* указатель на коэф. фильтра */ |
|||||||||
|
long *dbuffer_ptr; |
/* указатель на буфер задержки*/ |
|||||||||
|
int cbindex; |
|
|
/* индекс циклического буфера */ |
|||||||
|
int order; |
|
|
/* порядок фильтра |
|
|
*/ |
||||
|
int input; |
|
|
/* последний входной отсчет |
*/ |
||||||
|
int output; |
|
|
/* результат фильтра |
|
|
*/ |
||||
|
void (*init)(void *); /* указатель на функцию Init |
*/ |
|||||||||
|
void (*calc)(void *); /* указатель на функцию calc |
*/ |
|||||||||
|
}FIR16; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
_ptr: |
указатель на массив коэффициентов фильтра. |
|
|||||||||
coeffff_ tr: |
указатель на буфер задержек. |
|
|
. |
|
||||||
dbuffer_ptr: |
|
|
|
|
|||||||
ff |
r_ tr: |
|
|
|
|
|
. |
|
|
|
|
cbindex:i : |
|
|
индекс циклического буфера,, вычисляется |
||||||||
внутри функции |
|
|
инициализацииз |
на основе порядка фильтра.. |
|||||||
order:r r: |
|
|
|
. |
Q0-формат, |
диапазон 1 |
– 255 |
|
|||
Порядок фильтра. |
- |
, |
з |
|
– |
|
|||||
input:i t: |
|
Последний входной отсчет фильтра.. Q15--формат |
|
||||||||
|
|
-7FFF) |
|
|
|
|
|
|
|
||
output: |
(8000( |
- |
) |
|
. Q15-формат (8000-7FFF) |
|
|||||
t |
t: |
Результат фильтрации. |
- |
( |
- |
) |
|
14 - 31

Пример использования библиотеки
FIR16
#define FIR_ORDER 50 |
/* Порядок фильтра */ |
#pragma DATA_SECTION(lpf, "firfilt"); FIR16 lpf = FIR16_DEFAULTS;
#pragma DATA_SECTION(dbuffer,"firldb"); long dbuffer[(FIR_ORDER+2)/2];
const long coeff[(FIR_ORDER+2)/2]= FIR16_LPF50; main()
{
lpf.dbuffer_ptr=dbuffer; lpf.coeff_ptr=(long *)coeff; lpf.order=FIR_ORDER; lpf.init(&lpf);
}
void interrupt isr20khz()
{
lpf.input=xn;
lpf.calc(&lpf);
yn=lpf.output;
}
14 - 32

Лабораторная работа 14:
фильтрация Фильтром низких частот сигнала прямоугольной формы
Цель:
Генерация сигнала прямоугольной формы с частотой |
|
2 кГц на EVA-T1PWM |
|
Ассиметричный ШИМ с рабочим циклом 50% |
|
Использовать T1-Compare InterruptI |
Servicei для |
обслуживания сторожевого таймера |
|
Проводом соединить T1PWM с входом АЦП ADCIN2I |
Оцифровать сигнал прямоугольной формы на частоте |
|||
|
50KHz |
|
|
Период выборки генерировать с помощью EVA-Timeri |
2 |
||
Сохранять отсчеты в буфер “AdcBuf” |
|
||
Отфильтровать входные отсчеты КИХ фильтром |
|
||
|
нижних частот 4-го порядка |
|
|
Сохранить отфильтрованные отсчеты в буфер |
|
||
|
“AdcBufFiltered”il |
Лаб. работаРешение14 - 33 |
|
|
|
||
|
Визуализировать “AdcBuf” и “AdcBufFiltered”il |
|
