где NВКФ1 » ((N_vkf1 +1)× N_vkf1 )/2 + 20× N_vkf1 ), NВКФ2 » ((N_vkf2 +1)× N_vkf2 )/2 + 20× N_vkf2 ), а NЗНАК = = 10 + N_vkf1
.MODULE PROCESSING;
.CONST N_f=186,N_vkf1=21,N_vkf2=278;
.CONST N_mp=93, N_np=11;
.CONST N_nps=11;
.VAR/DM/RAM mp[N_mp],np[N_np];
.VAR/DM/RAM vkf1[N_vkf1];
.VAR/DM/RAM vkf2[N_vkf2];
.VAR/DM/RAM filtr[N_f],nps[N_nps];
.GLOBAL np,mp,vkf1,vkf2,filtr;
.GLOBAL nps;
.EXTERNAL ZNAK_GL_LEP,SVERTKA;
.ENTRY obr;
obr:
I0=^np;
I1=0;
I2=^vkf2;
I3=^vkf1;
I4=^filtr;
I5=^nps;
I6=^mp;
I7=0;
L0=%np;
L1=0;
L2=0;
L3=%vkf1;
L4=0;
L5=%nps;
L6=%mp;
L7=0;
CNTR=N_mp;
DO m_1 UNTIL CE; {В ЭТОМ ЦИКЛЕ ФОРМИРУЮТСЯ}
CALL SVERTKA; {СИМВОЛЫ МОДУЛИРУЮЩЕЙ}
m_1: CALL ZNAK_GL_LEP; {ПОСЛЕДОВАТЕЛЬНОСТИ}
I0=I6;
I5=I4;
I3=I2;
L0=L6;
L5=%filtr;
L3=%vkf2;
CALL SVERTKA; {СИМВОЛЫ ВЫХОДНОГО СИГНАЛА}
RTS;
. ENDMOD;
======================================================
Подпрограмма вычисления свертки.
Входные данные: vhod1 ‑ первый входной массив,
vhod2 ‑ второй входной массив.
Выходные данные: vkf ‑ выходной массив.
Время выполнения: NВКФ =((N +1)×N)/2 + 20×N) тактов, где N - размер выходного массива.
.MODULE MUTUAL_KOR;
.EXTERNAL vhod1,vhod2,vkf;
.ENTRY svertka;
svertka : I0=^vhod1; {! УКАЗЫВАЕТСЯ КОНЕЦ МАССИВА !}
I5=^vhod2;
I3=^vkf;
I7=0;
M0=1;
M1=-1;
M2=%vhod1;
M3=%vhod2;
M4=0;
M5=1;
M6=-1;
M7=%vhod1-1;
CNTR=M7;
DO m_1 UNTIL CE;
I1=I0;
I4=I5;
MR=0,MX0=DM(I1,M1),MY0=PM(I4,M5);
CNTR=I7;
DO m_2 UNTIL CE;
m_2: MR=MR+MX0*MY0(SS),MX0=DM(I1,M1),MY0=PM(I4,M5);
MR=MR+MX0*MY0(RND);
IF MV SAT MR;
DM(I3,M0)=MR0;
m_1 : MODIFY (I7,M5);
AX0=M3;
AY0=M2;
AF=AX0-AY0;
AR=AF+1;
CNTR=AR; {%vhod2-%vhod1+1}
DO m_3 UNTIL CE;
I1=I0;
I4=I5;
MR=0,MX0=DM(I1,M1),MY0=PM(I4,M5);
CNTR=M7;
DO m_4 UNTIL CE;
m_4: MR=MR+MX0*MY0(SS),MX0=DM(I1,M1),MY0=PM(I4,M5);
MR=MR+MX0*MY0(RND);
IF MV SAT MR;
DM(I3,M0)=MR0;
m_3 : MODIFY (I5,M5);
I7=M7;
CNTR=M7;
DO m_5 UNTIL CE;
I1=I0;
I4=I5;
MR=0,MX0=DM(I1,M1),MY0=PM(I4,M5);
CNTR=I7;
DO m_6 UNTIL CE;
m_6: MR=MR+MX0*MY0(SS),MX0=DM(I1,M1),MY0=PM(I4,M5);
MR=MR+MX0*MY0(RND);
IF MV SAT MR;
DM(I3,M0)=MR0;
MODIFY (I7,M6);
MODIFY (I5,M5);
m_5 : MODIFY (I0,M1);
RTS;
.ENDMOD;
======================================================
Подпрограмма определения знака главного лепестка
Входные данные: vkf1 ‑ последовательность на входе решающего устройства (рис. 3.2, блок 2). Размер N_vkf1.
Выходные данные: znak ‑ знак переданного символа модулирующей последовательности.
Время выполнения: NЗНАК = 10 + N_vkf1 тактов.
.MODULE ZNAK_GL_LEP;
.ENTRY znak_;
.VAR/DM/RAM vkf , znak;
znak_:
M1=1;
M5=1;
CNTR=N_vkf1;
AY0=1;
AY1=-1;
AX1=0;
DO m_1 UNTIL CE;
AX0=DM(I3,M1);
AF=ABS AX0;
AR=ABS AX1; {ПОИСК MAX}
AR=AR-AF;
AR=AX1;
IF LE AR=PASS AX0;
m_1: AX1=AR; {В AX1 MAX}
AR=ABS AX1;
IF NEG AR=PASS AY1;
AR=AY0;
DM(I6,M5)=AR;
RTS;
.ENDMOD;
======================================================
Модуль синтеза фазоманипулированных сигналов на основе составных последовательностей.
Время выполнения: 60NМ + 21NÌ2 + N512 + 15×512 + 20×512×NM
Выходные данные: ps ‑ массив сформированной последовательности (память программ)
.MODULE SYNTH_SIGNAL;
.CONST N=127, NG=512, NG_div_2=256, N_div_2=64;
.CONST k_alf1=1;{Значения весовых коэффициентов}
.CONST k_alf2=2;{Должны быть заданы в явном виде}
.VAR/DM/RAM ps[N];
.VAR/DM/RAM in_real[NG], in_imag[NG];
.VAR/PM/RAM psp_[N], akf[N], fsp[NG];
.VAR/PM/ROM etalon[NG];
.VAR/PM/ROM/CIRC twid_real[NG];
.VAR/PM/ROM/CIRC twid_imag[NG];
.VAR/DM/RAM dl_f, R_max;
.VAR/DM/RAM R_max_i, dli_f;
.GLOBAL ps, psp_, akf, fsp;
.GLOBAL in_real, in_imag, etalon;
.GLOBAL twid_real, twid_imag;
.GLOBAL dl_f, dli_f, R_max, R_max_i;
.EXTERNAL psp, fft_s, fsp_, corel, fsp_adj,SPRT ;
syntez : L0=0;
L1=0;
L2=0;
L3=0;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.