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

📄 gmsk.c

📁 包括:DSP定时器使用,DSP_DMA的使用,DSP_MCBSP的使用,GMSK基带波形产生,学校学分绩的计算
💻 C
📖 第 1 页 / 共 3 页
字号:
//***************************
//Gauss function g(Tb)
//***************************
#include <stdio.h>
#include <math.h>

#define SPAN	0.001
#define N			100000
		

#define PI		3.1415926

float Bb,Tb;													//Gauss filter 3dB bandwidth note:BT=0.3
float Alpha;												//
//--------sample point of every bit(Tb)-------
//pre_2	:25/16Tb,27/16Tb,29/16Tb,31/16Tb,33/16Tb,35/16Tb,37/16Tb,39/16Tb
//pre_1	:9/16Tb,11/16Tb,13/16Tb,15/16Tb,17/16Tb,19/16Tb,21/16Tb,23/16Tb
//pre0	:-7/16Tb,-5/16Tb,-3/16Tb,-1/16Tb,1/16Tb,3/16Tb,5/16Tb,7/16Tb
//pre1	:-23/16Tb,-21/16Tb,-19/16Tb,-17/16Tb,-15/16Tb,-13/16Tb,-11/16Tb,-9/16Tb
//pre2	:-39/16Tb,-37/16Tb,-35/16Tb,-33/16Tb,-31/16Tb,-29/16Tb,-27/16Tb,-25/16Tb
//--------------------------------------------
float pre_2[]={1.5625,1.6875,1.8125,1.9375,2.0625,2.1875,2.3125,2.4375};
float pre_1[]={0.5625,0.6875,0.8125,0.9375,1.0625,1.1875,1.3125,1.4375};
float pre0[]={-0.4375,-0.3125,-0.1875,-0.0625,0.0625,0.1875,0.3125,0.4375};    
float pre1[]={-1.4375,-1.3125,-1.1875,-1.0625,-0.9375,-0.8125,-0.6875,-0.5625};
float pre2[]={-2.4375,-2.3125,-2.1875,-2.0625,-1.9375,-1.8125,-1.6875,-1.5625};
//--------------------------------------------
float table00000[8];
float table00001[8];
float table00010[8];
float table00011[8];
float table00100[8];
float table00101[8];
float table00110[8];
float table00111[8];
float table01000[8];
float table01001[8];
float table01010[8];
float table01011[8];
float table01100[8];
float table01101[8];
float table01110[8];
float table01111[8];

float table10000[8];
float table10001[8];
float table10010[8];
float table10011[8];
float table10100[8];
float table10101[8];
float table10110[8];
float table10111[8];
float table11000[8];
float table11001[8];
float table11010[8];
float table11011[8];
float table11100[8];
float table11101[8];
float table11110[8];
float table11111[8];

//--------------------------------------------
float	func(float x);									//approximate integral function
float	Qfunc(float x);									//declare the Q function
float	gfunc(float t1,float t2);				//Gauss function g(Tb) 
void	gen_sam_point(float *str);				//generate sample point
void	gen_sam_value();

void main()
{	
	
	float Rb=9600.0;										//bit rate
	int i=0;

	Tb=1/Rb;
	Bb=0.3*Rb;
	Alpha=sqrt(log(2)/(2*Bb*Bb));
	
//-------------test---------------
//	float qqq;
//	scanf("%f",&t);
//	qqq=Qfunc(t);
//	printf("qqq=%f",qqq);
//--------------------------------

	gen_sam_point(pre_2);		
	gen_sam_point(pre_1);		
	gen_sam_point(pre0);		
	gen_sam_point(pre1);		
	gen_sam_point(pre2);
	
	gen_sam_value();

	printf("产生结束,数据存放在文件:table.txt中");
	//while(1);
}

float func(float x)
{
	float y;

	y=exp(-0.5*x*x);

	return y;
}

float Qfunc(float x)
{
	int i;
	float fsum=0,tem_Qsum;
	
	for(i=0;i<N;i++)
	{
		fsum+=func(x+i*SPAN);
	}
	tem_Qsum=(1/(sqrt(2*PI)))*SPAN*fsum;
	return tem_Qsum;
}

float gfunc(float t1,float t2)
{
		float Qtem;
		
		Qtem=(1/(2*Tb))*(Qfunc(t1)-Qfunc(t2));
		
		return Qtem;
}

void gen_sam_point(float *str)
{
	int i;
	float tem;
	for(i=0;i<8;i++)
	{
		tem=str[i]*Tb;
		str[i]=tem;
	}
		
}

void gen_sam_value()
{
	FILE *fp;
	int i,j,k;
	float t,temt1,temt2;
	float temg_2,temg_1,temg0,temg1,temg2;
	
	fp=fopen("data.txt","a");	
	for(i=0;i<32;i++)
	{
		switch(i)
		{
			case 0://00000
				for(j=0;j<8;j++)
				{
					t=pre_2[j];
					temt1=(sqrt(2*PI)/Alpha)*(t-Tb/2);
					temt2=(sqrt(2*PI)/Alpha)*(t+Tb/2);
					temg_2=-gfunc(temt1,temt2);
					
					t=pre_1[j];
					temt1=(sqrt(2*PI)/Alpha)*(t-Tb/2);
					temt2=(sqrt(2*PI)/Alpha)*(t+Tb/2);
					temg_1=-gfunc(temt1,temt2);
					
					t=pre0[j];
					temt1=(sqrt(2*PI)/Alpha)*(t-Tb/2);
					temt2=(sqrt(2*PI)/Alpha)*(t+Tb/2);
					temg0=-gfunc(temt1,temt2);
					
					t=pre1[j];
					temt1=(sqrt(2*PI)/Alpha)*(t-Tb/2);
					temt2=(sqrt(2*PI)/Alpha)*(t+Tb/2);
					temg1=-gfunc(temt1,temt2);
					
					t=pre2[j];
					temt1=(sqrt(2*PI)/Alpha)*(t-Tb/2);
					temt2=(sqrt(2*PI)/Alpha)*(t+Tb/2);
					temg2=-gfunc(temt1,temt2);
					
					table00000[j]=(temg_2+temg_1+temg0+temg1+temg2)/4.685214;
				}
				for(k=0;k<8;k++)
				{
					fprintf(fp,"%f ",table00000[k]);	
				}
				fputc('\n',fp);
				break;
			case 1://00001
				for(j=0;j<8;j++)
				{
					t=pre_2[j];
					temt1=(sqrt(2*PI)/Alpha)*(t-Tb/2);
					temt2=(sqrt(2*PI)/Alpha)*(t+Tb/2);
					temg_2=-gfunc(temt1,temt2);
					
					t=pre_1[j];
					temt1=(sqrt(2*PI)/Alpha)*(t-Tb/2);
					temt2=(sqrt(2*PI)/Alpha)*(t+Tb/2);
					temg_1=-gfunc(temt1,temt2);
					
					t=pre0[j];
					temt1=(sqrt(2*PI)/Alpha)*(t-Tb/2);
					temt2=(sqrt(2*PI)/Alpha)*(t+Tb/2);
					temg0=-gfunc(temt1,temt2);
					
					t=pre1[j];
					temt1=(sqrt(2*PI)/Alpha)*(t-Tb/2);
					temt2=(sqrt(2*PI)/Alpha)*(t+Tb/2);
					temg1=-gfunc(temt1,temt2);
					
					t=pre2[j];
					temt1=(sqrt(2*PI)/Alpha)*(t-Tb/2);
					temt2=(sqrt(2*PI)/Alpha)*(t+Tb/2);
					temg2=gfunc(temt1,temt2);
					
					table00001[j]=temg_2+temg_1+temg0+temg1+temg2;
				}
				for(k=0;k<8;k++)
				{
					fprintf(fp,"%f ",table00001[k]);	
				}
				fputc('\n',fp);
				break;
			case 2://00010
				for(j=0;j<8;j++)
				{
					t=pre_2[j];
					temt1=(sqrt(2*PI)/Alpha)*(t-Tb/2);
					temt2=(sqrt(2*PI)/Alpha)*(t+Tb/2);
					temg_2=-gfunc(temt1,temt2);
					
					t=pre_1[j];
					temt1=(sqrt(2*PI)/Alpha)*(t-Tb/2);
					temt2=(sqrt(2*PI)/Alpha)*(t+Tb/2);
					temg_1=-gfunc(temt1,temt2);
					
					t=pre0[j];
					temt1=(sqrt(2*PI)/Alpha)*(t-Tb/2);
					temt2=(sqrt(2*PI)/Alpha)*(t+Tb/2);
					temg0=-gfunc(temt1,temt2);
					
					t=pre1[j];
					temt1=(sqrt(2*PI)/Alpha)*(t-Tb/2);
					temt2=(sqrt(2*PI)/Alpha)*(t+Tb/2);
					temg1=gfunc(temt1,temt2);
					
					t=pre2[j];
					temt1=(sqrt(2*PI)/Alpha)*(t-Tb/2);
					temt2=(sqrt(2*PI)/Alpha)*(t+Tb/2);
					temg2=-gfunc(temt1,temt2);
					
					table00010[j]=temg_2+temg_1+temg0+temg1+temg2;
				}
				for(k=0;k<8;k++)
				{
					fprintf(fp,"%f ",table00010[k]);	
				}
				fputc('\n',fp);
				break;
			case 3://00011
				for(j=0;j<8;j++)
				{
					t=pre_2[j];
					temt1=(sqrt(2*PI)/Alpha)*(t-Tb/2);
					temt2=(sqrt(2*PI)/Alpha)*(t+Tb/2);
					temg_2=-gfunc(temt1,temt2);
					
					t=pre_1[j];
					temt1=(sqrt(2*PI)/Alpha)*(t-Tb/2);
					temt2=(sqrt(2*PI)/Alpha)*(t+Tb/2);
					temg_1=-gfunc(temt1,temt2);
					
					t=pre0[j];
					temt1=(sqrt(2*PI)/Alpha)*(t-Tb/2);
					temt2=(sqrt(2*PI)/Alpha)*(t+Tb/2);
					temg0=-gfunc(temt1,temt2);
					
					t=pre1[j];
					temt1=(sqrt(2*PI)/Alpha)*(t-Tb/2);
					temt2=(sqrt(2*PI)/Alpha)*(t+Tb/2);
					temg1=gfunc(temt1,temt2);
					
					t=pre2[j];
					temt1=(sqrt(2*PI)/Alpha)*(t-Tb/2);
					temt2=(sqrt(2*PI)/Alpha)*(t+Tb/2);
					temg2=gfunc(temt1,temt2);
					
					table00011[j]=temg_2+temg_1+temg0+temg1+temg2;
				}
				for(k=0;k<8;k++)
				{
					fprintf(fp,"%f ",table00011[k]);	
				}
				fputc('\n',fp);
				break;
			case 4://00100
				for(j=0;j<8;j++)
				{
					t=pre_2[j];
					temt1=(sqrt(2*PI)/Alpha)*(t-Tb/2);
					temt2=(sqrt(2*PI)/Alpha)*(t+Tb/2);
					temg_2=-gfunc(temt1,temt2);
					
					t=pre_1[j];
					temt1=(sqrt(2*PI)/Alpha)*(t-Tb/2);
					temt2=(sqrt(2*PI)/Alpha)*(t+Tb/2);
					temg_1=-gfunc(temt1,temt2);
					
					t=pre0[j];
					temt1=(sqrt(2*PI)/Alpha)*(t-Tb/2);
					temt2=(sqrt(2*PI)/Alpha)*(t+Tb/2);
					temg0=gfunc(temt1,temt2);
					
					t=pre1[j];
					temt1=(sqrt(2*PI)/Alpha)*(t-Tb/2);
					temt2=(sqrt(2*PI)/Alpha)*(t+Tb/2);
					temg1=-gfunc(temt1,temt2);
					
					t=pre2[j];
					temt1=(sqrt(2*PI)/Alpha)*(t-Tb/2);
					temt2=(sqrt(2*PI)/Alpha)*(t+Tb/2);
					temg2=-gfunc(temt1,temt2);
					
					table00100[j]=temg_2+temg_1+temg0+temg1+temg2;
				}
				for(k=0;k<8;k++)
				{
					fprintf(fp,"%f ",table00100[k]);	
				}
				fputc('\n',fp);
				break;
			case 5://00101
				for(j=0;j<8;j++)
				{
					t=pre_2[j];
					temt1=(sqrt(2*PI)/Alpha)*(t-Tb/2);
					temt2=(sqrt(2*PI)/Alpha)*(t+Tb/2);
					temg_2=-gfunc(temt1,temt2);
					
					t=pre_1[j];
					temt1=(sqrt(2*PI)/Alpha)*(t-Tb/2);
					temt2=(sqrt(2*PI)/Alpha)*(t+Tb/2);
					temg_1=-gfunc(temt1,temt2);
					
					t=pre0[j];
					temt1=(sqrt(2*PI)/Alpha)*(t-Tb/2);
					temt2=(sqrt(2*PI)/Alpha)*(t+Tb/2);
					temg0=gfunc(temt1,temt2);
					
					t=pre1[j];
					temt1=(sqrt(2*PI)/Alpha)*(t-Tb/2);
					temt2=(sqrt(2*PI)/Alpha)*(t+Tb/2);
					temg1=-gfunc(temt1,temt2);
					
					t=pre2[j];
					temt1=(sqrt(2*PI)/Alpha)*(t-Tb/2);
					temt2=(sqrt(2*PI)/Alpha)*(t+Tb/2);
					temg2=gfunc(temt1,temt2);
					
					table00101[j]=temg_2+temg_1+temg0+temg1+temg2;
				}
				for(k=0;k<8;k++)
				{
					fprintf(fp,"%f ",table00101[k]);	
				}
				fputc('\n',fp);
				break;
			case 6://00110
				for(j=0;j<8;j++)
				{
					t=pre_2[j];
					temt1=(sqrt(2*PI)/Alpha)*(t-Tb/2);
					temt2=(sqrt(2*PI)/Alpha)*(t+Tb/2);
					temg_2=-gfunc(temt1,temt2);
					
					t=pre_1[j];
					temt1=(sqrt(2*PI)/Alpha)*(t-Tb/2);
					temt2=(sqrt(2*PI)/Alpha)*(t+Tb/2);
					temg_1=-gfunc(temt1,temt2);
					
					t=pre0[j];
					temt1=(sqrt(2*PI)/Alpha)*(t-Tb/2);
					temt2=(sqrt(2*PI)/Alpha)*(t+Tb/2);
					temg0=gfunc(temt1,temt2);
					
					t=pre1[j];
					temt1=(sqrt(2*PI)/Alpha)*(t-Tb/2);
					temt2=(sqrt(2*PI)/Alpha)*(t+Tb/2);
					temg1=gfunc(temt1,temt2);
					
					t=pre2[j];
					temt1=(sqrt(2*PI)/Alpha)*(t-Tb/2);
					temt2=(sqrt(2*PI)/Alpha)*(t+Tb/2);
					temg2=-gfunc(temt1,temt2);
					
					table00110[j]=temg_2+temg_1+temg0+temg1+temg2;
				}
				for(k=0;k<8;k++)
				{
					fprintf(fp,"%f ",table00110[k]);	
				}
				fputc('\n',fp);
				break;
			case 7://00111
				for(j=0;j<8;j++)
				{
					t=pre_2[j];
					temt1=(sqrt(2*PI)/Alpha)*(t-Tb/2);
					temt2=(sqrt(2*PI)/Alpha)*(t+Tb/2);
					temg_2=-gfunc(temt1,temt2);
					
					t=pre_1[j];
					temt1=(sqrt(2*PI)/Alpha)*(t-Tb/2);
					temt2=(sqrt(2*PI)/Alpha)*(t+Tb/2);
					temg_1=-gfunc(temt1,temt2);
					
					t=pre0[j];
					temt1=(sqrt(2*PI)/Alpha)*(t-Tb/2);
					temt2=(sqrt(2*PI)/Alpha)*(t+Tb/2);
					temg0=gfunc(temt1,temt2);
					
					t=pre1[j];
					temt1=(sqrt(2*PI)/Alpha)*(t-Tb/2);
					temt2=(sqrt(2*PI)/Alpha)*(t+Tb/2);
					temg1=gfunc(temt1,temt2);
					
					t=pre2[j];
					temt1=(sqrt(2*PI)/Alpha)*(t-Tb/2);
					temt2=(sqrt(2*PI)/Alpha)*(t+Tb/2);
					temg2=gfunc(temt1,temt2);
					
					table00111[j]=temg_2+temg_1+temg0+temg1+temg2;
				}
				for(k=0;k<8;k++)
				{
					fprintf(fp,"%f ",table00111[k]);	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -