📄 fft.lst
字号:
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 + -