Курсовая / 2chast
.docx-МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
Ордена Трудового Красного Знамени федеральное государственное
бюджетное образовательное учреждение высшего образования
МОСКОВСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
СВЯЗИ И ИНФОРМАТИКИ
Кафедра Многоканальные телекоммуникационные системы
Курсовая работа
Выполнил: студент группы БЗС2002
Ломакин А. А.
Проверил: Мирошниченко А.В.
1. Исходные данные
В таблице 1 приведены исходные данные для синтеза БИХ-фильтра:
Таблица 1 – исходные данные
Вид фильтра |
Тип фильтра |
Неравномерность в полосе пропускания |
Неравномерность в полосе задерживания |
Частота среза |
Порядок фильтра |
Частота дискретизации |
Чебышев 2-го |
ФНЧ |
3 дБ |
20 дБ |
1500 Гц |
4 |
8 кГц |
2. Расчёт коэффициентов БИХ-фильтра
Для расчёта коэффициентов БИХ-фильтра была написана программа в математическом пакете Scilab:
[hz] = iir(4, 'lp', 'cheb2', [1500/8000], [0, 0.1]);
[hzm, fr] = frmag(hz, 256);
plot2d(fr, hzm);
С помощью данной программы была получена следующая передаточная функция:
где коэффициенты числителя — это b-коэффициенты фильтра, коэффициенты знаменателя – a-коэффициенты фильтра.
При этом получится следующая АЧХ:
Рисунок 1 – АЧХ БИХ-фильтра
3. Реализация в VisualDSP++
.section/dm vars;
.var/circ coef_b[5] = 2318, 895, 3165, 895, 2318;
.var/circ coef_a[4] = -20151, 17296, -5122, 1181;
.var/circ simples[5] = 0, 0, 0, 0, 0;
.var/circ feedback[4] = 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 = 3;
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;
4. Результаты работы программы
Проверим правильность работы фильтра. Для этого сформируем и подадим на вход фильтра сигнал длительностью в 0.5 секунды, имеющий постоянную амплитуду и линейное нарастание частоты от 0 до 4 кГц. В результате получим сигнал, повторяющий АЧХ, что свидетельствует о корректой работе программы.
Рисунок 2 - ЛЧМ сигнал на выходе фильтра
Москва 2023