⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cfft32c.lst

📁 TMS320F2812 FFT 源码,包括详细的应用文档
💻 LST
📖 第 1 页 / 共 4 页
字号:
     198              ; AR2->(QR,QI,QR+1,QI+1,QR+2,QR+2,....)
     199              ; CALCULATION PERFORMED: INPLACE COMPUTATION
     200              ; AR6   ->      PR'=(PR+QI*W-QR*W)/2  
     201              ; AR2   ->      QR'=(PR-QI*W+QR*W)/2
     202              ; AR6+1 ->      PI'=(PI-QI*W-QR*W)/2
     203              ; AR2+1 ->      QI'=(PI+QI*W+QR*W)/2
     204              ; PR and PR', PI and PI', QR and QR', QI and QI' are
     205              ; stored in the same locations 
     206              ; POINTERS AT EXIT
     207              ; AR6->(PR+1,PI+1,....) 
     208              ; AR2->(QR+1,QI+1,....)
     209              ;------------------------------------------------------         
     210              ;                                                           (Content of REG after exec.)
     211              P3BY4I  .macro                      ;                       AR5     PREG    AR6  AR2 
     212                                                  ;                       -       PR   QR 
     213                          MOVL    ACC,*XAR6       ; ACC=PR                -       PR   QR  
     214                          SFR     ACC,#1          ; ACC=PR/2              -       PR   QR  
     215                          QMPYL   P,XT,*XAR2      ; PREG=W*QR/2           W*QR/2  PR   QR 
     216                          ADDL    ACC,P           ; ACC=(PR+W*QR)/2       W*QR/2  PR   QR
     217                          MOVL    XAR5,P          ; XAR5=W*QR/2           W*QR/2  PR   QR
     218                          QMPYL   P,XT,*+XAR2[2]  ; ACC=(PR+W*QR)/2       W*QI/2  PR   QR
     219                          SUBL    ACC,P           ; ACC=(PR-W*QI+W*QR)/2  W*QI/2  PR   QR 
     220                          MOVL    *XAR2++,ACC     ; QR'=(PR-W*QI+W*QR)/2  W*QI/2  PR   QI
TMS320C2000 COFF Assembler PC Version 3.06 Fri Nov 07 10:50:04 2003

Tools Copyright (c) 1996-2002 Texas Instruments Incorporated
cfft32c.asm                                                          PAGE    5

     221                          NEG     ACC             ; ACC=-(PR-W*QI+W*QR)/2 W*QI/2  PR   QI
     222                          ADDL    *XAR6++,ACC     ; PR'=(PR+W*QI-W*QR)/2  W*QI/2  PI   QI
     223              
     224                          MOVL    ACC,*XAR6       ; ACC=PI                W*QI/2  PI   QI
     225                          SFR     ACC,#1          ; ACC=PI/2              W*QI/2  PI   QI
     226                          ADDL    ACC,P           ; ACC=(PR+W*QI)/2       W*QI/2  PI   QI
     227                          ADDL    ACC,XAR5        ; ACC=(PI+W*QI+W*QR)/2  W*QR/2  PI   QI
     228                          NOP     *,ARP2
     229                          MOVL    *0++,ACC        ; QI'=(PI+W*QI+W*QR)/2  W*QR/2  PI   QR+1
     230                          NEG     ACC             ; ACC=-(PI+W*QI+W*QR)/2 W*QR/2  PI   QR+1
     231                          ADDL    *XAR6,ACC       ; PI'=(PI-W*QI-W*QR)/2  W*QR/2  PI   QR+1
     232                          NOP     *0++            ;                       W*QR/2  PR+1 QR+1
     233                      .endm  
     234              
     235              
     236              ;----------------------------------------------------
     237              ; MACRO 'BFLY'       SPM set to 1bit right shift
     238              ; Number of WORDS/Number of Cycles 21
     239              ; USAGE: General Butterfly RADIX 2 -> TWIDDLE FACTOR W=WR-jWI 
     240              ; 
     241              ; P=PR+jPI, Q=QR+jQI, W=WR-jWI
     242              ; P'=P+W*Q and Q'=P-W*Q
     243              ;
     244              ; REGISTER USED: XAR0,XAR2,XAR3,XAR4,XAR5,XAR6,ACC,XT,P 
     245              ;
     246              ; POINTERS AT ENTRY
     247              ; AR6->(PR,PI,PR+1,PI+1,PR+2,PI+2,....)
     248              ; AR2->(QR,QI,QR+1,QI+1,QR+2,QR+2,....)
     249              ; AR3-> Real Part of Twiddle Factor: WR(COSx)
     250              ; AR4-> Imaginary Part of Twiddle Factor: WI(SINx)
     251              ; AR5-> Temporary Variable
     252              ; CALCULATION PERFORMED: INPLACE COMPUTATION 
     253              ; AR6   ->      PR'=(PR+QR*WR+QI*WI)/2  
     254              ; AR2   ->      QR'=(PR-QR*WR-QI*WI)/2
     255              ; AR6+1 ->      PI'=(PI+QI*WR-QR*WI)/2
     256              ; AR2+1 ->      QI'=(PI-QI*WR+QR*WI)/2
     257              ; PR and PR', PI and PI', QR and QR', QI and QI' are
     258              ; stored in the same locations
     259              ; POINTERS AT EXIT
     260              ; AR6->(PR+1,PI+1,....) 
     261              ; AR2->(QR+1,QI+1,....)
     262              ; AR3-> Real Part of Next Twiddle Factor
     263              ; AR4-> Imaginary Part ofNext Twiddle Factor
     264              ;------------------------------------------------------            
     265                  
     266              BFLY    .macro  p                   ;                         XT    AR6     AR2     AR3     AR4  
     267                                                  ;                         -     PR      QR      WR      WI 
     268                          MOVL    XT,*XAR3        ; XT=WR                   WR    PR      QR      WR      WI
     269                          NOP     *0++            ;                         WR    PR      QR      WR+n    WI
     270                          QMPYL   P,XT,*XAR2++    ; P=QR*WR                 WR    PR      QI      WR+n    WI
     271                          QMPYL   ACC,XT,*,ARP4   ; ACC=QI*WR               WR    PR      QI      WR+n    WI
     272                          MOVL    *-SP[TEMP],P    ; TEMP=QR*WR              WR    PR      QI      WR+n    WI
     273              
     274                          MOVL    XT,*0++         ; XT=WI                   WR    PR      QI      WR+n    WI+n
     275                          QMPYL   P,XT,*--XAR2    ; P=WI*QR                 WR    PR      QR      WR+n    WI+n
TMS320C2000 COFF Assembler PC Version 3.06 Fri Nov 07 10:50:04 2003

