Добавил:
Если чем-то мне удалось вам помочь, то благодарность принимаю на эту карту: 2200 2460 1776 0607 Для защищенки 5 сем: https://t.me/+h5cc9QNQe19kODVi Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
эх_опять_курсач.docx
Скачиваний:
1
Добавлен:
15.04.2024
Размер:
477.84 Кб
Скачать
    1. Код математического пакета Scilab

//Синтезирование АЧХ и ФЧХ по исходным параметрам

function ach = K(F)

if F >= 0 & F <= 800 then

ach = 0.8;

elseif F > 800 & F <= 1600 then

ach = -(0.3/800) * F + 1.1;

elseif F > 1600 & F <= 2800 then

ach = 0.5 + 0.3 * sqrt(1 - ((F - 2200)^2 / 600^2));

elseif F > 2800 & F <= 3000 then

ach = -0.0025 * F + 7.5;

elseif F > 3000 & F <= 4000 then

ach = 0;

end

endfunction

//Построение графика АЧХ

ACH = zeros(41:1)

F = 0 : 100 : 4000

for i = 1:41

ACH(i,:) = K(F(i))

End

scf(0)

xgrid()

xtitle(" ", "Frequency [Hz]", "Magnitude")

plot(F,ACH)

a=get('current_axes')

a.children(1).children.thickness=4

a.title.font_size=4

a.x_label.font_size=4

a.y_label.font_size=4

function fch=fi(F)

if F>=0 & F<=4000 then

fch = (-1.*F).*%pi./2000

end

endfunction

//Построение графика ФЧХ

FCH = zeros(41:1)

F = 0 : 100 : 4000

for i = 1:41

FCH(i,:) = fi(F(i))

end

scf(1)

xgrid()

xtitle(" ", "Frequency [Hz]", "Phase [rad]")

plot(F,FCH)

b=get('current_axes')

b.children(1).children.thickness=4

b.title.font_size=4

b.x_label.font_size=4

b.y_label.font_size=4

Re = zeros(1:80)

Im = zeros(1:80)

Hfunc = zeros(1:80)

//Нахождение действительной и мнимой части расширенных АЧХ и ФЧХ, а также нахождения КЧХ для реализации ИХ

for i = 1:41

Re(i) = abs(ACH(i))*cos(FCH(i))

Im(i) = abs(ACH(i))*sin(FCH(i))

Hfunc(i)=Re(i)+%i*Im(i)

if i >= 2 then Hfunc(82-i) = Re(i)-%i*Im(i)

end

if i <> 1 then

Re(82-i) = Re(i)

Im(82-i) = -Im(i)

end

end

//Построение графиков Re и Im

F = 0:100:7900

scf(2)

xgrid()

xtitle('Re[H(F)]','Frequency [Hz]','a*(F)')

plot(F,Re)

c=get('current_axes')

c.children(1).children.thickness=4

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

.section/dm vars;

.var/circ coef[80] = -3109, 6111, 17085, 6111, -3109, 1987, 1218, -2119, 184, 212, -255, 719, -350, -336, 464, -119, 33, 40, -342, 170, 150, -108, 56, -101, 13, 162, -79, -58, -32, -6, 118, -25, -60, 6, 2, 90, -23, -101, 20, 5, 57, 25, -106, 25, 57, 5, 20, -101, -23, 90, 2, 6, -60, -25, 118, -6, -32, -58, -79, 162, 13, -101, 56, -108, 150, 170, -342, 40, 33, -119, 464, -336, -350, 719, -255, 212, 184, -2119, 1218, 1987;

.var/circ simples[80] = 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, 0, 0, 0, 0, 0, 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 fir; rti; rti; rti;

rti; rti; rti; rti;

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);

mr = mr + mx0 * my0 (ss);

ax0 = IO(0);

dm(I0, M2) = ax0;

mr = mr (rnd);

if mv sat mr;

IO(1) = mr1;

rti;