在DSP上实现DCT的三角波/方波/正弦波的显示代码(2)

[复制链接]
1136|4
手机看帖
扫描二维码
随时随地手机跟帖
拿起书本|  楼主 | 2014-11-12 15:51 | 显示全部楼层 |阅读模式
*********************************************************************
;            *
; PROCESS FOURTH 8 INPUTS.    X(3,0)...X(3,7)  ->  Y(3,0)...Y(3,7)  *
;            *
*********************************************************************

        LD     *AR1+, 4, A           ; + (16)*(X0)
        ADD    *AR1+, 4, A           ; + (16)*(X1)  
        ADD    *AR1+, 4, A           ; + (16)*(X2)
        ADD    *AR1+, 4, A           ; + (16)*(X3)
ADD    *AR1+, 4, A           ; + (16)*(X4)
ADD    *AR1+, 4, A           ; + (16)*(X5)
ADD    *AR1+, 4, A           ; + (16)*(X6)
ADD    *AR1, 4, A            ; + (16)*(X7)  
STL    A, Y30                ; = Y30

        RPTZ   A, #7                  
        MACP   *AR1-, COEF_F1, A         
        SFTA   A, 4                  
        MAR    *AR1+                 ; (64)[A*X0+B*X1+C*X2-D*X3-D*X4
        ADD    ROUND1, A             ; -C*X5-B*X6-A*X7] + 4*ROUND1   
        STH    A, 2, Y31             ; = Y31
        
        LD     ROUND1, -4, A         ; (ROUND1)/16           
        LD     E_P6, T                 
        MAC    *AR1+0, A             ; + X0*E_P6
        MAS    *AR1+, A              ; - X3*E_P6
        MAS    *AR1+0, A             ; - X4*E_P6
        MAC    *AR1-, A              ; + X7*E_P6
        LD     F_P6, T               
MAC    *AR1-, A              ; + X6*F_P6
        MAS    *AR1-0, A             ; - X5*F_P6
        MAS    *AR1-, A              ; - X2*F_P6
        MAC    *AR1-, A              ; + X1*F_P6                           
        STH    A, 6, Y32             ; Multiply prev summation by 16
                                     ; = Y32

        RPTZ   A, #7                  
        MACP   *AR1+, COEFF2, A      ; 64(B*X0-D*X1-A*X2-C*X3+C*X4+A*X5
        SFTA   A, 4                  
        MAR    *AR1-                 
        ADD    ROUND1, A             ; +D*X6-B*X7) + 4*ROUND1               
        STH    A, 2, Y33             ; = Y33

LD    *AR1-, 4, A            ;   X7*16
        SUB   *AR1-, 4, A            ; - X6*16               
        SUB   *AR1-, 4, A            ; - X5*16
        ADD   *AR1-, 4, A            ; + X4*16
        ADD   *AR1-, 4, A            ; + X3*16
        SUB   *AR1-, 4, A            ; - X2*16
        SUB   *AR1-, 4, A            ; - X1*16
        ADD   *AR1, 4, A             ; + X0*16
        STL   A, Y34                 ; = Y34
  
        RPTZ  A, #7                  
        MACP  *AR1+, COEFF3, A       ; 8(D*X0-C*X1+B*X2-A*X3+A*X4-B*X5
        SFTA  A, 4                   ; +C*X6-D*X7)
        MAR   *AR1-                  
        ADD   ROUND1, A              ; + 4*ROUND1
        STH   A, 2, Y35              ; = Y35

LD    ROUND1, -4, A          ; (ROUND1)/16
        LD    F_P6, T               
        MAC   *AR1-0, A              ; + F_P6*X7
        MAS   *AR1-, A               ; - F_P6*X4
        MAS   *AR1-0, A              ; - F_P6*X3
        MAC   *AR1+, A               ; + F_P6*X0
        LD    E_P6, T
        MAS   *AR1+, A               ; - E_P6*X1
        MAC   *AR1+0, A              ; + E_P6*X2
        MAC   *AR1+, A               ; + E_P6*X5
        MAS   *AR1+, A               ; - E_P6*X6
        STH   A, 6, Y36              ; Multiply prev summation by 16
                                     ; = Y36  
        RPTZ   A, #7
        MACP  *AR1-, COEF_F4, A      ; 64(D*X0-C*X1+B*X2-A*X3+A*X4-B*X5
        SFTA  A, 4                   ; +C*X6-D*X7)
        MAR   *AR1+                  
        ADD   ROUND1, A              ; + 4*ROUND1
        STH   A, 2, Y37              ; = Y37
        
        MAR   *+AR1(8)               ; Set AR1 to point to the next set  
                                     ; of 8 inputs