Tools Copyright (c) 1996-2002 Texas Instruments Incorporated
cfft32c.asm                                                          PAGE    6

     276                          SUBL    ACC,P           ; ACC=(QI*WR-QR*WI)       WR    PR      QR      WR+n    WI+n
     277                          
     278                          .if(TF_QFMAT==Q30)
     279                          LSL     ACC,#1          ; ACC=(QI*WR-QR*WI) (Q30)
     280                          .endif
     281              
     282                          MOVL    XAR5,ACC        ; XAR5=(QI*WR-QR*WI) (Q30)
     283                                      
     284                          QMPYL   ACC,XT,*+XAR2[2]; ACC=WI*QI              WR    PR      QR      WR+n    WI+n
     285                          ADDL    ACC,*-SP[TEMP]  ; ACC=(QR*WR+QI*WI)      WR    PR      QR      WR+n    WI+n
     286              
     287                          .if(TF_QFMAT==Q30)
     288                          LSL     ACC,#1          ; ACC=(QR*WR+QI*WI) in Q30
     289                          .endif
     290              
     291                          MOVL    P,*XAR6         ; P=PR                    WR    PR      QR      WR+n    WI+n
     292                          ADDL    ACC,P<<PM       ; ACC=(PR+QR*WR+QI*WI)/2  WR    PR      QR      WR+n    WI+n
     293                          MOVL    *XAR6++,ACC     ; PR'=(PR+QR*WR+QI*WI)/2  WR    PI      QR      WR+n    WI+n
     294              
     295                          SUBL    P,ACC           ; P=(PR-QR*WR-QI*WI)/2    WR    PI      QR      WR+n    WI+n
     296                          MOVL    *XAR2++,P       ; QR'=(PR-QR*WR-QI*WI)/2  WR    PI      QI      WR+n    WI+n
     297              
     298                          MOVL    ACC,XAR5        ; ACC=(QI*WR-QR*WI)/2     WR    PI      QI      WR+n    WI+n
     299                          MOVL    P,*XAR6         ; P=PI                    WR    PI      QI      WR+n    WI+n
     300                          ADDL    ACC,P<<PM       ; ACC=(PI+QI*WR-QR*WI)/2  WR    PI      QI      WR+n    WI+n
     301                          MOVL    *XAR6++,ACC     ; (PI+QI*WR-QR*WI)/2      WR    PR+1    QI      WR+n    WI+n
     302              
     303                          SUBL    P,ACC           ; P=(PI-QI*WR+QR*WI)/2    WR    PR+1    QI      WR+n    WI+n
     304                          MOVL    *XAR2++,P       ; QI'=(PI-QI*WR+QR*WI)/2  WR    PR+1    QR+1    WR+n    WI+n
     305                      .endm
     306                  
     307                                                                                                                           
     308              ;----------------------------------------------------
     309              ; MACRO 'COMBO'  SPM set to 1bit right shift   
     310              ; Number of WORDS/Number of Cycles 33
     311              ; USAGE: RADIX 4 USED AT THE FIRST STAGE
     312              ;
     313              ; REGISTER USED: XAR0,XAR1,XAR2,XAR3,XAR4,XAR5,XAR6,ACC,XT,P 
     314              ;
     315              ; POINTERS AT ENTRY 
     316              ; AR6->(R1,I1)
     317              ; AR2->(R2,I2)
     318              ; AR3->(R3,I3)
     319              ; AR4->(R4,I4)
     320              ; AR5-> Temporary Variable
     321              ; CALCULATION PERFORMED: INPLACE COMPUTATION 
     322              ; AR6   ->      R1'=(R1+R2+R3+R4)/4
     323              ; AR2   ->      R2'=(R1-R2+I3-I4)/4
     324              ; AR3   ->      R3'=(R1+R2-R3-R4)/4
     325              ; AR4   ->      R4'=(R1-R2-I3+I4)/4
     326              ; AR6+1 ->      I1'=(I1+I2+I3+I4)/4
     327              ; AR2+1 ->      I2'=(I1-I2-R3+R4)/4
     328              ; AR3+1 ->      I3'=(I1+I2-I3-I4)/4
     329              ; AR4+1 ->      I4'=(I1-I2+R3-R4)/4
     330              ; POINTERS AT EXIT
TMS320C2000 COFF Assembler PC Version 3.06 Fri Nov 07 10:50:04 2003

Tools Copyright (c) 1996-2002 Texas Instruments Incorporated
cfft32c.asm                                                          PAGE    7

     331              ; AR6->(R5,I5) 
     332              ; AR2->(R6,I6)
     333              ; AR3->(R7,I7) 
     334              ; AR4->(R8,I8)
     335              ;---------------------------------------------------         
     336              ;                                                           (Content of REG after exec.)                     
     337              COMBO   .macro                      ;                       AR6 AR2 AR3 AR4  
     338                          MOVL    ACC,*XAR3       ; ACC=R3                R1  R2  R3  R4  
     339                          SFR     ACC,#1          ; ACC=R3/2
     340                          MOVL    P,*XAR4         ; P=R4
     341                          SUBL    ACC,P<<PM       ; ACC=(R3-R4)/2
     342                          MOVL    XT,ACC          ; T=(R3-R4)/2
     343                          ADDL    ACC,P           ; ACC=(R3+R4)/2
     344                          MOVL    XAR1,ACC        ; XAR1=(R3+R4)/2
     345              
     346                          MOVL    ACC,*XAR6       ; ACC=R1               
     347                          SFR     ACC,#1          ; ACC=R1/2
     348                          MOVL    P,*XAR2         ; P=R2
     349                          SUBL    ACC,P<<PM       ; ACC=R1-R2/2
     350                          MOVL    *-SP[TEMP],ACC     ; temp=(R1-R2)/2
     351                          ADDL    ACC,*XAR2       ; ACC=(R1+R2)/2
     352              
     353                          SFR     ACC,#1          ; ACC=(R1+R2)/4
     354                          MOVL    P,XAR1          ; P=(R3+R4)/2
     355                          ADDL    ACC,P<<PM       ; ACC=(R1+R2+R3+R4)/4
     356                          MOVL    *XAR6++,ACC     ; R1'=(R1+R2+R3+R4)/4
     357                          SUBL    ACC,P           ; ACC=(R1+R2-R3-R4)/4
     358                          MOVL    *XAR3++,ACC     ; R3'=(R1+R2-R3-R4)/4
     359              
     360                          MOVL    ACC,*XAR3       ; ACC=I3
     361                          SFR     ACC,#1          ; ACC=I3/2
     362                          MOVL    P,*+XAR4[2]     ; P=I4
     363                          SUBL    ACC,P<<PM       ; ACC=(I3-I4)/2
     364                          MOVL    XAR1,ACC        ; XAR1=(I3-I4)/2
     365                          ADDL    ACC,P           ; ACC=(I3+I4)/2
     366                          MOVL    XAR5,ACC        ; XAR5=(I3+I4)/2
     367              
     368                          MOVL    ACC,*-SP[TEMP]     ; ACC=(R1-R2)/2
     369                          SFR     ACC,#1          ; ACC=(R1-R2)/4
     370                          MOVL    P,XAR1          ; P=(I3-I4)/2
     371                          ADDL    ACC,P<<PM       ; ACC=(R1-R2+I3-I4)/4
     372                          MOVL    *XAR2++,ACC     ; R2'=(R1-R2+I3-I4)/4
     373                          SUBL    ACC,P           ; ACC=(R1-R2-I3+I4)/4
     374                          MOVL    *XAR4++,ACC     ; R4'=(R1-R2-I3+I4)/4
     375                          
     376                          MOVL    ACC,*XAR6       ; ACC=I1
     377                          SFR     ACC,#1          ; ACC=I1/2
     378                          MOVL    P,*XAR2         ; P=I2
     379                          SUBL    ACC,P<<PM       ; ACC=(I1-I2)/2
     380                          MOVL    *-SP[TEMP],ACC     ; temp=(I1-I2)/2
     381                          ADDL    ACC,P           ; ACC=(I1+I2)/2
     382              
     383                          SFR     ACC,#1          ; ACC=(I1+I2)/4
     384                          MOVL    P,XAR5          ; P=(I3+I4)/2
     385                          ADDL    ACC,P<<PM       ; ACC=(I1+I2+I3+I4)/4
TMS320C2000 COFF Assembler PC Version 3.06 Fri Nov 07 10:50:04 2003

Tools Copyright (c) 1996-2002 Texas Instruments Incorporated
cfft32c.asm                                                          PAGE    8

     386                          MOVL    *XAR6,ACC       ; I1'=(I1+I2+I3+I4)/4
     387                          NOP     *0++
     388                          SUBL    ACC,P           ; ACC=(I1+I2-I3-I4)/4
     389                          MOVL    *XAR3,ACC       ; I3'=(I1+I2-I3-I4)/4
     390                          NOP     *0++
     391              
     392              
     393                          MOVL    ACC,*-SP[TEMP]     ; ACC=(I1-I2)/2
     394                          SFR     ACC,#1          ; ACC=(I1-I2)/4

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -