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