*********************************************************************
;            *
; PROCESS FIFTH 8 INPUTS.     X(4,0)...X(4,7)  ->  Y(4,0)...Y(4,7)  *
;            *
*********************************************************************
        LD     *AR1+, 4, A           ; + (16)*(X0)
        ADD    *AR1+, 4, A           ; + (16)*(X1)  
        ADD    *AR1+, 4, A           ; + (16)*(X2)
        ADD    *AR1+, 4, A           ; + (16)*(X3)
ADD    *AR1+, 4, A           ; + (16)*(X4)
ADD    *AR1+, 4, A           ; + (16)*(X5)
ADD    *AR1+, 4, A           ; + (16)*(X6)
ADD    *AR1, 4, A            ; + (16)*(X7)  
STL    A, Y40                ; = Y40

        RPTZ   A, #7                  
        MACP   *AR1-, COEF_F1, A         
        SFTA   A, 4                  
        MAR    *AR1+                 ; (64)[A*X0+B*X1+C*X2-D*X3-D*X4
        ADD    ROUND1, A             ; -C*X5-B*X6-A*X7] + 4*ROUND1   
        STH    A, 2, Y41             ; = Y41
        
        LD     ROUND1, -4, A         ; (ROUND1)/16           
        LD     E_P6, T                 
        MAC    *AR1+0, A             ; + X0*E_P6
        MAS    *AR1+, A              ; - X3*E_P6
        MAS    *AR1+0, A             ; - X4*E_P6
        MAC    *AR1-, A              ; + X7*E_P6
        LD     F_P6, T               
MAC    *AR1-, A              ; + X6*F_P6
        MAS    *AR1-0, A             ; - X5*F_P6
        MAS    *AR1-, A              ; - X2*F_P6
        MAC    *AR1-, A              ; + X1*F_P6                           
        STH    A, 6, Y42             ; Multiply prev summation by 16
                                     ; = Y42

        RPTZ   A, #7                  
        MACP   *AR1+, COEFF2, A      ; 64(B*X0-D*X1-A*X2-C*X3+C*X4+A*X5
        SFTA   A, 4                  
        MAR    *AR1-                 
        ADD    ROUND1, A             ; +D*X6-B*X7) + 4*ROUND1               
        STH    A, 2, Y43             ; = Y43

LD    *AR1-, 4, A            ;   X7*16
        SUB   *AR1-, 4, A            ; - X6*16               
        SUB   *AR1-, 4, A            ; - X5*16
        ADD   *AR1-, 4, A            ; + X4*16
        ADD   *AR1-, 4, A            ; + X3*16
        SUB   *AR1-, 4, A            ; - X2*16
        SUB   *AR1-, 4, A            ; - X1*16
        ADD   *AR1, 4, A             ; + X0*16
        STL   A, Y44                 ; = Y44
  
        RPTZ  A, #7                  
        MACP  *AR1+, COEFF3, A       ; 8(D*X0-C*X1+B*X2-A*X3+A*X4-B*X5
        SFTA  A, 4                   ; +C*X6-D*X7)
        MAR   *AR1-                  
        ADD   ROUND1, A              ; + 4*ROUND1
        STH   A, 2, Y45              ; = Y45

LD    ROUND1, -4, A          ; (ROUND1)/16
        LD    F_P6, T               
        MAC   *AR1-0, A              ; + F_P6*X7
        MAS   *AR1-, A               ; - F_P6*X4
        MAS   *AR1-0, A              ; - F_P6*X3
        MAC   *AR1+, A               ; + F_P6*X0
        LD    E_P6, T
        MAS   *AR1+, A               ; - E_P6*X1
        MAC   *AR1+0, A              ; + E_P6*X2
        MAC   *AR1+, A               ; + E_P6*X5
        MAS   *AR1+, A               ; - E_P6*X6
        STH   A, 6, Y46              ; Multiply prev summation by 16
                                     ; = Y46  
        RPTZ   A, #7
        MACP  *AR1-, COEF_F4, A      ; 64(D*X0-C*X1+B*X2-A*X3+A*X4-B*X5
        SFTA  A, 4                   ; +C*X6-D*X7)
        MAR   *AR1+                  
        ADD   ROUND1, A              ; + 4*ROUND1
        STH   A, 2, Y47              ; = Y47
ERROR:        
        MAR   *+AR1(8)               ; Set AR1 to point to the next set  
                                     ; of 8 inputs
        NOP
        NOP
        NOP
        NOP
*********************************************************************
;            *
; PROCESS SIXTH 8 INPUTS.     X(5,0)...X(5,7)  ->  Y(5,0)...Y(5,7)  *
;            *
*********************************************************************
        LD     *AR1+, 4, A           ; + (16)*(X0)
        ADD    *AR1+, 4, A           ; + (16)*(X1)  
        ADD    *AR1+, 4, A           ; + (16)*(X2)
        ADD    *AR1+, 4, A           ; + (16)*(X3)
ADD    *AR1+, 4, A           ; + (16)*(X4)
ADD    *AR1+, 4, A           ; + (16)*(X5)
ADD    *AR1+, 4, A           ; + (16)*(X6)
ADD    *AR1, 4, A            ; + (16)*(X7)  
STL    A, Y50                ; = Y50

        RPTZ   A, #7                  
        MACP   *AR1-, COEF_F1, A         
        SFTA   A, 4                  
        MAR    *AR1+                 ; (64)[A*X0+B*X1+C*X2-D*X3-D*X4
        ADD    ROUND1, A             ; -C*X5-B*X6-A*X7] + 4*ROUND1   
        STH    A, 2, Y51             ; = Y51
        
        LD     ROUND1, -4, A         ; (ROUND1)/16           
        LD     E_P6, T                 
        MAC    *AR1+0, A             ; + X0*E_P6
        MAS    *AR1+, A              ; - X3*E_P6
        MAS    *AR1+0, A             ; - X4*E_P6
        MAC    *AR1-, A              ; + X7*E_P6
        LD     F_P6, T               
MAC    *AR1-, A              ; + X6*F_P6
        MAS    *AR1-0, A             ; - X5*F_P6
        MAS    *AR1-, A              ; - X2*F_P6
        MAC    *AR1-, A              ; + X1*F_P6                           
        STH    A, 6, Y52             ; Multiply prev summation by 16
                                     ; = Y52

        RPTZ   A, #7                  
        MACP   *AR1+, COEFF2, A      ; 64(B*X0-D*X1-A*X2-C*X3+C*X4+A*X5
        SFTA   A, 4                  
        MAR    *AR1-
        ADD    ROUND1, A             ; +D*X6-B*X7) + 4*ROUND1
        STH    A, 2, Y53             ; = Y53

LD    *AR1-, 4, A            ;   X7*16
        SUB   *AR1-, 4, A            ; - X6*16               
        SUB   *AR1-, 4, A            ; - X5*16
        ADD   *AR1-, 4, A            ; + X4*16
        ADD   *AR1-, 4, A            ; + X3*16
        SUB   *AR1-, 4, A            ; - X2*16
        SUB   *AR1-, 4, A            ; - X1*16
        ADD   *AR1, 4, A             ; + X0*16
        STL   A, Y54                 ; = Y54
  
        RPTZ  A, #7
        MACP  *AR1+, COEFF3, A       ; 8(D*X0-C*X1+B*X2-A*X3+A*X4-B*X5
        SFTA  A, 4                   ; +C*X6-D*X7)
        MAR   *AR1-                  
        ADD   ROUND1, A              ; + 4*ROUND1
        STH   A, 2, Y55              ; = Y55
        LD    ROUND1, -4, A          ; (ROUND1)/16
        LD    F_P6, T               
        MAC   *AR1-0, A              ; + F_P6*X7
        MAS   *AR1-, A               ; - F_P6*X4
        MAS   *AR1-0, A              ; - F_P6*X3
        MAC   *AR1+, A               ; + F_P6*X0
        LD    E_P6, T
        MAS   *AR1+, A               ; - E_P6*X1
        MAC   *AR1+0, A              ; + E_P6*X2
        MAC   *AR1+, A               ; + E_P6*X5
        MAS   *AR1+, A               ; - E_P6*X6
        STH   A, 6, Y56              ; Multiply prev summation by 16
                                     ; = Y56
        RPTZ   A, #7
        MACP  *AR1-, COEF_F4, A      ; 64(D*X0-C*X1+B*X2-A*X3+A*X4-B*X5
        SFTA  A, 4                   ; +C*X6-D*X7)
        MAR   *AR1+                  
        ADD   ROUND1, A              ; + 4*ROUND1
        STH   A, 2, Y57              ; = Y57
        
        MAR   *+AR1(8)               ; Set AR1 to point to the next set  
                                     ; of 8 inputs
*********************************************************************
;            *
; PROCESS SEVENTH 8 INPUTS.   X(6,0)...X(6,7)  ->  Y(6,0)...Y(6,7)  *
;            *
*********************************************************************
        LD     *AR1+, 4, A           ; + (16)*(X0)
        ADD    *AR1+, 4, A           ; + (16)*(X1)  
        ADD    *AR1+, 4, A           ; + (16)*(X2)
        ADD    *AR1+, 4, A           ; + (16)*(X3)
ADD    *AR1+, 4, A           ; + (16)*(X4)
ADD    *AR1+, 4, A           ; + (16)*(X5)
ADD    *AR1+, 4, A           ; + (16)*(X6)
ADD    *AR1, 4, A            ; + (16)*(X7)  
STL    A, Y60                ; = Y60

        RPTZ   A, #7                  
        MACP   *AR1-, COEF_F1, A         
        SFTA   A, 4                  
        MAR    *AR1+                 ; (64)[A*X0+B*X1+C*X2-D*X3-D*X4
        ADD    ROUND1, A             ; -C*X5-B*X6-A*X7] + 4*ROUND1   
        STH    A, 2, Y61             ; = Y61
        
        LD     ROUND1, -4, A         ; (ROUND1)/16           
        LD     E_P6, T                 
        MAC    *AR1+0, A             ; + X0*E_P6
        MAS    *AR1+, A              ; - X3*E_P6
        MAS    *AR1+0, A             ; - X4*E_P6
        MAC    *AR1-, A              ; + X7*E_P6
        LD     F_P6, T               
MAC    *AR1-, A              ; + X6*F_P6
        MAS    *AR1-0, A             ; - X5*F_P6
        MAS    *AR1-, A              ; - X2*F_P6
        MAC    *AR1-, A              ; + X1*F_P6                           
        STH    A, 6, Y62             ; Multiply prev summation by 16
                                     ; = Y62

        RPTZ   A, #7                  
        MACP   *AR1+, COEFF2, A      ; 64(B*X0-D*X1-A*X2-C*X3+C*X4+A*X5
        SFTA   A, 4                  
        MAR    *AR1-                 
        ADD    ROUND1, A             ; +D*X6-B*X7) + 4*ROUND1               
        STH    A, 2, Y63             ; = Y63

LD    *AR1-, 4, A            ;   X7*16
        SUB   *AR1-, 4, A            ; - X6*16               
        SUB   *AR1-, 4, A            ; - X5*16
        ADD   *AR1-, 4, A            ; + X4*16
        ADD   *AR1-, 4, A            ; + X3*16
        SUB   *AR1-, 4, A            ; - X2*16
        SUB   *AR1-, 4, A            ; - X1*16
        ADD   *AR1, 4, A             ; + X0*16
        STL   A, Y64                 ; = Y64
  
        RPTZ  A, #7                  
        MACP  *AR1+, COEFF3, A       ; 8(D*X0-C*X1+B*X2-A*X3+A*X4-B*X5
        SFTA  A, 4                   ; +C*X6-D*X7)
        MAR   *AR1-                  
        ADD   ROUND1, A              ; + 4*ROUND1
        STH   A, 2, Y65              ; = Y65

相关帖子

拿起书本|  楼主 | 2014-11-12 15:53 | 显示全部楼层
LD    ROUND1, -4, A          ; (ROUND1)/16
        LD    F_P6, T               
        MAC   *AR1-0, A              ; + F_P6*X7
        MAS   *AR1-, A               ; - F_P6*X4
        MAS   *AR1-0, A              ; - F_P6*X3
        MAC   *AR1+, A               ; + F_P6*X0
        LD    E_P6, T
        MAS   *AR1+, A               ; - E_P6*X1
        MAC   *AR1+0, A              ; + E_P6*X2
        MAC   *AR1+, A               ; + E_P6*X5
        MAS   *AR1+, A               ; - E_P6*X6
        STH   A, 6, Y66              ; Multiply prev summation by 16
                                     ; = Y66  
        RPTZ   A, #7
        MACP  *AR1-, COEF_F4, A      ; 64(D*X0-C*X1+B*X2-A*X3+A*X4-B*X5
        SFTA  A, 4                   ; +C*X6-D*X7)
        MAR   *AR1+                  
        ADD   ROUND1, A              ; + 4*ROUND1
        STH   A, 2, Y67              ; = Y67
        
        MAR   *+AR1(8)               ; Set AR1 to point to the next set  
                                     ; of 8 inputs
*********************************************************************
;            *
; PROCESS EIGHTH 8 INPUTS.    X(7,0)...X(7,7)  ->  Y(7,0)...Y(7,7)  *
;            *
*********************************************************************
        LD     *AR1+, 4, A           ; + (16)*(X0)
        ADD    *AR1+, 4, A           ; + (16)*(X1)  
        ADD    *AR1+, 4, A           ; + (16)*(X2)
        ADD    *AR1+, 4, A           ; + (16)*(X3)
