亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dsp280x_fft.c

?? ADS8364是美國德州儀器公司(TI)的一款六通道、16位并行輸出、同步采樣的模數轉換器。該芯片提供了一個靈活的高速并行接口
?? C
字號:
/* system header define */
#include "IQmathLib.h"
#include "math.h"
#include "fft.h"

/* constant definition */
#define	PIE		3.1415926535L
#define N1		512
#define N2		256
#define N8		64

#define N256K	25600
#define N128K	12800
#define ZM_RNG	8

#define _BKD	0
#define _FWD	1
#define _HER	0xFFFF


/* IQ variable definition */
_iq	qRetVal = 0;
_iq	qWn  = 0;
_iq	qWn1 = 0;
_iq qPie = 0;
_iq	qRVal = 0;
_iq	qIVal = 0;
_iq qTemp = 0;
_iq qRVal_1 = 0;



long FFT_Execute(Uint16 *ptSrc, long *ptDest);
void FFT_Execute_1(long *src, long *targ, long tsize, long fsize);
long FFT_test(float *ptSrc, float *ptDest);
long FFT_Zoom(Uint16 *ptSrc, long *ptDest, long maxRef);
long FFT_Execute_2(Uint16 *ptSrc, long *ptDest);
Uint16 FFT_Dsp(int dir,long m,float *x,float *y);


long FFT_test(float *ptSrc, float *ptDest)
{

	long 	maxAdr;
	float	fmaxAdr;
	float	*xr, *yi;
	Uint16	i;
	float fxr[8] = { 1,2,3,4,2,2,5,1};
	float fxi[8] = { 0,0,0,0,0,0,0,0};

	for(i=0;i<512;i++)	
		*(ptDest+i) = 0;

	xr = (float *) ptSrc;
	yi = (float *) ptDest;

#if 1	
	FFT_Dsp(1,9,xr,yi);

#else
	maxAdr = FFT_Execute_2(ptSrc, ptDest);
	//maxAdr = FFT_Execute(ptSrc, ptDest);
	maxAdr = FFT_Zoom(ptSrc, ptDest, maxAdr);
#endif

	return maxAdr;
	
}	



Uint16 FFT_Dsp(int dir,long m,float *x,float *y)
{
   long n,i,i1,j,k,i2,l,l1,l2;
   float c1,c2,tx,ty,t1,t2,u1,u2,z;
   long rsum,isum;
   long *ptrOut;
	
   ptrOut = (long *)x;

   /* Calculate the number of points */
   n = 1;
   for (i=0;i<m;i++) 
      n *= 2;

   /* Do the bit reversal */
   i2 = n >> 1;
   j = 0;
   for (i=0;i<n-1;i++) {
      if (i < j) {
         tx = x[i];
         ty = y[i];
         x[i] = x[j];
         y[i] = y[j];
         x[j] = tx;
         y[j] = ty;
      }
      k = i2;
      while (k <= j) {
         j -= k;
         k >>= 1;
      }
      j += k;
   }

   /* Compute the FFT */
   c1 = -1.0; 
   c2 = 0.0;
   l2 = 1;
   for (l=0;l<m;l++) {
      l1 = l2;
      l2 <<= 1;
      u1 = 1.0; 
      u2 = 0.0;
      for (j=0;j<l1;j++) {
         for (i=j;i<n;i+=l2) {
            i1 = i + l1;
            t1 = u1 * x[i1] - u2 * y[i1];
            t2 = u1 * y[i1] + u2 * x[i1];
            x[i1] = x[i] - t1; 
            y[i1] = y[i] - t2;
            x[i] += t1;
            y[i] += t2;
         }
         z =  u1 * c1 - u2 * c2;
         u2 = u1 * c2 + u2 * c1;
         u1 = z;
      }
      c2 = (float)sqrt((1.0 - c1) / 2.0);
      if (dir == 1) 
         c2 = -c2;
      c1 = (float)sqrt((1.0 + c1) / 2.0);
   }

	for(i=0;i<n;i++)
	{
		rsum = (long)(x[i]*4096);
		isum = (long)(y[i]*4096);


		rsum = (labs(rsum)+5)/4096;
		isum = (labs(isum)+5)/4096;
		ptrOut[i] = rsum + isum;	
	}
	

   return(1);
}




long FFT_Execute_2(Uint16 *ptSrc, long *ptDest)
{
	long i,j,temp,i50;
	long rVal, iVal, rsum=0;
	long maxVal, maxAdr;

	// 2 * pi /512  
	// = pi * /256
	qPie = _IQ((float)PIE);		
	qTemp = _IQ((float)8);
	qWn1 = _IQdiv(qPie, qTemp);		
	qTemp = _IQ((float)1600);
	qWn1 = _IQdiv(qWn1, qTemp);		
	//		

	for(i=0;i<N2;i++){
		rVal = 0;
		iVal = 0;
		i50 = i * 50;
		for(j=0;j<N1;j++){
			// w = w * i *j
			temp = i50 * j;
			qWn = _IQmpyI32(qWn1, temp);

			//A= x(j)*Cos(2) , B=x(j)*Sin(w)*img
			qRVal = _IQcos(qWn);
			qIVal = _IQsin(qWn);

			temp = ((long) *(ptSrc+j)) & 0xFFFF;
			qTemp = temp << 19;	

			qRVal = _IQmpy(qRVal, qTemp);
			qIVal = _IQmpy(qIVal, qTemp);
			rVal += (qRVal >> 9);
			iVal += (qIVal >> 9);
		}
		rsum = _IQ10mag(rVal,iVal);
		rsum >>= 10;
		*(ptDest+i) = rsum;		
	}

	//search max value on frequency domain	
	maxVal = *(ptDest+1);
	maxAdr = (long)(ptDest+1);

	for(i=2;i<N2;i++){
		if(*(ptDest+i) > maxVal){
			maxVal = *(ptDest+i);
			maxAdr = (long)(ptDest+i);
		}
	}	
	maxAdr -=((long)(ptDest));
	return (maxAdr/2);
}


long FFT_Zoom(Uint16 *ptSrc, long *ptDest, long maxRef)
{
	long 	i,j,temp, i2;
	long 	rVal, iVal, rsum=0;
	long 	maxVal, maxAdr, minRang, maxRang, midRang;
	Uint16	maxDir;	
	float	fmaxAdr;

	maxRef *= 50;
	minRang = maxRef-ZM_RNG;	
	maxRang = maxRef+ZM_RNG;

	// 2 * pi /512  
	// = pi * /256
	qPie = _IQ((float)PIE);		
	qTemp = _IQ((float)8);
	qWn1 = _IQdiv(qPie, qTemp);		
	qTemp = _IQ((float)1600);
	qWn1 = _IQdiv(qWn1, qTemp);	

	if(maxRef > 50 && maxRef < 3300){
		//search max value direct		
		for(i=minRang;i<(maxRang+1);i++){
			rVal = 0;
			iVal = 0;
			i2 = i;
			for(j=0;j<N1;j++){
				// w = w * i *j
				temp = i2 * j;
				qWn = _IQmpyI32(qWn1, temp);

				//A= x(j)*Cos(2) , B=x(j)*Sin(w)*img
				qRVal = _IQcos(qWn);
				qIVal = _IQsin(qWn);

				temp = ((long) *(ptSrc+j)) & 0xFFFF;
				qTemp = temp << 19;	
				qRVal = _IQmpy(qRVal, qTemp);
				qIVal = _IQmpy(qIVal, qTemp);
				rVal += (qRVal >> 9);
				iVal += (qIVal >> 9);
			}

			rsum = _IQ10mag(rVal,iVal);
			rsum >>= 10;
			*((ptDest-minRang)+i) = rsum;		
		}

		//search max value on frequency domain	
		maxVal = *(ptDest);
		maxAdr = (long)(ptDest);
		//
		for(i=0;i<(ZM_RNG * 2 + 1);i++){
			if(*(ptDest+i) > maxVal){
				maxVal = *(ptDest+i);
				maxAdr = (long)(ptDest+i);
			}	/* for(){ */
		}	/* for(){ */
		//	
		midRang = (long)(ptDest+ZM_RNG);
		if(maxAdr > midRang){
			maxDir = _FWD;
			minRang = maxRef;
			maxRang = minRang+64;		
		}
		else if(maxAdr < midRang){
			maxDir = _BKD;
			maxRang = maxRef;
			minRang = maxRang-64;
		}
		else if(maxAdr == midRang){
			maxDir = _HER;
			maxAdr = maxRef;
		}
	}	/*if(maxRef > 50 && maxRef < 3300){*/ 
	else if(maxRef <= 50){
		maxDir = _FWD;
		minRang = 50;
		maxRang = minRang+64;
	}
	else if(maxRef >= 3300){
		maxDir = _BKD;
		maxRang = 3300;
		minRang = maxRang-64;	
	}

	//
	if(maxDir != _HER){		
		for(i=minRang;i<(maxRang+1);i++){
			rVal = 0;
			iVal = 0;
			i2 = i ;
			for(j=0;j<N1;j++){
				// w = w * i *j
				temp = i2 * j;
				qWn = _IQmpyI32(qWn1, temp);

				//A= x(j)*Cos(2) , B=x(j)*Sin(w)*img
				qRVal = _IQcos(qWn);
				qIVal = _IQsin(qWn);

				temp = ((long) *(ptSrc+j)) & 0xFFFF;
				qTemp = temp << 19;	
				qRVal = _IQmpy(qRVal, qTemp);
				qIVal = _IQmpy(qIVal, qTemp);
				rVal += (qRVal >> 9);
				iVal += (qIVal >> 9);
			}

			rsum = _IQ10mag(rVal,iVal);
			rsum >>= 10;
			*((ptDest-minRang)+i) = rsum;		
		}

		//
		//search max value on frequency domain	
		maxVal = *(ptDest);
		maxAdr = (long)(ptDest);

		for(i=1;i<64;i++){
			if(*(ptDest+i) > maxVal){
				maxVal = *(ptDest+i);
				maxAdr = (long)(ptDest+i);
			}
		}
#if 0
		//
		maxAdr -=((long)(ptDest));
		fmaxAdr = maxRef;
		if(maxDir == _FWD)
			fmaxAdr = (fmaxAdr+(maxAdr/2)*0.5);
		else if(maxDir == _BKD)
			fmaxAdr = (fmaxAdr-(64.0-(maxAdr/2))*0.5);

#else
		//
		maxAdr -=((long)(ptDest));
		if(maxDir == _FWD)
			maxAdr = (maxRef+(maxAdr/2));
		else if(maxDir == _BKD)
			maxAdr = (maxRef-(64-maxAdr/2));
#endif
	}

	return (maxAdr);
}


