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

📄 cfft32c.lst

📁 TMS320F2812 FFT 源码,包括详细的应用文档
💻 LST
📖 第 1 页 / 共 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    1

       1              ;========================================================================
       2              ;
       3              ; File Name     : cfft.asm
       4              ; 
       5              ; Originator    : Advanced Embeeded Control
       6              ;                 Texas Instruments Inc.
       7              ; 
       8              ; Description   : This file contain source code for complex FFT
       9              ;               
      10              ; Date          : 26/02/2002 (dd/mm/yyyy)
      11              ;========================================================================    
      12              ; Routine Type  : C Callable
      13              ; Description   :
      14              ; void FFTC_calc(FFTxxxx_handle) 
      15              ; This function implements complex FFT using radix-2 DIT algo
      16              ; 
      17              ; void FFT128C_init(void)
      18              ; This function copies the Twiddle factors from load time address to 
      19              ; its run time address
      20              ;========================================================================
      21              ; COMPLEX FFT MODULES               
      22              ;-----------------------------------------------------------------------
      23              ;    typedef struct {                
      24              ;       long *ipcbptr;
      25              ;       long *tfptr;               
      26              ;       int size;
      27              ;       int nrstage;             
      28              ;       long *magptr;
      29              ;       long *winptr; 
      30              ;       long peakmag;
      31              ;       int peakfrq;          
      32              ;       void (*init)(void);          
      33              ;       void (*izero)(void *);          
      34              ;       void (*calc)(void *);           
      35              ;       void (*mag)(void *);            
      36              ;       void (*win)(void *);              
      37              ;       }FFTxxxC;                        
      38              ;                                             
      39              ;========================================================================
      40              
      41                              .include "sel_q.asm"
      42                              .def    _CFFT32_calc
      43              
      44        799B  COS45K_LSW      .set    799Bh
      45        5A82  COS45K_MSW      .set    5A82h
      46              ;===============================================================================
      47              ; FFT - Computation Routine  (FFT128R_calc)
      48              ;===============================================================================
      49              ;   * This routine takes the 128 point complex data sequence, in bit reversed form  
      50              ;   * It implements Decimation in time FFT algorithm
      51              ;   * Performs inplace computation
      52              ;   * Output in-order data "IPCB"----> Xr(0),Xi(0),Xr(1),Xi(1)...Xr(127)&Xi(127)
      53              ;===============================================================================            
      54              ;----------------------------------------------------
      55              ; MACRO 'ZEROI'     
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    2

      56              ; Number of WORDS/Number of Cycles 12
      57              ; USAGE: Called if the TWIDDLE FACTOR: 1
      58              ; 
      59              ; P=PR+jPI, Q=QR+jQI, W=WR-jWI
      60              ; P'=P+W*Q and Q'=P-W*Q
      61              ;
      62              ; POINTERS AT ENTRY
      63              ; AR6->(PR,PI,PR+1,PI+1,PR+2,PI+2,....)
      64              ; AR2->(QR,QI,QR+1,QI+1,QR+2,QR+2,....)
      65              ; COMPUTATION PERFORMED: INPLACE COMPUTATION
      66              ; AR6   ->      PR'=(PR+QR)/2 
      67              ; AR2   ->      QR'=(PR-QR)/2
      68              ; AR6+1 ->      PI'=(PI+QI)/2
      69              ; AR2+1 ->      QI'=(PI-QI)/2
      70              ; PR and PR', PI and PI', QR and QR', QI and QI' are
      71              ; stored in the same locations
      72              ; POINTERS AT EXIT
      73              ; AR6->(PR+1,PI+1,....) 
      74              ; AR2->(QR+1,QI+1,....)
      75              ;------------------------------------------------------
      76              ;                                                   (Content of REG after exec.)
      77              ZEROI   .macro                      ;                   AR6     AR2              
      78                          MOVL    ACC,*XAR6       ; ACC:=PR           PR      QR  
      79                          SFR     ACC,#1          ; ACC:=PR/2         PR      QR
      80                          MOVL    P,*XAR2         ; P=QR              PR      QR
      81                          ADDL    ACC,P<<PM       ; ACC=PR+QR/2       PR      QR
      82                          MOVL    *XAR6++,ACC     ; PR':=(PR+QR)/2    PI      QR  
      83                          SUBL    ACC,P           ; ACC:=(PR-QR)/2    PI      QR  
      84                          MOVL    *XAR2++,ACC     ; QR':=(PR-QR)/2    PI      QI  
      85              
      86                          MOVL    ACC,*XAR6       ; ACC:=PI           PI      QI  
      87                          SFR     ACC,#1          ; ACC:=PI/2         PI      QI
      88                          MOVL    P,*XAR2         ; P=QI              PI      QI
      89                          ADDL    ACC,P<<PM       ; ACC:=(PI+QI)/2    PI      QI 
      90                          MOVL    *XAR6++,ACC     ; PI':=(PI+QI)/2    PR+1    QI  
      91                          SUBL    ACC,P           ; ACC:=(PI-QI)/2    PR+1    QI  
      92                          MOVL    *XAR2++,ACC     ; QR':=(PI-QI)/2    PR+1    QR+1     
      93                      .endm
      94              
      95              ;----------------------------------------------------
      96              ; MACRO 'PBY2I'     
      97              ; Number of WORDS/Number of Cycles 12
      98              ; USAGE: Called if the TWIDDLE FACTOR: -j 
      99              ; 
     100              ; P=PR+jPI, Q=QR+jQI, W=WR-jWI
     101              ; P'=P+W*Q and Q'=P-W*Q
     102              ;
     103              ; POINTERS AT ENTRY
     104              ; AR6->(PR,PI,PR+1,PI+1,PR+2,PI+2,....)
     105              ; AR2->(QR,QI,QR+1,QI+1,QR+2,QR+2,....)
     106              ; COMPUTATION PERFORMED: INPLACE COMPUTATION
     107              ; AR6   ->      PR'=(PR+QI)/2 
     108              ; AR2   ->      QR'=(PR-QI)/2
     109              ; AR6+1 ->      PI'=(PI-QR)/2
     110              ; AR2+1 ->      QI'=(PI+QR)/2
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    3

     111              ; PR and PR', PI and PI', QR and QR', QI and QI' are
     112              ; stored in the same locations 
     113              ; POINTERS AT EXIT
     114              ; AR6->(PR+1,PI+1,....) 
     115              ; AR2->(QR+1,QI+1,....)
     116              ;------------------------------------------------------         
     117              ;                                                   (Content of REG after exec.)
     118              PBY2I   .macro                      ;                   AR6     AR2  
     119                          
     120                          MOVL    XAR5,*XAR2++    ; XAR5=QR           PR      QI
     121                          MOVL    ACC,*XAR6       ; ACC:=PR           PR      QI
     122                          SFR     ACC,#1          ; ACC:=PR/2         PR      QI
     123                          MOVL    P,*XAR2         ; P:=QI             PR      QI
     124                          ADDL    ACC,P<<PM       ; ACC:=(PR+QI)/2    PR      QI  
     125                          MOVL    *XAR6++,ACC     ; PR':=(PR+QI)/2    PI      QI     
     126                          SUBL    ACC,P           ; ACC:=(PR-QI)/2    PI      QI     
     127                          MOVL    *--XAR2,ACC     ; QR':=(PR-QI)/2    PI      QR
     128                          ADDB    XAR2,#2         ;                   PI      QI
     129                          
     130                          MOVL    ACC,*XAR6       ; ACC:=PI           PI      QI
     131                          SFR     ACC,#1          ; ACC:=PI/2         PI      QI
     132                          MOVL    P,XAR5          ; P=QR              PI      QI
     133                          SUBL    ACC,P<<PM       ; ACC=(PI-QR)/2     PI      QI
     134                          MOVL    *XAR6++,ACC     ; ACC:=(PI-QR)/2    PR+1    QI    
     135                          ADDL    ACC,P           ; ACC:=(PI+QR)/2    PR+1    QI 
     136                          MOVL    *XAR2++,ACC     ; QI':=(PI+QR)/2    PR+1    QR+1
     137                                            
     138                      .endm  
     139              
     140              ;----------------------------------------------------
     141              ; MACRO 'PBY4I'          SPM set to 1bit right shift, XT=w
     142              ; Number of WORDS/Number of Cycles 16
     143              ; USAGE: Called if the TWIDDLE FACTOR: COS(45)-jSIN(45)=0.707-j0.707 
     144              ; 
     145              ; P=PR+jPI, Q=QR+jQI, W=WR-jWI
     146              ; P'=P+W*Q and Q'=P-W*Q
     147              ;
     148              ; POINTERS AT ENTRY
     149              ; TREG=W=|SIN(45)|=|COS(45)|=05a82h
     150              ; AR6->(PR,PI,PR+1,PI+1,PR+2,PI+2,....)
     151              ; AR2->(QR,QI,QR+1,QI+1,QR+2,QR+2,....)
     152              ; CALCULATION PERFORMED: INPLACE COMPUTATION
     153              ; AR6   ->      PR'=(PR+QI*W+QR*W)/2  
     154              ; AR2   ->      QR'=(PR-QI*W-QR*W)/2
     155              ; AR6+1 ->      PI'=(PI+QI*W-QR*W)/2
     156              ; AR2+1 ->      QI'=(PI-QI*W+QR*W)/2
     157              ; PR and PR', PI and PI', QR and QR', QI and QI' are
     158              ; stored in the same locations
     159              ; POINTERS AT EXIT
     160              ; AR6->(PR+1,PI+1,....) 
     161              ; AR2->(QR+1,QI+1,....)
     162              ;------------------------------------------------------         
     163              ;                                                           (Content of REG after exec.)
     164              PBY4I   .macro                      ;                       PREG    AR6  AR2         
     165                                                  ;                       -       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    4

     166                          MOVL    ACC,*XAR6       ; ACC=PR                -       PR   QR  
     167                          SFR     ACC,#1          ; ACC=PR/2              -       PR   QR  
     168                          QMPYL   P,XT,*XAR2      ; PREG=W*QR/2           W*QR/2  PR   QR  
     169                          SUBL    ACC,P           ; ACC=(PR-W*QR)/2       W*QR/2  PR   QR
     170                          MOVL    XAR5,P          ; XAR5=W*QR/2
     171                          QMPYL   P,XT,*+XAR2[2]  ; ACC=(PR-W*QR)/2       W*QI/2  PR   QR
     172                          SUBL    ACC,P           ; ACC=(PR-W*QI-W*QR)/2  W*QI/2  PR   QR 
     173                          MOVL    *XAR2++,ACC     ; QR'=(PR-W*QI-W*QR)/2  W*QI/2  PR   QI
     174                          NEG     ACC             ; ACC=-(PR-W*QI-W*QR)/2 W*QI/2  PR   QI
     175                          ADDL    *XAR6++,ACC     ; PR'=(PR+W*QI+W*QR)/2  W*QI/2  PI   QI
     176              
     177                          MOVL    ACC,*XAR6       ; ACC=PI                W*QI/2  PI   QI
     178                          SFR     ACC,#1          ; ACC=PI/2              W*QI/2  PI   QI
     179                          SUBL    ACC,P           ; ACC=(PI-W*QI)/2       W*QI/2  PI   QI
     180                          ADDL    ACC,XAR5        ; ACC=(PI-W*QI+W*QR)/2  W*QR/2  PI   QI
     181                          MOVL    *XAR2++,ACC     ; QI'=(PI-W*QI+W*QR)/2  W*QR/2  PI   QR+1
     182                          NEG     ACC             ; ACC=-(PI-W*QI+W*QR)/2 W*QR/2  PI   QR+1
     183                          ADDL    *XAR6++,ACC     ; PI'=(PI+W*QI-W*QR)/2  W*QR/2  PR+1 QR+1           
     184                      .endm
     185              
     186              
     187              ;----------------------------------------------------
     188              ; MACRO 'P3BY4I'    SPM set to 1bit right shift, XT=w    
     189              ; Number of WORDS/Number of Cycles 16
     190              ; USAGE: Called if the TWIDDLE FACTOR: COS(90+45)-jSIN(90+45)=-0.707-j0.707 
     191              ; 
     192              ; P=PR+jPI, Q=QR+jQI, W=WR-jWI
     193              ; P'=P+W*Q and Q'=P-W*Q
     194              ;
     195              ; POINTERS AT ENTRY 
     196              ; TREG=W=|SIN(135)|=|COS(135)|=05a82h
     197              ; AR6->(PR,PI,PR+1,PI+1,PR+2,PI+2,....)

⌨️ 快捷键说明

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