ADD    *AR1+, 4, A           ; + (16)*(X4)
ADD    *AR1+, 4, A           ; + (16)*(X5)
ADD    *AR1+, 4, A           ; + (16)*(X6)
ADD    *AR1, 4, A            ; + (16)*(X7)  
STL    A, Y70                ; = Y70

        RPTZ   A, #7                  
        MACP   *AR1-, COEF_F1, A         
        SFTA   A, 4                  
        MAR    *AR1+                 ; (64)[A*X0+B*X1+C*X2-D*X3-D*X4
        ADD    ROUND1, A             ; -C*X5-B*X6-A*X7] + 4*ROUND1   
        STH    A, 2, Y71             ; = Y71
        
        LD     ROUND1, -4, A         ; (ROUND1)/16           
        LD     E_P6, T                 
        MAC    *AR1+0, A             ; + X0*E_P6
        MAS    *AR1+, A              ; - X3*E_P6
        MAS    *AR1+0, A             ; - X4*E_P6
        MAC    *AR1-, A              ; + X7*E_P6
        LD     F_P6, T               
MAC    *AR1-, A              ; + X6*F_P6
        MAS    *AR1-0, A             ; - X5*F_P6
        MAS    *AR1-, A              ; - X2*F_P6
        MAC    *AR1-, A              ; + X1*F_P6                           
        STH    A, 6, Y72             ; Multiply prev summation by 16
                                     ; = Y72

        RPTZ   A, #7                  
        MACP   *AR1+, COEFF2, A      ; 64(B*X0-D*X1-A*X2-C*X3+C*X4+A*X5
        SFTA   A, 4                  
        MAR    *AR1-                 
        ADD    ROUND1, A             ; +D*X6-B*X7) + 4*ROUND1               
        STH    A, 2, Y73             ; = Y73

LD    *AR1-, 4, A            ;   X7*16
        SUB   *AR1-, 4, A            ; - X6*16               
        SUB   *AR1-, 4, A            ; - X5*16
        ADD   *AR1-, 4, A            ; + X4*16
        ADD   *AR1-, 4, A            ; + X3*16
        SUB   *AR1-, 4, A            ; - X2*16
        SUB   *AR1-, 4, A            ; - X1*16
        ADD   *AR1, 4, A             ; + X0*16
        STL   A, Y74                 ; = Y74
  
        RPTZ  A, #7                  
        MACP  *AR1+, COEFF3, A       ; 8(D*X0-C*X1+B*X2-A*X3+A*X4-B*X5
        SFTA  A, 4                   ; +C*X6-D*X7)
        MAR   *AR1-                  
        ADD   ROUND1, A              ; + 4*ROUND1
        STH   A, 2, Y75              ; = Y75

LD    ROUND1, -4, A          ; (ROUND1)/16
        LD    F_P6, T               
        MAC   *AR1-0, A              ; + F_P6*X7
        MAS   *AR1-, A               ; - F_P6*X4
        MAS   *AR1-0, A              ; - F_P6*X3
        MAC   *AR1+, A               ; + F_P6*X0
        LD    E_P6, T
        MAS   *AR1+, A               ; - E_P6*X1
        MAC   *AR1+0, A              ; + E_P6*X2
        MAC   *AR1+, A               ; + E_P6*X5
        MAS   *AR1+, A               ; - E_P6*X6
        STH   A, 6, Y76              ; Multiply prev summation by 16
                                     ; = Y76  
        RPTZ   A, #7
        MACP  *AR1-, COEF_F4, A      ; 64(D*X0-C*X1+B*X2-A*X3+A*X4-B*X5
        SFTA  A, 4                   ; +C*X6-D*X7)
        MAR   *AR1+                  
        ADD   ROUND1, A              ; + 4*ROUND1
        STH   A, 2, Y77              ; = Y77
        
        MAR   *+AR1(8)               ; Set AR1 to point to the next set  
                                     ; of 8 inputs
      

;       ******************************************
;             *                                        *
;       *    SECOND STEP :          *
;       *            *
;       *       CALCULATE OUTER TRANSFORM        *
;             *        (PROCESS INPUT COLUMNS)         *
;             *                                        *
;       ******************************************
DCT2   LD    #PAGE25, DP

