⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c30ffftp.c

📁 GENERIC PROGRAM FOR A FAST LOOPED-CODE RADIX-2 DIT FFT
💻 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 + -