网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 61IC中国电子在线 >> DSP >> 代码示例 >> TI DSP代码示例 >> C5000 >> 文章正文
  在DSP上实现DCT的三角波/方波/正弦波的显示代码(3)         ★★★ 【字体:
在DSP上实现DCT的三角波/方波/正弦波的显示代码(3)
作者:61IC    文章来源:本站原创    点击数:    更新时间:2007-1-22    

 

*********************************************************************
;            *
; PROCESS FOURTH 8 INPUTS.     Y(0,3)...Y(7,3)  ->  Z(0,3)...Z(7,3) *
;            *
*********************************************************************

        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, Z03                ; = Z03


        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, Z13             ; = Z13

       
        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, Z23            ; Multiply prev summation by 128
                                     ; = Z23


        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, Z33             ; = Z33


        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, Z43                 ; = Z43

  
        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, Z53              ; = Z53


        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, Z63             ; Multiply prev summation by 128
                                     ; = Z63 

        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, Z73              ; = Z73
       
        MAR   *+AR2(8)               ; Set AR1 to point to the next set 
                                     ; of 8 inputs

*********************************************************************
;            *
; PROCESS FIFTH 8 INPUTS.     Y(0,4)...Y(7,4)  ->  Z(0,4)...Z(7,4)  *
;            *
*********************************************************************

        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, Z04                ; = Z04


        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, Z14             ; = Z14

       
        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, Z24            ; Multiply prev summation by 128
                                     ; = Z24


        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, Z34             ; = Z34


        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, Z44                 ; = Z44

  
        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, Z54              ; = Z54


        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, Z64             ; Multiply prev summation by 128
                                     ; = Z64 

        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, Z74              ; = Z74
       
        MAR   *+AR2(8)               ; Set AR1 to point to the next set 
                                     ; of 8 inputs

*********************************************************************
;            *
; PROCESS SIXTH 8 INPUTS.     Y(0,5)...Y(7,5)  ->  Z(0,5)...Z(7,5)  *
;            *
*********************************************************************

        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, Z05                ; = Z05


        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, Z15             ; = Z15

       
        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, Z25            ; Multiply prev summation by 128
                                     ; = Z25


        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, Z35             ; = Z35


        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, Z45                 ; = Z45

  
        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, Z55              ; = Z55


        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, Z65             ; Multiply prev summation by 128
                                     ; = Z65 

        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, Z75              ; = Z75
       
        MAR   *+AR2(8)               ; Set AR1 to point to the next set 
                                     ; of 8 inputs


*********************************************************************
;            *
; PROCESS SEVENTH 8 INPUTS.   Y(0,6)...Y(7,6)  ->  Z(0,6)...Z(7,6)  *
;            *
*********************************************************************

        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, Z06                ; = Z06


        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, Z16             ; = Z16

       
        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, Z26            ; Multiply prev summation by 128
                                     ; = Z26


        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, Z36             ; = Z36


        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, Z46                 ; = Z46

  
        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, Z56              ; = Z56


        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, Z66             ; Multiply prev summation by 128
                                     ; = Z66 

        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, Z76              ; = Z76
       
        MAR   *+AR2(8)               ; Set AR1 to point to the next set 
                                     ; of 8 inputs


*********************************************************************
;            *
; PROCESS EIGHTH 8 INPUTS.    Y(0,7)...Y(7,7)  ->  Z(0,7)...Z(7,7)  *
;            *
*********************************************************************

        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, Z07                ; = Z07


        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, Z17             ; = Z17

       
        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, Z27            ; Multiply prev summation by 128
                                     ; = Z27


        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, Z37             ; = Z37


        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, Z47                 ; = Z47

  
        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, Z57              ; = Z57


        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, Z67             ; Multiply prev summation by 128
                                     ; = Z67 

        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, Z77              ; = Z77
       
        MAR   *+AR2(8)               ; Set AR1 to point to the next set 
                                     ; of 8 inputs

 

DCT3    NOP
        NOP

**  PLACE FDCT COEFFICIENTS IN FILE POINTED BY PA2

        .IF     MODE=1
        STM     #63, AR0             ; AR0= # of outputs - 1     
        STM     #Z00, AR1            ; AR1= addr of first output
BEG1    PORTW   *AR1+, #PA2BIS       ; Send output value
  NOP
  NOP
        BANZ    BEG1, *AR0-          ; Repeat above process (64x)
       
  .ENDIF

EXIT NOP
        B      START                 ; Go to start of program.
                                     ; Grab another 64 pixels

 


******************************************************
* SET OF COEFFICIENTS BEING USED IN TRANFORM MATRIX  *
******************************************************


COEF_F1 .WORD  -22725,-19266,-12873,-4520,4520,12873,19266,22725
COEFF2  .WORD  19266,-4520,-22725,-12873,12873,22725,4520,-19266
COEFF3  .WORD  12873,-22725,4520,19266,-19266,-4520,22725,-12873
COEF_F4 .WORD  -4520,12873,-19266,22725,-22725,19266,-12873,4520


*       with: A = cos(?16)*?*16384  = 22725
*       B = cos(3?16)*?*16384 = 19266
*       C = cos(5?16)*?*16384 = 12873
*       D = cos(7?16)*?*16384 = 4520
*             E = cos(?8)*?*16384   = 21407
*             F = cos(3?8)*?*16384  = 8867
*

 .END

               欢迎点击进入:TI德州中文网   (国内唯一针对TI应用的中文技术网站)    文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    TMS320C55x DSP 库
    TMS320C54x DSP 库
    DSP5410实现PN码(汇编源代码…
    用于TMS320VC5502的语言压缩…
    有关DSP进程及其线程的代码
    在DSP上实现DCT的三角波/方波…
    在DSP上实现DCT的三角波/方波…
    TMS320VC5402下电话接口的简…
    TMS320C54XX DSP的串行口试验…
    TMS320C54XXDSP的定时器试验…
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    站长:61IC 湘ICP备05002478号