*********************************************************************
;            *
; PROCESS FIRST 8 INPUTS.     Y(0,0)...Y(7,0)  ->  Z(0,0)...Z(7,0)  *
;            *
*********************************************************************
        LD     ROUND3, A             ; + ROUND3   
        ADD    *AR2+, 9, A           ; + (Y0)                                       
        ADD    *AR2+, 9, A           ; + (Y1)  
        ADD    *AR2+, 9, A           ; + (Y2)
        ADD    *AR2+, 9, A           ; + (Y3)
ADD    *AR2+, 9, A           ; + (Y4)
ADD    *AR2+, 9, A           ; + (Y5)
ADD    *AR2+, 9, A           ; + (Y6)
ADD    *AR2, 9, A            ; + (Y7)  
STH    A, Z00                ; = Z00

        RPTZ   A, #7                  
        MACP   *AR2-, COEF_F1, A         
        SFTA   A, -6                 
        MAR    *AR2+                 ; (128)[A*Y0+B*Y1+C*Y2-D*Y3-D*Y4
        ADD    ROUND2, A             ; -C*Y5-B*Y6-A*Y7] + 2*ROUND2   
        STH    A, 1, Z10             ; = Z10
ZY20:        
        LD     ROUND2, -6, A         ; (ROUND1)/64           
        LD     E_P7, T                 
        MAC    *AR2+0, A             ; + Y0*E_P7
        MAS    *AR2+, A              ; - Y3*E_P7
        MAS    *AR2+0, A             ; - Y4*E_P7
        MAC    *AR2-, A              ; + Y7*E_P7
        LD     F_P7, T               
MAC    *AR2-, A              ; + Y6*F_P7
        MAS    *AR2-0, A             ; - Y5*F_P7
        MAS    *AR2-, A              ; - Y2*F_P7
        MAC    *AR2-, A              ; + Y1*F_P7                           
        STH    A, -5, Z20            ; Multiply prev summation by 128
                                     ; = Z20

        RPTZ   A, #7                  
        MACP   *AR2+, COEFF2, A      ; 128(B*Y0-D*Y1-A*Y2-C*Y3+C*Y4+A*Y5
        SFTA   A, -6                 
        MAR    *AR2-                 
        ADD    ROUND2, A             ; +D*Y6-B*Y7) + 2*ROUND2               
        STH    A, 1, Z30             ; = Z30

        LD    ROUND3, A
ADD   *AR2-, 9, A            ;   Y7
        SUB   *AR2-, 9, A            ; - Y6               
        SUB   *AR2-, 9, A            ; - Y5
        ADD   *AR2-, 9, A            ; + Y4
        ADD   *AR2-, 9, A            ; + Y3
        SUB   *AR2-, 9, A            ; - Y2
        SUB   *AR2-, 9, A            ; - Y1
        ADD   *AR2, 9, A             ; + Y0
        STH   A, Z40                 ; = Z40
  
        RPTZ  A, #7                  
        MACP  *AR2+, COEFF3, A       ; 218(D*Y0-C*Y1+B*Y2-A*Y3+A*Y4-B*Y5
        SFTA  A, -6                  ; +C*Y6-D*Y7)
        MAR   *AR2-                  
        ADD   ROUND2, A              ; + 2*ROUND2
        STH   A, 1, Z50              ; = Z50

        LD    ROUND2, -6, A          ; (ROUND1)/64
        LD    F_P7, T               
        MAC   *AR2-0, A              ; + F_P7*Y7
        MAS   *AR2-, A               ; - F_P7*Y4
        MAS   *AR2-0, A              ; - F_P7*Y3
        MAC   *AR2+, A               ; + F_P7*Y0
        LD    E_P7, T
        MAS   *AR2+, A               ; - E_P7*Y1
        MAC   *AR2+0, A              ; + E_P7*Y2
        MAC   *AR2+, A               ; + E_P7*Y5
        MAS   *AR2+, A               ; - E_P7*Y6
        STH   A, -5, Z60             ; Multiply prev summation by 128
                                     ; = Z60  
        RPTZ   A, #7
        MACP  *AR2-, COEF_F4, A      ; 128(D*Y0-C*Y1+B*Y2-A*Y3+A*Y4-B*Y5
        SFTA  A, -6                  ; +C*Y6-D*Y7)
        MAR   *AR2+                  
        ADD   ROUND2, A              ; + 2*ROUND2
        STH   A, 1, Z70              ; = Z70
        
        MAR   *+AR2(8)               ; Set AR2 to point to the next set  
                                     ; of 8 inputs
*********************************************************************
;            *
; PROCESS SECOND 8 INPUTS.    Y(0,1)...Y(7,1)  ->  Z(0,1)...Z(7,1)  *
;            *
*********************************************************************
        LD     ROUND3, A             ; + ROUND3   
        ADD    *AR2+, 9, A           ; + (Y0)                                       
        ADD    *AR2+, 9, A           ; + (Y1)  
        ADD    *AR2+, 9, A           ; + (Y2)
        ADD    *AR2+, 9, A           ; + (Y3)
ADD    *AR2+, 9, A           ; + (Y4)
ADD    *AR2+, 9, A           ; + (Y5)
ADD    *AR2+, 9, A           ; + (Y6)
ADD    *AR2, 9, A            ; + (Y7)  
STH    A, Z01                ; = Z01

        RPTZ   A, #7                  
        MACP   *AR2-, COEF_F1, A         
        SFTA   A, -6                 
        MAR    *AR2+                 ; (128)[A*Y0+B*Y1+C*Y2-D*Y3-D*Y4
        ADD    ROUND2, A             ; -C*Y5-B*Y6-A*Y7] + 2*ROUND2   
        STH    A, 1, Z11             ; = Z11
        
        LD     ROUND2, -6, A         ; (ROUND1)/64           
        LD     E_P7, T                 
        MAC    *AR2+0, A             ; + Y0*E_P7
        MAS    *AR2+, A              ; - Y3*E_P7
        MAS    *AR2+0, A             ; - Y4*E_P7
        MAC    *AR2-, A              ; + Y7*E_P7
        LD     F_P7, T               
MAC    *AR2-, A              ; + Y6*F_P7
        MAS    *AR2-0, A             ; - Y5*F_P7
        MAS    *AR2-, A              ; - Y2*F_P7
        MAC    *AR2-, A              ; + Y1*F_P7                           
        STH    A, -5, Z21            ; Multiply prev summation by 128
                                     ; = Z21

        RPTZ   A, #7                  
        MACP   *AR2+, COEFF2, A      ; 128(B*Y0-D*Y1-A*Y2-C*Y3+C*Y4+A*Y5
        SFTA   A, -6                 
        MAR    *AR2-                 
        ADD    ROUND2, A             ; +D*Y6-B*Y7) + 2*ROUND2               
        STH    A, 1, Z31             ; = Z31

        LD    ROUND3, A
ADD   *AR2-, 9, A            ;   Y7
        SUB   *AR2-, 9, A            ; - Y6               
        SUB   *AR2-, 9, A            ; - Y5
        ADD   *AR2-, 9, A            ; + Y4
        ADD   *AR2-, 9, A            ; + Y3
        SUB   *AR2-, 9, A            ; - Y2
        SUB   *AR2-, 9, A            ; - Y1
        ADD   *AR2, 9, A             ; + Y0
        STH   A, Z41                 ; = Z41
  
        RPTZ  A, #7                  
        MACP  *AR2+, COEFF3, A       ; 218(D*Y0-C*Y1+B*Y2-A*Y3+A*Y4-B*Y5
        SFTA  A, -6                  ; +C*Y6-D*Y7)
        MAR   *AR2-                  
        ADD   ROUND2, A              ; + 2*ROUND2
        STH   A, 1, Z51              ; = Z51

        LD    ROUND2, -6, A          ; (ROUND1)/64
        LD    F_P7, T               
        MAC   *AR2-0, A              ; + F_P7*X7
        MAS   *AR2-, A               ; - F_P7*X4
        MAS   *AR2-0, A              ; - F_P7*X3
        MAC   *AR2+, A               ; + F_P7*X0
        LD    E_P7, T
        MAS   *AR2+, A               ; - E_P7*X1
        MAC   *AR2+0, A              ; + E_P7*X2
        MAC   *AR2+, A               ; + E_P7*X5
        MAS   *AR2+, A               ; - E_P7*X6
        STH   A, -5, Z61             ; Multiply prev summation by 128
                                     ; = Z61  
        RPTZ   A, #7
        MACP  *AR2-, COEF_F4, A      ; 128(D*Y0-C*Y1+B*Y2-A*Y3+A*Y4-B*Y5
        SFTA  A, -6                  ; +C*Y6-D*Y7)
        MAR   *AR2+                  
        ADD   ROUND2, A              ; + 2*ROUND2
        STH   A, 1, Z71              ; = Z71
        
        MAR   *+AR2(8)               ; Set AR1 to point to the next set  
                                     ; of 8 inputs
*********************************************************************
;            *
; PROCESS THIRD 8 INPUTS.     Y(0,2)...Y(7,2)  ->  Z(0,2)...Z(7,2)  *
;            *
*********************************************************************
        LD     ROUND3, A             ; + ROUND3   
        ADD    *AR2+, 9, A           ; + (Y0)                                       
        ADD    *AR2+, 9, A           ; + (Y1)  
        ADD    *AR2+, 9, A           ; + (Y2)
        ADD    *AR2+, 9, A           ; + (Y3)
