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

📄 cfft32c.lst

📁 TMS320F2812 FFT 源码,包括详细的应用文档
💻 LST
📖 第 1 页 / 共 4 页
字号:
     395                          MOVL    P,XT            ; P=(R3-R4)/2
     396                          ADDL    ACC,P<<PM       ; ACC=ACC=(I1-I2+R3-R4)/4
     397                          MOVL    *XAR4,ACC       ; I4'=(I1-I2+R3-R4)/4
     398                          NOP     *0++
     399                          SUBL    ACC,P           ; ACC=(I1-I2-R3+R4)/4
     400                          MOVL    *XAR2,ACC       ; I2'=(I1-I2-R3+R4)/4
     401                          NOP     *0++
     402                          .endm
     403              
     404              ;====================================================================
     405              ; Function Local Frame
     406              ;====================================================================
     407              ;   |_______|
     408              ;   |_______|<- Stack Pointer                           (SP) <---SP 
     409              ;   |_______|<- GLCB                                    (SP-1)
     410              ;   |_______|<- BLC  (Butterfly loop counter)           (SP-2)
     411              ;   |_______|<- GLC  (Group loop counter)               (SP-3)
     412              ;   |_______|<- SLC  (Stage loop counter)               (SP-4)
     413              ;   |_______|<- TOST (Twiddle offset, for decimation)   (SP-5)
     414              ;   |_______|<- DOST (Data offset)                      (SP-6) 
     415              ;   |_______|<- TEMP                                    (SP-7) & (SP-8)                                      
     416              ;===================================================================
     417        000A  FFT_LOCAL_FRAME     .set    10
     418        0001  GLCB                .set    1
     419        0002  BLC                 .set    2
     420        0003  GLC                 .set    3
     421        0004  SLC                 .set    4
     422        0005  TOST                .set    5
     423        0006  DOST                .set    6
     424        0008  TEMP                .set    8
     425        0009  WRWIOST             .set    9
     426              
     427                           
     428 00000000       _CFFT32_calc:
     429 00000000 B2BD              PUSH    XAR1            ; Context Save
     430 00000001 AABD              PUSH    XAR2
     431 00000002 A2BD              PUSH    XAR3 
     432 00000003 FE0A              ADDB    SP,#FFT_LOCAL_FRAME  ; Create Local Frame
     433                                            
     434 00000004 3B01              SETC    SXM
     435 00000005 FF6A              SPM     -1              ; SPM set to 1bit right shift   
     436                                          
     437 00000006 C5A4              MOVL    XAR7,XAR4       ; XAR7->FFT_handle             
     438 00000007 86C7              MOVL    XAR2,*XAR7      ; XAR2=ipcbptr
     439 00000008 82A2              MOVL    XAR3,XAR2       ; XAR3=ipcbptr
     440 00000009 8AA2              MOVL    XAR4,XAR2       ; XAR4=ipcbptr
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    9

     441                          
     442 0000000a C4A2              MOVL    XAR6,XAR2       ; XAR6=ipcbptr 
     443 0000000b DA04              ADDB    XAR2,#4         ; XAR2=ipcbptr+4
     444 0000000c DB08              ADDB    XAR3,#8         ; XAR3=ipcbptr+8
     445 0000000d DC0C              ADDB    XAR4,#12        ; XAR4=ipcbptr+12
     446 0000000e D00E              MOVB    XAR0,#14        ; XAR0=14
     447                                                                                                                        
     448              ;-----------------------------------------------------------------
     449              ; Stage 1 & 2 - Using the RADIX 4 COMBO Macro
     450              ;-----------------------------------------------------------------
     451 0000000f C342              MOVL    *-SP[2],XAR7    ; (SP-2)=FFT_handle
     452 00000010 5603              MOV     ACC,*+XAR7[4]<<14
         00000011 0EE7 
     453 00000012 FF0E              SUB     ACC,#1<<14
         00000013 0001 
     454 00000014 97A7              MOV     AR7,AH          ; Loop (N/4 - 1) times
     455                        
     456 00000015       STAGE1_2_LP:
     457 00000015                   COMBO
1        00000015 06C3              MOVL    ACC,*XAR3       ; ACC=R3                R1  R2  R3  R4  
1        00000016 FF40              SFR     ACC,#1          ; ACC=R3/2
1        00000017 A3C4              MOVL    P,*XAR4         ; P=R4
1        00000018 11AC              SUBL    ACC,P<<PM       ; ACC=(R3-R4)/2
1        00000019 1EAC              MOVL    XT,ACC          ; T=(R3-R4)/2
1        0000001a 07AB              ADDL    ACC,P           ; ACC=(R3+R4)/2
1        0000001b 8BA9              MOVL    XAR1,ACC        ; XAR1=(R3+R4)/2
1                     
1        0000001c 06C6              MOVL    ACC,*XAR6       ; ACC=R1               
1        0000001d FF40              SFR     ACC,#1          ; ACC=R1/2
1        0000001e A3C2              MOVL    P,*XAR2         ; P=R2
1        0000001f 11AC              SUBL    ACC,P<<PM       ; ACC=R1-R2/2
1        00000020 1E48              MOVL    *-SP[TEMP],ACC     ; temp=(R1-R2)/2
1        00000021 07C2              ADDL    ACC,*XAR2       ; ACC=(R1+R2)/2
1                     
1        00000022 FF40              SFR     ACC,#1          ; ACC=(R1+R2)/4
1        00000023 B2AB              MOVL    P,XAR1          ; P=(R3+R4)/2
1        00000024 10AC              ADDL    ACC,P<<PM       ; ACC=(R1+R2+R3+R4)/4
1        00000025 1E86              MOVL    *XAR6++,ACC     ; R1'=(R1+R2+R3+R4)/4
1        00000026 03AB              SUBL    ACC,P           ; ACC=(R1+R2-R3-R4)/4
1        00000027 1E83              MOVL    *XAR3++,ACC     ; R3'=(R1+R2-R3-R4)/4
1                     
1        00000028 06C3              MOVL    ACC,*XAR3       ; ACC=I3
1        00000029 FF40              SFR     ACC,#1          ; ACC=I3/2
1        0000002a A3D4              MOVL    P,*+XAR4[2]     ; P=I4
1        0000002b 11AC              SUBL    ACC,P<<PM       ; ACC=(I3-I4)/2
1        0000002c 8BA9              MOVL    XAR1,ACC        ; XAR1=(I3-I4)/2
1        0000002d 07AB              ADDL    ACC,P           ; ACC=(I3+I4)/2
1        0000002e 83A9              MOVL    XAR5,ACC        ; XAR5=(I3+I4)/2
1                     
1        0000002f 0648              MOVL    ACC,*-SP[TEMP]     ; ACC=(R1-R2)/2
1        00000030 FF40              SFR     ACC,#1          ; ACC=(R1-R2)/4
1        00000031 B2AB              MOVL    P,XAR1          ; P=(I3-I4)/2
1        00000032 10AC              ADDL    ACC,P<<PM       ; ACC=(R1-R2+I3-I4)/4
1        00000033 1E82              MOVL    *XAR2++,ACC     ; R2'=(R1-R2+I3-I4)/4
1        00000034 03AB              SUBL    ACC,P           ; ACC=(R1-R2-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   10

1        00000035 1E84              MOVL    *XAR4++,ACC     ; R4'=(R1-R2-I3+I4)/4
1                                 
1        00000036 06C6              MOVL    ACC,*XAR6       ; ACC=I1
1        00000037 FF40              SFR     ACC,#1          ; ACC=I1/2
1        00000038 A3C2              MOVL    P,*XAR2         ; P=I2
1        00000039 11AC              SUBL    ACC,P<<PM       ; ACC=(I1-I2)/2
1        0000003a 1E48              MOVL    *-SP[TEMP],ACC     ; temp=(I1-I2)/2
1        0000003b 07AB              ADDL    ACC,P           ; ACC=(I1+I2)/2
1                     
1        0000003c FF40              SFR     ACC,#1          ; ACC=(I1+I2)/4
1        0000003d A0AB              MOVL    P,XAR5          ; P=(I3+I4)/2
1        0000003e 10AC              ADDL    ACC,P<<PM       ; ACC=(I1+I2+I3+I4)/4
1        0000003f 1EC6              MOVL    *XAR6,ACC       ; I1'=(I1+I2+I3+I4)/4
1        00000040 77BB              NOP     *0++
1        00000041 03AB              SUBL    ACC,P           ; ACC=(I1+I2-I3-I4)/4
1        00000042 1EC3              MOVL    *XAR3,ACC       ; I3'=(I1+I2-I3-I4)/4
1        00000043 77BB              NOP     *0++
1                     
1                     
1        00000044 0648              MOVL    ACC,*-SP[TEMP]     ; ACC=(I1-I2)/2
1        00000045 FF40              SFR     ACC,#1          ; ACC=(I1-I2)/4
1        00000046 ABAB              MOVL    P,XT            ; P=(R3-R4)/2
1        00000047 10AC              ADDL    ACC,P<<PM       ; ACC=ACC=(I1-I2+R3-R4)/4
1        00000048 1EC4              MOVL    *XAR4,ACC       ; I4'=(I1-I2+R3-R4)/4
1        00000049 77BB              NOP     *0++
1        0000004a 03AB              SUBL    ACC,P           ; ACC=(I1-I2-R3+R4)/4
1        0000004b 1EC2              MOVL    *XAR2,ACC       ; I2'=(I1-I2-R3+R4)/4
1        0000004c 77BB              NOP     *0++
     458 0000004d 000F              BANZ    STAGE1_2_LP,AR7--  
         0000004e FFC8 
     459              
     460              ;------------------------------------------------------------------
     461              ; Stage 3 - Using ZEROI, PBY4I,PBY2I,P3BY4I Macros
     462              ;------------------------------------------------------------------
     463 0000004f C542              MOVL    XAR7,*-SP[2]    ; XAR7=FFT_handle
     464 00000050 C4C7              MOVL    XAR6,*XAR7      ; XAR6=ipcbptr 
     465 00000051 86C7              MOVL    XAR2,*XAR7      ; XAR2=ipcbptr
     466 00000052 DA10              ADDB    XAR2,#16        ; XAR2=ipcbptr+16
     467 00000053 D012              MOVB    XAR0,#18
     468              
     469 00000054 28A9              MOV     AL,#COS45K_LSW
         00000055 799B 
     470 00000056 28A8              MOV     AH,#COS45K_MSW
         00000057 5A82 
     471 00000058 1EAC              MOVL    XT,ACC          ; XT=COS(45) in Q31 format
     472                              
     473 00000059 5603              MOV     ACC,*+XAR7[4]<<13
         0000005a 0DE7 
     474 0000005b FF0D              SUB     ACC,#1<<13
         0000005c 0001 
     475 0000005d 97A1              MOV     AR1,AH          ; Loop (N/8 - 1) times
     476                     
     477 0000005e       STAGE3_LP:  ZEROI
1        0000005e 06C6              MOVL    ACC,*XAR6       ; ACC:=PR           PR      QR  
1        0000005f FF40              SFR     ACC,#1          ; ACC:=PR/2         PR      QR
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   11

1        00000060 A3C2              MOVL    P,*XAR2         ; P=QR              PR      QR
1        00000061 10AC              ADDL    ACC,P<<PM       ; ACC=PR+QR/2       PR      QR
1        00000062 1E86              MOVL    *XAR6++,ACC     ; PR':=(PR+QR)/2    PI      QR  
1        00000063 03AB              SUBL    ACC,P           ; ACC:=(PR-QR)/2    PI      QR  
1        00000064 1E82              MOVL    *XAR2++,ACC     ; QR':=(PR-QR)/2    PI      QI  
1                     
1        00000065 06C6              MOVL    ACC,*XAR6       ; ACC:=PI           PI      QI  
1        00000066 FF40              SFR     ACC,#1          ; ACC:=PI/2         PI      QI
1        00000067 A3C2              MOVL    P,*XAR2         ; P=QI              PI      QI
1        00000068 10AC              ADDL    ACC,P<<PM       ; ACC:=(PI+QI)/2    PI      QI 
1        00000069 1E86              MOVL    *XAR6++,ACC     ; PI':=(PI+QI)/2    PR+1    QI  
1        0000006a 03AB              SUBL    ACC,P           ; ACC:=(PI-QI)/2    PR+1    QI  
1        0000006b 1E82              MOVL    *XAR2++,ACC     ; QR':=(PI-QI)/2    PR+1    QR+1     
     478 0000006c                   PBY4I
1                                                         ;                       -       PR   QR 
1        0000006c 06C6              MOVL    ACC,*XAR6       ; ACC=PR                -       PR   QR  
1        0000006d FF40              SFR     ACC,#1          ; ACC=PR/2              -       PR   QR  
1        0000006e 5667              QMPYL   P,XT,*XAR2      ; PREG=W*QR/2           W*QR/2  PR   QR  
         0000006f 00C2 
1        00000070 03AB              SUBL    ACC,P           ; ACC=(PR-W*QR)/2       W*QR/2  PR   QR
1        00000071 A9A5              MOVL    XAR5,P          ; XAR5=W*QR/2
1        00000072 5667              QMPYL   P,XT,*+XAR2[2]  ; ACC=(PR-W*QR)/2       W*QI/2  PR   QR
         00000073 00D2 
1        00000074 03AB              SUBL    ACC,P           ; ACC=(PR-W*QI-W*QR)/2  W*QI/2  PR   QR 
1        00000075 1E82              MOVL    *XAR2++,ACC     ; QR'=(PR-W*QI-W*QR)/2  W*QI/2  PR   QI
1        00000076 FF54              NEG     ACC             ; ACC=-(PR-W*QI-W*QR)/2 W*QI/2  PR   QI
1        00000077 5601              ADDL    *XAR6++,ACC     ; PR'=(PR+W*QI+W*QR)/2  W*QI/2  PI   QI
         00000078 0086 
1                     
1        00000079 06C6              MOVL    ACC,*XAR6       ; ACC=PI                W*QI/2  PI   QI
1        0000007a FF40              SFR     ACC,#1          ; ACC=PI/2              W*QI/2  PI   QI
1        0000007b 03AB              SUBL    ACC,P           ; ACC=(PI-W*QI)/2       W*QI/2  PI   QI
1        0000007c 07A5              ADDL    ACC,XAR5        ; ACC=(PI-W*QI+W*QR)/2  W*QR/2  PI   QI
1        0000007d 1E82              MOVL    *XAR2++,ACC     ; QI'=(PI-W*QI+W*QR)/2  W*QR/2  PI   QR+1
1        0000007e FF54              NEG     ACC             ; ACC=-(PI-W*QI+W*QR)/2 W*QR/2  PI   QR+1
1        0000007f 5601              ADDL    *XAR6++,ACC     ; PI'=(PI+W*QI-W*QR)/2  W*QR/2  PR+1 QR+1           
         00000080 0086 
     479 00000081                   PBY2I
1                                 
1        00000081 8382              MOVL    XAR5,*XAR2++    ; XAR5=QR           PR      QI
1        00000082 06C6              MOVL    ACC,*XAR6       ; ACC:=PR           PR      QI
1        00000083 FF40              SFR     ACC,#1          ; ACC:=PR/2         PR      QI
1        00000084 A3C2              MOVL    P,*XAR2         ; P:=QI             PR      QI
1        00000085 10AC              ADDL    ACC,P<<PM       ; ACC:=(PR+QI)/2    PR      QI  
1        00000086 1E86              MOVL    *XAR6++,ACC     ; PR':=(PR+QI)/2    PI      QI     
1        00000087 03AB              SUBL    ACC,P           ; ACC:=(PR-QI)/2    PI      QI     

⌨️ 快捷键说明

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