Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Курсовая от Мирошниченко (почти задание Шаврина) 2023 весна / Курсовая от Мирошниченко (почти задание Шаврина)

.pdf
Скачиваний:
43
Добавлен:
06.09.2023
Размер:
940.3 Кб
Скачать

c.title.font_size=4 c.x_label.font_size=4 c.y_label.font_size=4

scf(3) xgrid()

xtitle('Im[H(F)]','Frequency [Hz]','b*(F)') plot(F,Im)

d=get('current_axes') d.children(1).children.thickness=4 d.title.font_size=4 d.x_label.font_size=4 d.y_label.font_size=4

IX = ifft(Hfunc)

scf(4) xgrid()

xtitle('IX','i[samples]','h(t)') plot([0:79],imag(IX)) plot([0:79],real(IX),'r') e=get('current_axes') e.children(1).children.thickness=4 e.children(2).children.thickness=4 e.title.font_size=4 e.x_label.font_size=4 e.y_label.font_size=4

rex=real(IX)*32768 rex=rex' imx=imag(IX)*32768 imx=imx'

q1='g_re.dat'; fprintfMat(q1,round(rex),'%5.0f') q2='g_im.dat'; fprintfMat(q2,round(imx),'%5.0f') editor(q1)

editor(q2)

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

.section/dm vars;

.var/circ coef[80] = 97 , 27 , -22 , -125 , -43 , -72 , 51 , 68 , 77 , 32 , 5 , -106 , -21 , -88 , 39 , 47 , 70 , 36 , 32 , -115 , 13 , -126 , 45 , 30 , 70 , 37 , 86 , -188 , 126 , -263 , 121 , -12 , 77 , -7 , 405 , -954 , 1589 , -2620 , 3284 , -3859 , 4193 , -3780 , 3390 , -2560 , 1555 , -1069 , 278 , - 56 , 159 , 177 , 309 , -215 , -57 , -571 , -307 , -53 , 621 , 1456 , 2370 , 2872 , 3261 , 2883 , 2356 , 1462 , 621 , -42 , -354 , -471 , -204 , -57 , 193 , 220 , 159 , 19 , -76 , -187 , -76 , -65 , 84 , 106;

.var/circ simples[80] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

11

.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 fir; rti; rti; rti; rti; rti; rti; rti;

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;

main:

ena m_mode; mr = 0;

I0 = simples;

L0 = length(simples);

I1 = coef;

L1 = length(coef);

M0 = 1;

M2 = 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; fir:

mr = 0; CNTR = 79;

do c1 until CE; mx0 = dm(I0, M0); my0 = dm(I1, M0);

c1: mr = mr + mx0 * my0 (ss); mx0 = dm(I0, M2);

my0 = dm(I1, M0);

12

mr = mr + mx0 * my0 (ss); ax0 = IO(0);

dm(I0, M2) = ax0;

mr = mr (rnd); if mv sat mr; IO(1) = mr1; rti;

1.5 Проверка проделанной работы

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

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

После отработки программы на выходе фильтра получим сигнал, совпадающий с заданной АЧХ:

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

13

2.Проектирование БИХ-фильтра

2.1Исходные данные

Втаблице 1 приведены исходные данные для синтеза БИХ-фильтра:

Таблица 3. Исходные данные БИХ-фильтра

Вид

Тип

Неравномерность

Неравномерность

Частота

Порядок

Частота

фильтра

фильтра

в полосе

в полосе

среза

фильтра

дискретизации

 

 

пропускания

задерживания

 

 

 

 

 

 

 

 

 

 

Чебышев

ФВЧ

3 дБ

20 дБ

500 Гц

4

8 кГц

2-го

 

 

 

 

 

 

 

 

 

 

 

 

 

2.2 Вычисление коэффициентов

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

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

plot2d(fr, hzm);

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

 

0.6577 2.5297z + 3.7459z

2

2.5297z

3

+

0.6577z

4

H (z) =

 

 

 

0.4326 2.0141z + 3.6377z

2

3.0364z

3

+ z

4

 

 

 

 

 

 

 

 

(11)

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

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

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

14

2.3 Разработка программы на языке ассемблера процессора 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;

15

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

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

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

16