📄 c30ffftp.c
字号:
/*************************************************************************
C30SERP.C : Partitioned serial real FFT implementation
Requirements: 64<= Q <= 2048 (minimum: because of real FFT limitations
maximum: because of on-chip RAM limitations)
Version : 1.0
**************************************************************************
VERSION DATE COMMENT
1.0 4/93 Adaptation from R.M. Piedra program for
complex FFT.
Daniel Mazzocco (TI Nice)
**************************************************************************/
#include "values.h"
#include "math.h"
#define N (2048*2) /* FFT size (n) */
#define P 2 /* P = N/Q */
#define D 1 /* LOG2 P */
#define Q 2048 /* FFT size executed in RAM */
volatile float *sine = (volatile float *)0x800000;
volatile float *ram = (volatile float *)0x809800;
volatile float *FFTin = (volatile float *)0xf00000;
volatile float *source= (volatile float *)0xf00000;
float theta ;
unsigned int i,j,k,
delta = P,
ngroup = 2,
incr_group = N,
n = N,
n2 = N/2,
p2 = 2*P,
Wkpointer = 0,
q = Q,
q2 = Q/2;
/*************************************************************************/
main()
{
asm(" or 1800h,st");
theta = 2*PI/n;
for (i=0;i<n2;i++) /* fill sin table in memory */
sine[i]=sin(i*theta);
start:
/**********************************
P size-q FFT's *
**********************************/
for (j=0;j<P;j++,FFTin +=q) {
rmove(FFTin,ram,q); /* q elements are transfered to
on-chip RAM for execution */
ffft_rl(q,11,ram,sine,D);
/* q-point FFT */
rmove(ram,FFTin,q); /* FFT results are transfered back
to off-chip memory */
}
fend(N,source,sine,D); /* perform last D stages */
for (i=0;i<n;i++) /* zero small values for easier check */
{ if (source[i] < 0.001)
source[i]=0.0;}
} /*main*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -