📄 rfft32s.lst
字号:
TMS320C2000 COFF Assembler PC Version 3.06 Fri Nov 07 10:50:05 2003
Tools Copyright (c) 1996-2002 Texas Instruments Incorporated
rfft32s.asm PAGE 1
1 ;============================================================================
2 ;
3 ; File Name : rfft128sc.asm
4 ;
5 ; Originator : Advanced Embeeded Control
6 ; Texas Instruments
7 ;
8 ; Description : This file contain source code of split function for Real FFT
9 ;
10 ; Date : 26/2/2002 (dd/mm/yyyy)
11 ;===========================================================================
12 ; Routine Type : C Callable
13 ;
14 ; Description :
15 ; void FFT128R_split(FFTxxxx_handle)
16 ; This function perfroms split operation to obtain 65 spectran bins of
17 ; 128-point real valued sequence from the 64-point complex FFT output
18 ;
19 ; void FFT128R_init(void)
20 ; This function copies the Twiddle factors for split function from
21 ; load time address to its run time address
22 ;
23 ;======================================================================
24 ; REAL FFT MODULES
25 ;----------------------------------------------------------------------
26 ;typedef struct {
27 ; long *ipcbptr;
28 ; long *tfptr;
29 ; int size;
30 ; int nrstage;
31 ; long *magptr;
32 ; long *winptr;
33 ; long peakmag;
34 ; int peakfrq;
35 ; int ratio;
36 ; void (*init)(void);
37 ; void (*calc)(void *);
38 ; void (*split)(void *);
39 ; void (*mag)(void *);
40 ; void (*win)(void *);
41 ; }FFTxxxR;
42 ;===============================================================================
43 ; Computation Buffer for k=1:(N/2)-1) & N=64
44 ;==============================================================================
45 ;
46 ; Non Bitrev I/P COMPLEX FFT(N) O/P E/O SEPERATION Final FFT output
47 ; ___________ ______________ ____________ ___________
48 ; |__g(0)____| |__R(0)______| |___RP(0)__| =R(0) |__GR(0)__| = {RP(0)+IP(0)}/2
49 ; |__g(1)____| |__I(0)______| |___IP(0)__| =I(0) |__GI(0)__| = 0
50 ; |__g(2)____| |__R(k)______| |___RP(k)__| |_________|
51 ; |__g(3)____| |__I(k)______| |___IM(k)__| |_________|
52 ; |__________| |____________| |__________| |_________|
53 ; |__________| |____________| |__________| |_________|
54 ; |__________| |____________| |__________| |_________|
55 ; |__________| |__R(N/2)____| |_RP(N/2___| =R(N/2) |_GR(N/2)_| =RP(N/2)/2
TMS320C2000 COFF Assembler PC Version 3.06 Fri Nov 07 10:50:05 2003
Tools Copyright (c) 1996-2002 Texas Instruments Incorporated
rfft32s.asm PAGE 2
56 ; |__________| |__R(N/2)____| |_IP(N/2)__| =I(N/2) |_GI(N/2)_| =-IP(N/2)/2
57 ; |__________| |____________| |__________| |_________|
58 ; |__________| |____________| |__________| |_________|
59 ; |__________| |____________| |__________| |_________|
60 ; |__________| |____________| |__________| |_________|
61 ; |__________| |___R(N-k)___| |___RM(k)__| |_GR(N-1)_|
62 ; |_g(2*N-1)_| |___I(N-k)___| |___IP(k)__| |_GI(N-1)_|
63 ; |__GR(N)__|={RP(0)-IP(0)}/2
64 ; |__GI(N)__|=0
65 ;
66 ;===========================================================================
67 ; Note: IM(0)=RM(0)=0
68 ; RM(N/2)=IM(N/2)=0
69 ;===========================================================================
70 ; EVEN/ODD FFT SEPERATION
71 ;===========================================================================
72 ; RP(K) = [R(K) + R(N-k)]/2
73 ; RM(K) = [R(K) - R(N-K)]/2
74 ; IP(K) = [I(K) + I(N-K)]/2
75 ; IM(K) = [I(K) - I(N-K)]/2 K=1:N/2
76 ;=========================================================================
77 ; EVEN/ODD FFT MERGE
78 ;=========================================================================
79 ; GR(K)={RP(K) - WI(K)*RM(K) + WR(K)*IP(K)}/2
80 ; GI(K)={IM(K) - WI(K)*IP(K) - WR(K)*RM(K)}/2
81 ; GR(N-K)={RP(K) + WI(K)*RM(K) - WR(K)*IP(K)}/2
82 ; GI(N-K)={-IM(K) - WI(K)*IP(K) - WR(K)*RM(K)}/2
83 ;
84 ; WR(k) <-- Cosine table (AR5)
85 ; WI(K) <-- Sine table (AR2)
86 ;======================================================================
87 .include "sel_q.asm"
88
89 .def _RFFT32_split ; Function External Reference
90
91 00000000 _RFFT32_split:
92 00000000 B2BD PUSH XAR1 ; Context Save
93 00000001 AABD PUSH XAR2
94 00000002 A2BD PUSH XAR3
95
96 00000003 3B01 SETC SXM
97 00000004 FF6A SPM -1
98
99 00000005 5603 MOV ACC,*+XAR4[4]<<2; ACC=4*size
00000006 02E4
100 00000007 86C4 MOVL XAR2,*XAR4 ; XAR2=ipcbptr ----->R(0)
101 00000008 07C4 ADDL ACC,*XAR4 ; XAR3=ipcbptr+4*size
102 00000009 82A9 MOVL XAR3,ACC ; XAR3 ------>GR(N)
103
104 0000000a 83D4 MOVL XAR5,*+XAR4[2] ; XAR5=tfptr -----> WI
105 0000000b C4D4 MOVL XAR6,*+XAR4[2] ; XAR6=tfptr
106
107 0000000c 2DC4 MOV T,*XAR4 ; T=size
108
109 0000000d 5603 MOV ACC,*+XAR4[4]<<15 ; AH=size/2
TMS320C2000 COFF Assembler PC Version 3.06 Fri Nov 07 10:50:05 2003
Tools Copyright (c) 1996-2002 Texas Instruments Incorporated
rfft32s.asm PAGE 3
0000000e 0FE4
110 0000000f 80A8 MOVZ AR7,AH ; XAR7=size/2
111 00000010 DF82 SUBB XAR7,#2 ; XAR7=(size/2)-2
112 00000011 DC0D ADDB XAR4,#13
113 00000012 2DC4 MOV T,*XAR4 ; T=ratio
114 00000013 58C4 MOVZ AR0,*XAR4 ; AR0=ratio
115 00000014 DC8D SUBB XAR4,#13
116 00000015 12A8 MPY ACC,T,AH ; ACC=ratio*size/2
117 00000016 07D4 ADDL ACC,*+XAR4[2] ;
118 00000017 1EA6 MOVL XAR6,ACC ; WRWIOST=tfptr+ratio*N/2 ----> COS(Angle)
119
120 00000018 77B5 NOP *,ARP5 ; XAR5 ----> WI SIN(Angle)--->increment
121 00000019 77BB NOP *0++
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -