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

📄 fft.lst

📁 54系列dsp算法程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
TMS320C54x COFF Assembler       Beta Version 1.16     Mon Sep 23 13:58:58 1996
Copyright (c) 1996        Texas Instruments Incorporated 

fft.asm                                                              PAGE    1

       1            *********************************************************************************
       2            *       (C) COPYRIGHT TEXAS INSTRUMENTS, INC. 1996                              *
       3            *********************************************************************************
       4            *                                                                               *
       5            * MODULE NAME:  fft.asm                                                         *
       6            *                                                                               *
       7            * AUTHORS:      Simon Lau and Nathan Baltz                                      *
       8            *                                                                               *
       9            * DESCRIPTION:  PHASE TWO   (LogN)-Stage Complex FFT                            *
      10            *               This function is called from the main module of the 'C54x Real  *
      11            *               FFT code.  Here we assume that the original 2N-point real input *
      12            *               sequence is already packed into an N-point complex sequence and *
      13            *               stored into the data processing buffer in bit-reversed order    *
      14            *               (as done in Phase One).  Now we perform an in-place, N-point    *
      15            *               complex FFT on the data processing buffer, dividing the outputs *
      16            *               by 2 at the end of each stage to prevent overflow.  The         *
      17            *               resulting N-point complex sequence will be unpacked into a      *
      18            *               2N-point complex sequence in Phase Three & Four.                *
      19            *                                                                               *
      20            * REGISTER USAGE:   AR0   offset to next butterfly  (Stages 1 & 2)              *
      21            *                         index of twiddle tables (remaining stages)            *
      22            *                   AR1   group counter                                         *
      23            *                   AR2   pointer to 1st butterfly data PR, PI                  *
      24            *                   AR3   pointer to 2nd butterfly data QR, QI                  *
      25            *                   AR4   pointer to cosine value WR                            *
      26            *                   AR5   pointer to sine value WI                              *
      27            *                   AR6   butterfly counter                                     *
      28            *                   AR7   start address of data processing buffer (Stages 1 & 2)*
      29            *                         stage counter (remaining stages)                      *
      30            *                   BK                                                          *
      31            *                   BRC                                                         *
      32            *                                                                               *
      33            * DATE:         7-16-1996                                                       *
      34            *                                                                               *
      35            *********************************************************************************
      36            
      37                    .mmregs
      38                    .include    "fft_size.inc"
      39                    .def        fft
      40                    .ref        fft_data, d_grps_cnt, d_twid_idx, d_data_idx, sine, cosine
      41            
      42                    .asg    AR1,GROUP_COUNTER
      43                    .asg    AR2,PX
      44                    .asg    AR3,QX
      45                    .asg    AR4,WR
      46                    .asg    AR5,WI
      47                    .asg    AR6,BUTTERFLY_COUNTER
      48                    .asg    AR7,DATA_PROC_BUF               ; for Stages 1 & 2
      49                    .asg    AR7,STAGE_COUNTER               ; for the remaining stages
      50            
      51      0000  K_ZERO_BK       .set    0            
      52      0200  K_TWID_TBL_SIZE .set    512                     ; Twiddle table size
      53      0002  K_DATA_IDX_1    .set    2                       ; Data index for Stage 1
      54      0004  K_DATA_IDX_2    .set    4                       ; Data index for Stage 2
      55      0008  K_DATA_IDX_3    .set    8                       ; Data index for Stage 3
TMS320C54x COFF Assembler       Beta Version 1.16     Mon Sep 23 13:58:58 1996
Copyright (c) 1996        Texas Instruments Incorporated 

fft.asm                                                              PAGE    2

      56      0004  K_FLY_COUNT_3   .set    4                       ; Butterfly counter for Stage 3
      57      0080  K_TWID_IDX_3    .set    128                     ; Twiddle index for Stage 3
      58            
      59            
      60 000000               .text
      61            
      62 000000       fft:       
      63            
      64            ; Stage 1 ----------------------------------------------------------------------
      65            
      66 000000 7719          STM     #K_ZERO_BK,BK                   ; BK=0 so that *ARn+0% == *ARn+0
         000001 0000 
      67 000002 ED1F          LD      #-1,ASM                         ; outputs div by 2 at each stage
      68 000003 E772          MVMM    DATA_PROC_BUF,PX                ; PX -> PR
      69 000004 4482          LD      *PX,16,A                        ; A  :=  PR
      70 000005 7713          STM     #fft_data+K_DATA_IDX_1,QX       ; QX -> QR
         000006 0002!
      71 000007 771A          STM     #K_FFT_SIZE/2-1,BRC
         000008 0003 
      72 000009 F272          RPTBD   stage1end-1
         00000a 0014'
      73 00000b 7710          STM     #K_DATA_IDX_1+1,AR0
         00000c 0003 
      74            
      75 00000d 4183          SUB     *QX,16,A,B                      ; B  :=  PR-QR
      76 00000e 3C83          ADD     *QX,16,A                        ; A  :=  PR+QR
      77 00000f 8692          STH     A,ASM,*PX+                      ; PR':= (PR+QR)/2  
      78 000010 CA09          ST      B,*QX+                          ; QR':= (PR-QR)/2
      79                    ||LD    *PX,A                           ; A  :=  PI
      80 000011 4183          SUB     *QX,16,A,B                      ; B  :=  PI-QI
      81 000012 3C83          ADD     *QX,16,A                        ; A  :=  PI+QI
      82 000013 86B2          STH     A,ASM,*PX+0                     ; PI':= (PI+QI)/2
      83 000014 CA0D          ST      B,*QX+0%                        ; QI':= (PI-QI)/2 
      84                    ||LD    *PX,A                           ; A  :=  next PR
      85 000015       stage1end:
      86            
      87            ; Stage 2 ----------------------------------------------------------------------
      88            
      89 000015 E772          MVMM    DATA_PROC_BUF,PX                ; PX -> PR
      90 000016 7713          STM     #fft_data+K_DATA_IDX_2,QX       ; QX -> QR
         000017 0004!
      91 000018 771A          STM     #K_FFT_SIZE/4-1,BRC
         000019 0001 
      92 00001a 4482          LD      *PX,16,A                        ; A  :=  PR
      93 00001b F272          RPTBD   stage2end-1
         00001c 002E'
      94 00001d 7710          STM     #K_DATA_IDX_2+1,AR0
         00001e 0005 
      95            
      96            ; 1st butterfly
      97 00001f 4183          SUB     *QX,16,A,B                      ; B  :=  PR-QR 
      98 000020 3C83          ADD     *QX,16,A                        ; A  :=  PR+QR
      99 000021 8692          STH     A,ASM,*PX+                      ; PR':= (PR+QR)/2  
     100 000022 CA09          ST      B,*QX+                          ; QR':= (PR-QR)/2
     101                    ||LD    *PX,A                           ; A  :=  PI
TMS320C54x COFF Assembler       Beta Version 1.16     Mon Sep 23 13:58:58 1996
Copyright (c) 1996        Texas Instruments Incorporated 

fft.asm                                                              PAGE    3

⌨️ 快捷键说明

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