Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая от Мирошниченко (почти задание Шаврина) 2023 весна / Курсовая от Мирошниченко (почти задание Шаврина).docx
Скачиваний:
13
Добавлен:
27.03.2024
Размер:
586.86 Кб
Скачать
    1. Вычисление коэффициентов

Для расчёта коэффициентов БИХ-фильтра была написана программа в математическом пакете Scilab:

[hz] = iir(4, 'hp', 'cheb2', [500/8000], [.2, .03]);

[hzm, fr] = frmag(hz, 256);

plot2d(fr, hzm);

С помощью данной программы была получена следующая передаточная функция:

(11)

где коэффициенты числителя — это b-коэффициенты фильтра, коэффициенты знаменателя – a-коэффициенты фильтра.

При этом получится следующая АЧХ:

Рисунок 8. АЧХ БИХ-фильтра

    1. Разработка программы на языке ассемблера процессора adsp-2181

.section/dm vars;

.var/circ coef_b[5] = 2694, -10362, 15343, -10362, 2694;

.var/circ coef_a[5] = 4096, -12437, 14900, -8250, 1772;

.var/circ simples[5] = 0, 0, 0, 0, 0;

.var/circ feedback[5] = 0, 0, 0, 0, 0;

.section/pm program;

jump main; rti; rti; rti;

rti; rti; rti; rti;

rti; rti; rti; rti;

rti; rti; rti; rti;

rti; rti; rti; rti;

rti; rti; rti; rti;

rti; rti; rti; rti;

rti; rti; rti; rti;

rti; rti; rti; rti;

rti; rti; rti; rti;

jump iir; rti; rti; rti;

rti; rti; rti; rti;

main:

ena m_mode;

mr = 0;

I0 = simples;

L0 = length(simples);

I1 = coef_b;

L1 = length(coef_b);

I2 = feedback;

L2 = length(feedback);

I3 = coef_a;

L3 = length(coef_a);

M1 = 1;

M0 = 0;

ar = 4;

dm(0x3ffb) = ar;

ar = 999;

dm(0x3ffc) = ar;

dm(0x3ffd) = ar;

ifc = 0x00ff; nop;

ena timer;

imask = b#0000000001; nop;

end: jump end;

iir:

mr = 0;

CNTR = 4;

do c1 until CE;

mx0 = dm(I0, M1);

my0 = dm(I1, M1);

c1: mr = mr + mx0 * my0 (ss);

mx0 = dm(I0, M0);

my0 = dm(I1, M1);

mr = mr + mx0 * my0 (ss);

ax0 = IO(0);

dm(I0, M0) = ax0;

CNTR = 4;

do c2 until CE;

mx0 = dm(I2, M1);

my0 = dm(I3, M1);

c2: mr = mr + mx0 * my0 (ss);

mx0 = dm(I2, M0);

my0 = dm(I3, M1);

mr = mr + mx0 * my0 (ss);

mr = mr (rnd);

if mv sat mr;

dm(I2, M0) = mr1;

IO(1) = mr1;

rti;

    1. Результаты работы программы

Проверим правильность работы фильтра. Для этого сформируем и подадим на вход фильтра сигнал длительностью в 0.5 секунды, имеющий постоянную амплитуду и линейное нарастание частоты от 0 до 4 кГц. В результате получим сигнал, повторяющий АЧХ, что свидетельствует о корректой работе программы.

Рисунок 9. ЛЧМ сигнал на выходе фильтра

Москва 2023