long FFT_Execute(Uint16 *ptSrc, long *ptDest)
{
	long i,j,temp;
	long rVal, iVal, rsum=0;
	long maxVal, maxAdr;

	// 2 * pi /512  
	// = pi * /256
	qPie = _IQ((float)PIE);		
	qTemp = _IQ((float)N2);
	qWn1 = _IQdiv(qPie, qTemp);		
	//		
	for(i=0;i<N2;i++){
		rVal = 0;
		iVal = 0;
		for(j=0;j<N1;j++){
			// w = w * i *j
			temp = i * j;
			qWn = _IQmpyI32(qWn1, temp);

			//A= x(j)*Cos(2) , B=x(j)*Sin(w)*img
			qRVal = _IQcos(qWn);
			qIVal = _IQsin(qWn);

			temp = ((long) *(ptSrc+j)) & 0xFFFF;	
			qTemp = temp << 15;	
			qRVal = _IQmpy(qRVal, qTemp);
			qIVal = _IQmpy(qIVal, qTemp);
			rVal += (qRVal >> 5);
			iVal += (qIVal >> 5);
		}
#if 0
		rsum = _IQ10abs(rVal);
		isum = _IQ10abs(iVal);
		*(ptDest+i) = (rsum+isum)>>10;	
#else
		rsum = _IQ10mag(rVal,iVal);
		rsum >>= 10;
		*(ptDest+i) = rsum;		
#endif
	}

	//search max value on frequency domain	
	maxVal = *(ptDest+1);
	maxAdr = (long)(ptDest+1);

	for(i=2;i<N2;i++){
		if(*(ptDest+i) > maxVal){
			maxVal = *(ptDest+i);
			maxAdr = (long)(ptDest+i);
		}
	}	
	maxAdr -=((long)(ptDest));
	return (maxAdr/2);
}


void FFT_Execute_1(long *src, long *targ, long tsize, long fsize)
{ 
	double 	pi = 3.14159;
	double 	i,j,n,w,w1;
	long	maxVal, maxAdr, rval, ival,rsum, isum,fcount, tcount;
	long	*ptrTemp, *ptrTdata;
	
	ptrTemp = targ;
	n = (double)fsize/2.0;
	w1 =  pi / n;			// pi / 256 ( = 2 * pi /512)
	fsize /= 2;				// 256 = 512 / 2
	i=0;

	for(fcount=0;fcount<fsize;fcount++){
		ptrTdata = src;
		j=0;
		rsum = 0;
		isum = 0;
		for(tcount=0;tcount<tsize;tcount++){
			// X[fcount]: w[fcount] = 2 * pi * tcount * fcount / fsize				
			w = w1*j*i;			
			rval = (long)(10240.0*(cos(w)));
			ival = (long)(10240.0*(sin(w)));
			rval = (*ptrTdata * rval);
			ival = (*ptrTdata * ival);			
			rsum += (rval/10240);
			isum += (ival/10240);
			ptrTdata++;
			j++;
		}

		rsum = labs(rsum);
		isum = labs(isum);
		*ptrTemp = rsum+isum;
		ptrTemp++;
		i++;
	}

	//search max value on frequency domain	
	ptrTemp = (targ+1);
	maxVal = *ptrTemp;
	maxAdr = (long)(ptrTemp);

	for(i=1;i<fsize;i++){
		if(*ptrTemp > maxVal){
			maxVal = *ptrTemp;
			maxAdr = (long)(ptrTemp);
		}
		ptrTemp++;
	}

	maxAdr = (maxAdr - ((long)targ))/2*50;

	ptrTemp = targ;

}

