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