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

📄 fft.lst

📁 54系列dsp算法程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
     102 000023 4183          SUB     *QX,16,A,B                      ; B  :=  PI-QI
     103 000024 3C83          ADD     *QX,16,A                        ; A  :=  PI+QI
     104 000025 8692          STH     A,ASM,*PX+                      ; PI':= (PI+QI)/2
     105 000026 8793          STH     B,ASM,*QX+                      ; QI':= (PI-QI)/2 
     106            
     107            ; 2nd butterfly
     108 000027 6D93          MAR     *QX+
     109 000028 A001          ADD     *PX,*QX,A                       ; A  :=  PR+QI
     110 000029 A305          SUB     *PX,*QX-,B                      ; B  :=  PR-QI
     111 00002a 8692          STH     A,ASM,*PX+                      ; PR':= (PR+QI)/2  
     112 00002b A201          SUB     *PX,*QX,A                       ; A  :=  PI-QR
     113 00002c CB91          ST      B,*QX                           ; QR':= (PR-QI)/2
     114                    ||LD    *QX+,B                          ; B  :=     QR
     115 00002d C0C0          ST      A, *PX                          ; PI':= (PI-QR)/2
     116                    ||ADD   *PX+0%,A                        ; A  :=  PI+QR
     117 00002e C80D          ST      A,*QX+0%                        ; QI':= (PI+QR)/2
     118                    ||LD    *PX,A                           ; A  :=  PR
     119 00002f       stage2end:
     120            
     121            ; Stage 3 thru Stage logN-1 ----------------------------------------------------
     122            
     123 00002f 7719          STM     #K_TWID_TBL_SIZE,BK             ; BK = twiddle table size always
         000030 0200 
     124 000031 7600!         ST      #K_TWID_IDX_3,d_twid_idx        ; init index of twiddle table
         000032 0080 
     125 000033 7710          STM     #K_TWID_IDX_3,AR0               ; AR0 = index of twiddle table
         000034 0080 
     126 000035 7714          STM     #cosine,WR                      ; init WR pointer
         000036 0000!
     127 000037 7715          STM     #sine,WI                        ; init WI pointer
         000038 0000!
     128 000039 7717          STM     #K_LOGN-2-1,STAGE_COUNTER       ; init stage counter
         00003a 0000 
     129 00003b 7600!         ST      #K_FFT_SIZE/8-1,d_grps_cnt      ; init group counter
         00003c 0000 
     130 00003d 7716          STM     #K_FLY_COUNT_3-1,BUTTERFLY_COUNTER  ; init butterfly counter
         00003e 0003 
     131 00003f 7600!         ST      #K_DATA_IDX_3,d_data_idx        ; init index for input data
         000040 0008 
     132                    
     133 000041       stage:
     134 000041 7712          STM     #fft_data,PX                    ; PX -> PR 
         000042 0000!
     135 000043 1000!         LD      d_data_idx, A
     136 000044 00F8          ADD     *(PX),A
         000045 0012 
     137 000046 8813          STLM    A,QX                            ; QX -> QR 
     138 000047 7100!         MVDK    d_grps_cnt,GROUP_COUNTER        ; AR1 contains group counter
         000048 0011 
     139            
     140 000049       group:
     141 000049 7316          MVMD    BUTTERFLY_COUNTER,BRC           ; # of butterflies in each group
         00004a 001A 
     142 00004b F272          RPTBD   butterflyend-1
         00004c 0057'
TMS320C54x COFF Assembler       Beta Version 1.16     Mon Sep 23 13:58:58 1996
Copyright (c) 1996        Texas Instruments Incorporated 

fft.asm                                                              PAGE    4

     143 00004d 3084          LD      *WR,T                           ; T  :=  WR
     144 00004e 2093          MPY     *QX+,A                          ; A  :=  QR*WR  || QX->QI
     145            
     146 00004f B4F5          MACR    *WI+0%,*QX-,A                   ; A  :=  QR*WR+QI*WI  
     147                                                            ; || QX->QR
     148 000050 3D82          ADD     *PX,16,A,B                      ; B  := (QR*WR+QI*WI)+PR
     149 000051 C780          ST      B,*PX                           ; PR':=((QR*WR+QI*WI)+PR)/2
     150                    ||SUB   *PX+,B                          ; B  :=  PR-(QR*WR+QI*WI)    
     151                                                            ; || PX->PI
     152 000052 CE91          ST      B,*QX                           ; QR':= (PR-(QR*WR+QI*WI))/2
     153                    ||MPY   *QX+,A                          ; A  :=  QR*WI [T=WI]
     154                                                            ; || QX->QI 
     155 000053 BC1E          MASR    *QX,*WR+0%,A                    ; A  :=  QR*WI-QI*WR
     156 000054 3D82          ADD     *PX,16,A,B                      ; B  := (QR*WI-QI*WR)+PI
     157 000055 C709          ST      B,*QX+                          ; QI':=((QR*WI-QI*WR)+PI)/2 
     158                                                            ; || QX->QR          
     159                    ||SUB   *PX,B                           ; B  :=  PI-(QR*WI-QI*WR)
     160 000056 3084          LD      *WR,T                           ; T  :=  WR
     161 000057 CE98          ST      B,*PX+                          ; PI':= (PI-(QR*WI-QI*WR))/2 
     162                                                            ; || PX->PR
     163                    ||MPY   *QX+,A                          ; A  :=  QR*WR  || QX->QI
     164 000058       butterflyend:
     165            
     166            ; Update pointers for next group
     167            
     168 000058 4A10          PSHM    AR0                             ; preserve AR0
     169 000059 7100!         MVDK    d_data_idx,AR0
         00005a 0010 
     170 00005b 6DB2          MAR     *PX+0                           ; increment PX for next group
     171 00005c 6DB3          MAR     *QX+0                           ; increment QX for next group
     172 00005d 6E89          BANZD   group,*GROUP_COUNTER-
         00005e 0049'
     173 00005f 8A10          POPM    AR0                             ; restore AR0
     174 000060 6D8B          MAR     *QX-
     175            
     176            ; Update counters and indices for next stage
     177            
     178 000061 1000!         LD      d_data_idx,A
     179 000062 F110          SUB     #1,A,B                          ; B = A-1
         000063 0001 
     180 000064 8916          STLM    B,BUTTERFLY_COUNTER             ; BUTTERFLY_COUNTER = #flies-1
     181 000065 6F00!         STL     A,1,d_data_idx                  ; double the index of data
         000066 0C81 
     182 000067 1000!         LD      d_grps_cnt,A
     183 000068 8400!         STL     A,ASM,d_grps_cnt                ; 1/2 the offset to next group  
     184 000069 1000!         LD      d_twid_idx,A
     185 00006a 8400!         STL     A,ASM,d_twid_idx                ; 1/2 the index of twiddle table
     186 00006b 6E8F          BANZD   stage,*STAGE_COUNTER-
         00006c 0041'
     187 00006d 7100!         MVDK    d_twid_idx,AR0                  ; AR0 = index of twiddle table
         00006e 0010 
     188            
     189 00006f       fft_end:
     190 00006f FC00          RET                                     ; return to Real FFT main module
     191            
TMS320C54x COFF Assembler       Beta Version 1.16     Mon Sep 23 13:58:58 1996
Copyright (c) 1996        Texas Instruments Incorporated 

fft.asm                                                              PAGE    5

     192                    .end

 No Errors, No Warnings

⌨️ 快捷键说明

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