#if 0
void FFT_Execute(long *ptSrc, long *ptDest)
{
	long i,j,temp, val1, val2, val3;
	long rVal, iVal, rsum=0, isum=0;

	// 2 * pi /512  
	// = pi * /256
	qPie = _IQ((float)PIE);		
	qTemp = _IQ((float)N2);
	qWn1 = _IQdiv(qPie, qTemp);		
	//		
	for(i=0;i<N2;i++){
		rVal = 0;
		iVal = 0;
		for(j=0;j<N1;j++){
			// w = w * i *j
			temp = i * j;
			qWn = _IQmpyI32(qWn1, temp);

			//A= x(j)*Cos(2) , B=x(j)*Sin(w)*img
			qRVal = _IQcos(qWn);
			qIVal = _IQsin(qWn);

			val1 = _IQmpyI32int(qRVal, (long)65536);
			val2 = _IQmpyI32int(qIVal, (long)65536);
			//
			temp = ((long) *(ptSrc+j));
			val1 = temp * val1;
			val2 = temp * val2;
			val1 /= (65536);
			val2 /= (65536);
			//
			rVal += val1;
			iVal += val2;
		}
		rsum = labs(rVal);
		isum = labs(iVal);
		*(ptDest+i) = rsum+isum;
			
	}
}

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
人人爽香蕉精品| 91丨porny丨中文| 不卡在线视频中文字幕| 欧美一区二区三区色| 亚洲欧洲另类国产综合| 极品瑜伽女神91| 欧美日韩精品福利| ...av二区三区久久精品| 久久成人免费网站| 在线不卡的av| 亚洲男人天堂av网| 成人精品在线视频观看| 欧美大尺度电影在线| 午夜欧美一区二区三区在线播放| av午夜一区麻豆| 久久婷婷久久一区二区三区| 奇米影视一区二区三区| 欧美少妇bbb| 一区二区三区精品在线| 99久久综合99久久综合网站| 中文字幕成人在线观看| 国产一区二区0| 久久精子c满五个校花| 九九国产精品视频| 日韩免费在线观看| 日本美女一区二区三区| 欧美日韩精品一区二区三区四区| 玉足女爽爽91| 欧美亚洲愉拍一区二区| 亚洲综合在线五月| 欧美色国产精品| 香蕉乱码成人久久天堂爱免费| 色琪琪一区二区三区亚洲区| 亚洲视频一二三| 色综合久久久久综合| 一区二区在线观看视频| 欧美综合一区二区| 午夜日韩在线电影| 日韩三级免费观看| 国产精品综合网| 国产亚洲一区二区三区| 国产不卡在线一区| 中文字幕日韩av资源站| 91免费看片在线观看| 夜夜揉揉日日人人青青一国产精品 | 91精品国产福利在线观看| 亚洲黄色片在线观看| 欧美系列日韩一区| 日韩高清在线电影| 国产网红主播福利一区二区| 成人黄色大片在线观看| 亚洲精品一二三| 欧美一区永久视频免费观看| 国产精品资源站在线| 国产欧美久久久精品影院| 色香蕉久久蜜桃| 青青草伊人久久| 国产日韩欧美不卡| 一本色道久久加勒比精品| 亚欧色一区w666天堂| 91精品蜜臀在线一区尤物| 国产一区二区三区av电影| 亚洲人123区| 日韩欧美一区二区三区在线| 成人免费视频视频在线观看免费| 亚洲综合自拍偷拍| 2020国产精品久久精品美国| 91捆绑美女网站| 老色鬼精品视频在线观看播放| 欧美国产日韩一二三区| 欧美日韩免费视频| 成人av综合一区| 美女精品一区二区| 亚洲欧美激情小说另类| 日韩免费电影一区| 欧美性大战久久久久久久蜜臀| 九九视频精品免费| 夜夜精品视频一区二区| 国产欧美一区二区精品久导航| 欧美影院一区二区| 国产91富婆露脸刺激对白| 五月综合激情日本mⅴ| 国产精品欧美极品| 日韩一区二区精品| 欧美视频一区在线| 91亚洲精品久久久蜜桃| 经典三级一区二区| 男男视频亚洲欧美| 亚洲成a人片在线观看中文| 国产精品美女久久久久aⅴ| 日韩视频不卡中文| 欧美三级乱人伦电影| 粉嫩av一区二区三区在线播放| 免费亚洲电影在线| 性做久久久久久久免费看| 亚洲欧洲中文日韩久久av乱码| 日韩欧美一区二区三区在线| 欧美日本韩国一区二区三区视频| 91麻豆免费观看| 成人一级黄色片| 国产一二精品视频| 精品一区二区三区日韩| 蜜桃免费网站一区二区三区| 亚洲韩国一区二区三区| 一区二区三区美女| 亚洲自拍偷拍九九九| 亚洲欧美日韩国产成人精品影院| 久久精品日产第一区二区三区高清版| 日韩亚洲欧美中文三级| 777xxx欧美| 欧美精选一区二区| 欧美精品乱人伦久久久久久| 欧美日韩视频在线一区二区| 欧美日韩高清在线| 欧美精品自拍偷拍动漫精品| 欧美亚洲一区三区| 色婷婷av一区二区三区大白胸| 91美女片黄在线观看91美女| 99r精品视频| 欧美做爰猛烈大尺度电影无法无天| 91碰在线视频| 色偷偷一区二区三区| 在线观看日产精品| 欧美日韩国产中文| 欧美不卡一二三| 国产日韩欧美精品电影三级在线| 国产亚洲短视频| 亚洲日本一区二区| 亚洲一区二区三区四区在线| 三级欧美韩日大片在线看| 日本亚洲免费观看| 国产一区二区美女| aaa国产一区| 在线视频国内自拍亚洲视频| 欧美日韩国产大片| 久久亚洲综合色一区二区三区 | 国产精品久久久爽爽爽麻豆色哟哟| 中文字幕乱码一区二区免费| 中文字幕一区二区5566日韩| 亚洲欧美日韩人成在线播放| 五月婷婷激情综合网| 精品亚洲国产成人av制服丝袜| 国产98色在线|日韩| 在线一区二区三区四区| 日韩一区二区三区av| 国产精品久久久久久久久搜平片| 一区二区欧美国产| 久久精品国产亚洲高清剧情介绍| 国产精品99久| 色综合久久88色综合天天6 | 欧洲精品一区二区| 精品国产乱码久久久久久影片| 日本一区二区综合亚洲| 亚洲激情av在线| 国内精品第一页| 日本大香伊一区二区三区| 日韩美女天天操| 一区二区三区色| 精品制服美女丁香| 97se狠狠狠综合亚洲狠狠| 日韩亚洲欧美一区二区三区| 一区在线中文字幕| 久久99精品久久久久婷婷| 色激情天天射综合网| 久久久亚洲综合| 日本va欧美va欧美va精品| 成人国产精品视频| 欧美成人一区二区| 亚洲成av人片www| 97se亚洲国产综合自在线观| 久久综合久久鬼色| 亚洲电影视频在线| 色综合久久久网| 国产精品久久毛片av大全日韩| 久久精品国产精品亚洲综合| 在线观看亚洲精品| 中文字幕日本不卡| 成人高清视频在线| 久久九九久精品国产免费直播| 日韩高清不卡在线| 欧美日韩精品欧美日韩精品一 | 日本韩国精品在线| 久久久久亚洲蜜桃| 久久国产剧场电影| 欧美喷水一区二区| 亚洲狠狠爱一区二区三区| 色狠狠色噜噜噜综合网| 国产精品国产精品国产专区不片| 国产一区视频导航| 欧美一区二区福利视频| 性做久久久久久久久| 欧美中文字幕一区| 一区二区三区精品久久久| 99国产精品一区| 亚洲欧美日韩在线不卡| 91色porny在线视频| 自拍偷拍欧美精品| 91麻豆精品一区二区三区| 一区二区在线观看视频在线观看| 色视频成人在线观看免|