Задача 3

Записать разностное уравнение рекурсивного фильтра с заданными коэффициентами, зарисовать структурную схему и составить программу реализации в командах процессора ADSP2181.

Номера вариантов и коэффициенты фильтров содержатся

В Таблицах 4 и 5.

Таблица 4.

Предпоследняя цифра номера студенческого билета

Коэффициент

Коэффициент

Коэффициент

2

0,55

0,51

0,99

Таблица 5.

Последняя цифра номера студенческого билета

Коэффициент

Коэффициент

0

0,61

0,53

Решение.

Несмотря на то, что рекурсивные фильтры второго порядка могут реализовываться в различной форме, чаще всего применяется прямая форма. Структурную схему рекурсивного фильтра второго порядка можно увидеть на рисунке №7.

Рисунок №7. Структурная схема рекурсивного фильтра второго порядка.

Разностное уравнение такого фильтра второго порядка запишется следующим образом: .

В моем случае

Программа реализации рекурсивного фильтра в командах процессора ADSP2181 будет выглядеть следующим образом.

. MODULE biqual_sub

{

Входные параметры:

— входной отсчет,

I0 – буфер линии задержки для , , ,

L0=0 — буфер линии задержки (нецикличный),

I1 – описание коэффициентов для каждой биквадратной секции (порядка мантиссы для нормировки результатов после вычисления в отдельных секциях. (коэффициенты представляются в формате 1.15)

L1=0 – в случае 1 секции,

L4=2.5x порядок фильтра или 5x число биквадратных секций.

M0, M4=1 – адресация буферов I0 и I4 идет с шагом 1.

M1=-3 – адресация с обратным шагом (-3).

M3 – длина 1 буфера задержки.

M3=0 – в случае 1 секции.

CNTR – число биквадратных секций, загружаемое в счетчик циклов.

Возвращаемые значения:

— выходные выборки,

I0 – буфер внутренней линии задержки,

L4 – коэффициенты , , , , ,

I1 – начало буфера масштабных коэффициентов,

I4 – начало буфера коэффициентов фильтра.

Используемые регистры: MX0, MX1, MY0, MR, SE, SR

}

.ENTRY biqual;

Biqual: I0=^линия задержки;

DO PART UNTIL CE

SE=DM(I1, M2)

MX0=DM(I0,M0), MY0=PM(I4,M4);

MR= MX0*MY0(SS), MX1=DM(I0,M0), MY0=PM(I4,M4);

MR= MR+MX1*MY0(SS), MY0=PM(I4,M4);

MR= MR+SR1*MY0(SS), MX0=DM(I0,M0), MY0=PM(I4,M4);

MR= MR+MX0*MY0(SS), MX1=DM(I0,M1), MY0=PM(I4,M4);

DM(I0,M0)=MX1, MR=MR+MX0*MY0(RND);

PART: DM(I0,M0)=SR1, SR=ASHIFT MR1(H1);

DM(I0,M0)=MX0;

DM(I0,M3)=SR1;

RTS;

.ENDMOD;