Разработка методов многокритериального синтеза сигналов и устройств обработки, обеспечивающих робастные качественные показатели системы, страница 33

                                    где 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;