Пр о ц е с с о р TMS 3 2 0C4 x
          
        
        
          
            89
          
        
        
          
            
              Пример умножения комплексных матриц
            
          
        
        
          
            N
          
        
        
          
            .set
          
        
        
          
            12
          
        
        
          ; определение размерностей матриц
        
        
          
            K
          
        
        
          
            .set
          
        
        
          
            6
          
        
        
          ;
        
        
          
            M
          
        
        
          
            .set
          
        
        
          
            10
          
        
        
          ;
        
        
          
            CMPLX:
          
        
        
          
            LDI
          
        
        
          
            N
          
        
        
          ∗
        
        
          
            K
          
        
        
          ∗
        
        
          
            2, IR1
          
        
        
          ; установка адресных смещений
        
        
          
            LDI
          
        
        
          
            K
          
        
        
          ∗
        
        
          
            2, IR0
          
        
        
          ;
        
        
          
            LDI
          
        
        
          
            M-1, AR4
          
        
        
          ; определение счетчиков циклов
        
        
          
            COLS:
          
        
        
          
            LDI
          
        
        
          
            N-1, AR3
          
        
        
          ;
        
        
          
            ROWS:
          
        
        
          
            LDI
          
        
        
          
            K-1, RC
          
        
        
          ;
        
        
          
            RPTBD
          
        
        
          
            DOT
          
        
        
          ; внутренний цикл
        
        
          
            LDF
          
        
        
          
            0.0, R0
          
        
        
          ;
        
        
          
            LDF
          
        
        
          
            0.0, R2
          
        
        
          ;
        
        
          
            LDF
          
        
        
          
            0.0, R3
          
        
        
          ;
        
        
          ; комплексное умножение x[i,n] на y[n,j]
        
        
          
            MPYF3
          
        
        
          ∗
        
        
          
            AR0++(1),
          
        
        
          ∗
        
        
          
            AR1++(1), R0
          
        
        
          ; Re(x)
        
        
          ⋅
        
        
          Re(y)
        
        
          →
        
        
          R0
        
        
          
            ||
          
        
        
          
            SUBF3
          
        
        
          
            R0, R2, R2
          
        
        
          ; R2 - Im(x)
        
        
          ⋅
        
        
          Im(y)
        
        
          →
        
        
          R2
        
        
          
            MPYF3
          
        
        
          ∗
        
        
          
            -AR0(1),
          
        
        
          ∗
        
        
          
            AR1, R0
          
        
        
          ; Re(x)
        
        
          ⋅
        
        
          Im(y)
        
        
          →
        
        
          R0
        
        
          
            ||
          
        
        
          
            ADDF3
          
        
        
          
            R0, R2, R2
          
        
        
          ; R2 + Re(x)
        
        
          ⋅
        
        
          Re(y)
        
        
          
            MPYF3
          
        
        
          ∗
        
        
          
            AR0,
          
        
        
          ∗
        
        
          
            -AR1(1), R0
          
        
        
          ; Im(x)
        
        
          ⋅
        
        
          Re(y)
        
        
          →
        
        
          R0
        
        
          
            ||
          
        
        
          
            ADDF3
          
        
        
          
            R0, R3, R3
          
        
        
          ; R3 + Re(x)
        
        
          ⋅
        
        
          Im(y)
        
        
          →
        
        
          R3
        
        
          
            DOT:
          
        
        
          
            MPYF3
          
        
        
          ∗
        
        
          
            AR0++(1),
          
        
        
          ∗
        
        
          
            AR1++(1), R0
          
        
        
          ; Im(x)
        
        
          ⋅
        
        
          Im(y)
        
        
          →
        
        
          R0
        
        
          
            ||
          
        
        
          
            ADDF3
          
        
        
          
            R0, R3, R3
          
        
        
          ; R3 + Im(x)
        
        
          ⋅
        
        
          Re(y)
        
        
          →
        
        
          R3
        
        
          
            SUBF3
          
        
        
          
            R0, R2, R2
          
        
        
          ; R2 - Im(x)
        
        
          ⋅
        
        
          Im(y)
        
        
          →
        
        
          R2
        
        
          
            DBUDAR3, ROWS
          
        
        
          ; цикл по строкам X
        
        
          
            STF
          
        
        
          
            R2,
          
        
        
          ∗
        
        
          
            AR2++(1)
          
        
        
          ; сохранение Re(z)
        
        
          
            STF
          
        
        
          
            R3,
          
        
        
          ∗
        
        
          
            AR2++(1)
          
        
        
          ; сохранение Im(z)
        
        
          
            NOP
          
        
        
          ∗
        
        
          
            - - AR1(IR0)
          
        
        
          ; смещение на начало
        
        
          ; текущего столбца Y
        
        
          
            DBUDAR4, COLS
          
        
        
          ; цикл по столбцам Y
        
        
          
            NOP
          
        
        
          ∗
        
        
          
            ++ AR1(IR0)
          
        
        
          ; смещение на
        
        
          
            NOP
          
        
        
          ; следующий столбец Y
        
        
          
            NOP
          
        
        
          ∗
        
        
          
            - - AR0(IR1)
          
        
        
          ; смещение на первый
        
        
          ; элемент X
        
        
          
            RETS
          
        
        
          ; возврат из п/п
        
        
          
            .end
          
        
        
          
            2.5. Быстрое преобразование Фурье
          
        
        
          Быстрым преобразованием Фурье (БПФ) называется множество алгорит-
        
        
          мов вычисления дискретного преобразования Фурье (ДПФ). Дискретное преоб-
        
        
          разование Фурье определяется выражением
        
        
          ( )
        
        
          ( )
        
        
          
            X k
          
        
        
          
            x n W
          
        
        
          
            N
          
        
        
          
            nk
          
        
        
          
            n
          
        
        
          
            N
          
        
        
          =
        
        
          =
        
        
          −
        
        
          ∑
        
        
          0
        
        
          1
        
        
          , где
        
        
          
            k
          
        
        
          
            N
          
        
        
          =
        
        
          −
        
        
          0
        
        
          1
        
        
          ,
        
        
          ,
        
        
          K
        
        
          ,
        
        
          
            N
          
        
        
          
            j
          
        
        
          
            N
          
        
        
          
            W e
          
        
        
          =
        
        
          −
        
        
          2
        
        
          π
        
        
          .
        
        
          В общем случае эффективное вычисление БПФ связано с представлением
        
        
          
            N
          
        
        
          в
        
        
          виде произведения сомножителей. Для случая, когда
        
        
          
            N
          
        
        
          является степенью
        
        
          двойки, существуют высокоэффективные вычислительные алгоритмы, извест-