ADD    *AR2+, 9, A           ; + (Y4)
ADD    *AR2+, 9, A           ; + (Y5)
ADD    *AR2+, 9, A           ; + (Y6)
ADD    *AR2, 9, A            ; + (Y7)  
STH    A, Z02                ; = Z02

        RPTZ   A, #7                  
        MACP   *AR2-, COEF_F1, A         
        SFTA   A, -6                 
        MAR    *AR2+                 ; (128)[A*Y0+B*Y1+C*Y2-D*Y3-D*Y4
        ADD    ROUND2, A             ; -C*Y5-B*Y6-A*Y7] + 2*ROUND2   
        STH    A, 1, Z12             ; = Z12
        
        LD     ROUND2, -6, A         ; (ROUND1)/64           
        LD     E_P7, T                 
        MAC    *AR2+0, A             ; + Y0*E_P7
        MAS    *AR2+, A              ; - Y3*E_P7
        MAS    *AR2+0, A             ; - Y4*E_P7
        MAC    *AR2-, A              ; + Y7*E_P7
        LD     F_P7, T               
MAC    *AR2-, A              ; + Y6*F_P7
        MAS    *AR2-0, A             ; - Y5*F_P7
        MAS    *AR2-, A              ; - Y2*F_P7
        MAC    *AR2-, A              ; + Y1*F_P7                           
        STH    A, -5, Z22            ; Multiply prev summation by 128
                                     ; = Z22

        RPTZ   A, #7                  
        MACP   *AR2+, COEFF2, A      ; 128(B*Y0-D*Y1-A*Y2-C*Y3+C*Y4+A*Y5
        SFTA   A, -6                 
        MAR    *AR2-                 
        ADD    ROUND2, A             ; +D*Y6-B*Y7) + 2*ROUND2               
        STH    A, 1, Z32             ; = Z32

        LD    ROUND3, A
ADD   *AR2-, 9, A            ;   Y7
        SUB   *AR2-, 9, A            ; - Y6               
        SUB   *AR2-, 9, A            ; - Y5
        ADD   *AR2-, 9, A            ; + Y4
        ADD   *AR2-, 9, A            ; + Y3
        SUB   *AR2-, 9, A            ; - Y2
        SUB   *AR2-, 9, A            ; - Y1
        ADD   *AR2, 9, A             ; + Y0
        STH   A, Z42                 ; = Z42
  
        RPTZ  A, #7                  
        MACP  *AR2+, COEFF3, A       ; 218(D*Y0-C*Y1+B*Y2-A*Y3+A*Y4-B*Y5
        SFTA  A, -6                  ; +C*Y6-D*Y7)
        MAR   *AR2-                  
        ADD   ROUND2, A              ; + 2*ROUND2
        STH   A, 1, Z52              ; = Z52

        LD    ROUND2, -6, A          ; (ROUND1)/64
        LD    F_P7, T               
        MAC   *AR2-0, A              ; + F_P7*Y7
        MAS   *AR2-, A               ; - F_P7*Y4
        MAS   *AR2-0, A              ; - F_P7*Y3
        MAC   *AR2+, A               ; + F_P7*Y0
        LD    E_P7, T
        MAS   *AR2+, A               ; - E_P7*Y1
        MAC   *AR2+0, A              ; + E_P7*Y2
        MAC   *AR2+, A               ; + E_P7*Y5
        MAS   *AR2+, A               ; - E_P7*Y6
        STH   A, -5, Z62             ; Multiply prev summation by 128
                                     ; = Z62  
        RPTZ   A, #7
        MACP  *AR2-, COEF_F4, A      ; 128(D*Y0-C*Y1+B*Y2-A*Y3+A*Y4-B*Y5
        SFTA  A, -6                  ; +C*Y6-D*Y7)
        MAR   *AR2+                  
        ADD   ROUND2, A              ; + 2*ROUND2
        STH   A, 1, Z72              ; = Z72
        
        MAR   *+AR2(8)               ; Set AR1 to point to the next set  
                                     ; of 8 inputs

使用特权

评论回复
huangfeng33| | 2014-11-19 11:27 | 显示全部楼层
在DSP的原理基础上设计一个能够产生方波、三角波、阶梯波,波形可选择,学习了。

使用特权

评论回复
elecintop| | 2014-11-30 13:21 | 显示全部楼层
谢楼主分享

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:好好学习,天天向上!

519

主题

4195

帖子

30

粉丝