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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? modemtx.c

?? dsp課件 好用 深圳大學(xué)紀(jì)震博士的課件
?? C
字號(hào):
#include "modemtx.h"
#include "razedcos.h"  /* table for raised cosine shaping filter */
#include "sinetab.h"   /* sine look-up table */

/* definition of constelation space */
struct POINT constellation[NUM_CONSTELATION_POINTS] = 
{
	/* first quadrant */
	{0x1000, 0x1000},
	{0x3000, 0x3000},
	{0x1000, 0x3000},
	{0x3000, 0x1000},

	/* second quadrant */
	{-0x1000, 0x1000},
	{-0x3000, 0x3000},
	{-0x1000, 0x3000},
	{-0x3000, 0x1000},

	/* third quadrant */
	{-0x1000, -0x1000},
	{-0x3000, -0x3000},
	{-0x1000, -0x3000},
	{-0x3000, -0x1000},

	/* fourth quadrant */
	{0x1000, -0x1000},
	{0x3000, -0x3000},
	{0x1000, -0x3000},
	{0x3000, -0x1000},
};

/* global structures */
struct MODEM_PARAMETERS g_ModemData;

struct TEST
{
	long i;
	long j;
} g_test;


/*******************************************************
	SineLookup()
	============
	
	This function returns a sine function.  It is 
	implemented with a 1/4 wave look up table.  To 
	
	
	
*******************************************************/
int SineLookup(int sample)
{                                             
	int sineValue;
	
	/* Find offset into 1/4 wave table, adjusting
		for quadrants 2 and 4 */
	int offset = sample & (SIZE_SINE_TABLE-1);
	if (sample & SIZE_SINE_TABLE)  
		offset = SIZE_SINE_TABLE-1-offset;      

	/* Read value from sine table, 
		adjusting the sign for quadrants 3 and 4 */		
	sineValue = sineTable[offset];
	if (sample & (SIZE_SINE_TABLE*2))
		sineValue = -sineValue;

	return(sineValue);
}

/*******************************************************
	CosineLookup()
	==============
	
	This function returns a cosine function.  It is 
	implemented by calling the SineLookup() function
	and adjusting the phase.
	
*******************************************************/
int CosineLookup(int sample)
{
	return( SineLookup(sample + SIZE_SINE_TABLE) );
}

/*******************************************************
	Modulation()
	==============
	
	This function the modulated result of an in-phase
	and quadrature phase component, added together.
	
*******************************************************/
int Modulation(int Isample, int Qsample, int phase)
{   
#if defined(PROD_C6X)
	/* work-around C6x compiler bug when using long multiplication */
	long result = (short)Isample * (short)SineLookup(phase);
	result += (short)Qsample * (short)CosineLookup(phase);
#else
	long result = (long)Isample * (long)SineLookup(phase);
	result += (long)Qsample * (long)CosineLookup(phase);
#endif
	result >>= 14;
	return((int)result);
}

/*******************************************************
	ShapingFilter()
	===============
	
	This function shapes either the in-phase or 
	quadrature phase component using a raised cosine
	filter.  The user must pass in a delayLine big
	enough to hold the shaping filter.  The output
	is calculated one baud at a time, and is found at 
	the front of the delay line.
	
*******************************************************/
void ShapingFilter(int *delayLine, int amplitudeOfSymbol)
{
	int i;
	
	/* shift the delay line */
	for(i = 0; i < SIZE_SHAPING_FILTER - SAMPLES_PER_BAUD; i++ )
	{
		delayLine[i] = delayLine[i+SAMPLES_PER_BAUD];
	}

	/* clear end of delay buffer before addition operation */
	for( ; i < SIZE_SHAPING_FILTER; i++ )
	{
		delayLine[i] = 0;
	}

	/* add new symbol into delay line  */
	for( i = SIZE_SHAPING_FILTER; i--; )
	{
	#if defined(PROD_C6X)
		delayLine[i] += (((short)raisedCosineTable[i] * (short)amplitudeOfSymbol)>>14);
	#else
		delayLine[i] += ((raisedCosineTable[i] * (long)amplitudeOfSymbol)>>14);
	#endif
	}
}
                  
/*******************************************************
	ModemTransitter()
	=================
	
	This function runs the Tx modulator to generate one
	baud of output signal.  This function calls the 
	ShapingFilter() function to generate I and Q samples,
	then modulates by the carrier frequency and adds the
	I and Q together.
	
*******************************************************/
void ModemTransmitter(int baudIndex, int *outputBuffer)
{
	/* local variables */
	int Iamplitude;    	/* Quadrature component amplitude */
//	int Qamplitude;    	/* Quadrature component amplitude */
//	int n;				/* loop index for each baud */
//static struct POINT ConstellationPoint;

	/*******************
	1. Look up in-phase and quadrature amplitudes
	********************/
	Iamplitude = g_ModemData.cPoints[baudIndex].I;
//	Qamplitude = g_ModemData.cPoints[baudIndex].Q;

	/*******************
	2. Run in-phase and quadrature components through baseband
		shaping filter, with interpolation
	********************/
	ShapingFilter(g_ModemData.Idelay, Iamplitude);
/*RP:TEMP	ShapingFilter(g_ModemData.Qdelay, Qamplitude); */

	/*******************
	4. Modulate the in-phase and quadrature components to
		generate the output signal from the transmitter
	********************/
/*RP:TEMP
	for (n = 0; n < SAMPLES_PER_BAUD; n++ )
	{
		outputBuffer[n] = Modulation(g_ModemData.Idelay[n], 
			g_ModemData.Qdelay[n], g_ModemData.phase);  

		 increment phase for next pass 
		g_ModemData.phase += g_ModemData.carrierFreq;
	}   */
}

/*******************************************************
	Initialize()
	============
	
	This function initializes the global modem parameter
	structure;
	
*******************************************************/
void Initialize(void)
{
	int i;
	
#if defined(C54X)
	asm(" RSBX OVM");             
#endif
	
	g_ModemData.carrierFreq = 15;  /* increment through 125Hz sine table */
	g_ModemData.phase = 0;			/* initialize phase for carrier */
	g_ModemData.samplesPerBaud = SAMPLES_PER_BAUD;
	g_ModemData.noiseLevel = 0;
	
	/* zero delay lines for shaping filter */
	for( i = SIZE_SHAPING_FILTER; i--; )
	{
		g_ModemData.Idelay[i] = 0;
		g_ModemData.Qdelay[i] = 0;
	}
	/* clear output buffer */
	for( i = SAMPLES_PER_BAUD*BAUD_PER_LOOP; i--; )
	{
		g_ModemData.OutputBuffer[i] = 0;
	}
	
	/* clear data, constellation, and noise buffers */
	for( i = BAUD_PER_LOOP; i--; )
	{
		g_ModemData.dataSymbols[i] = 0;
		g_ModemData.cPoints[i].I = 0;
		g_ModemData.cPoints[i].Q = 0;
		g_ModemData.cNoise[i].I = 0;
		g_ModemData.cNoise[i].Q = 0;
	}
	
	for( i = BAUD_PER_LOOP; i--; )
	{
		int j;
		g_ModemData.SymbolClock[i*SAMPLES_PER_BAUD] = 1;
		for( j = SAMPLES_PER_BAUD; --j > 0; )
		{
			g_ModemData.SymbolClock[i*SAMPLES_PER_BAUD+j] = -1;
		}
	}
}


/* read next data, convert to constellation points, and add noise */
void ReadNextData(void)
{
	/* add code here to generate modem data */
	ReadConstellation();
}

/* convert data to constellation points and add noise */
void ReadConstellation(void)
{
	AddNoiseSignal();
}


/*******************************************************
	AddNoiseSignal()
	================
	
	This function adds noise to the constellation points
	for the modem transmitter;
	
*******************************************************/
void AddNoiseSignal(void)
{    
	 /* Add code here to read noise signal from disk */

	int i;
	int noiseVolume = 10 - g_ModemData.noiseLevel;

	for( i = BAUD_PER_LOOP; i--; )
	{
		/* convert data to constellation points */
		g_ModemData.cPoints[i] = constellation[(g_ModemData.dataSymbols[i])&15];
	 
		/* Add noise to constellation points, only if level not zero */
		if (g_ModemData.noiseLevel != 0)
		{
			if (noiseVolume < 0)		
			{  
				/* if volume is negative, shift to the left */
				g_ModemData.cPoints[i].I += (g_ModemData.cNoise[i].I << (-noiseVolume));
				g_ModemData.cPoints[i].Q += (g_ModemData.cNoise[i].Q << (-noiseVolume));
			}
			else
			{
				g_ModemData.cPoints[i].I += (g_ModemData.cNoise[i].I >> noiseVolume);
				g_ModemData.cPoints[i].Q += (g_ModemData.cNoise[i].Q >> noiseVolume);
			}
		}
	}
}

/*******************************************************
	Main()
	======
	
	Main loop for modem transmitter example program.
	
*******************************************************/
void main(void)
{ 
	int i;  
	
	g_test.i = -16;
	g_test.j = 0x12345678; 
	g_test.j <<= 4;   
	g_test.i *= g_test.j;

	/* Initialize modem transmitter */
	Initialize();
                      
	/* testing the carrier signal generator */
	for(i = 0; i < SAMPLES_PER_BAUD; i++ )
	{
		g_ModemData.OutputBuffer[i] = SineLookup(i*g_ModemData.carrierFreq);
	}                      

	for(i = 0; i < SAMPLES_PER_BAUD; i++ )
	{
		g_ModemData.OutputBuffer[i] = CosineLookup(i*g_ModemData.carrierFreq);
	}                      
	
	/* loop forever */
	while(1)
	{
		/* get modem data, convert to constellation points, and add noise. */
		ReadNextData();

		/* run modem on new data */	
		for( i = 0; i < BAUD_PER_LOOP; i++ )
		{
			ModemTransmitter(i, &(g_ModemData.OutputBuffer[i*SAMPLES_PER_BAUD]));
		}
	}
	
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
婷婷亚洲久悠悠色悠在线播放| 免费成人av资源网| 欧美一级欧美三级| 大桥未久av一区二区三区中文| 五月婷婷激情综合| 国产精品理伦片| 欧美一区二区三区系列电影| 9i在线看片成人免费| 久久国产综合精品| 亚洲一区二区3| 亚洲欧洲日本在线| 久久欧美一区二区| 欧美一区二区三区性视频| gogogo免费视频观看亚洲一| 久久99最新地址| 天天综合色天天| 一区二区三区在线视频播放| 欧美极品xxx| 久久久激情视频| 日韩一级片在线观看| 欧美主播一区二区三区美女| 成人av免费在线观看| 国产精品综合在线视频| 欧美96一区二区免费视频| 亚洲国产一区在线观看| 最新国产の精品合集bt伙计| 日本一区二区三区四区在线视频| 日韩一二三四区| 欧美绝品在线观看成人午夜影视| 色综合久久66| 在线中文字幕不卡| 91亚洲资源网| 97精品视频在线观看自产线路二| 国产黄色精品网站| 国产麻豆视频一区| 国产在线精品一区二区三区不卡| 奇米精品一区二区三区四区| 日韩av电影免费观看高清完整版| 亚洲一区二区中文在线| 亚洲永久精品国产| 一区二区久久久久| 亚洲欧美视频在线观看| 亚洲欧美偷拍三级| 亚洲激情校园春色| 一级中文字幕一区二区| 亚洲一区在线视频观看| 一区二区视频免费在线观看| 亚洲精品写真福利| 亚洲高清中文字幕| 偷拍日韩校园综合在线| 日韩精品福利网| 蜜桃视频第一区免费观看| 蜜臀av一区二区| 国产在线精品视频| 成人午夜大片免费观看| 99re热这里只有精品视频| 97久久久精品综合88久久| 色综合久久久久网| 欧美肥胖老妇做爰| 欧美成人aa大片| 国产欧美精品一区二区色综合| 日本一区二区在线不卡| 亚洲男同性视频| 日韩不卡一区二区三区| 国产精品正在播放| 99国产精品久| 4hu四虎永久在线影院成人| 精品久久人人做人人爱| 欧美极品aⅴ影院| 亚洲综合丝袜美腿| 美日韩黄色大片| 成人综合婷婷国产精品久久免费| 色综合天天综合网天天狠天天 | 国产高清成人在线| 91一区一区三区| 欧美一区二区三区免费观看视频| 久久中文字幕电影| 亚洲欧美另类图片小说| 日韩高清在线一区| 懂色中文一区二区在线播放| 一本久道中文字幕精品亚洲嫩| 欧美日韩卡一卡二| 久久精品亚洲精品国产欧美| 亚洲精品成人少妇| 捆绑紧缚一区二区三区视频| 成人免费视频视频在线观看免费| 欧美亚洲综合久久| 国产调教视频一区| 亚洲成人av资源| 国产成人啪免费观看软件| 91福利国产精品| 久久久久国产精品人| 亚洲成人激情社区| 粉嫩av一区二区三区| 欧美日韩不卡一区二区| 国产精品少妇自拍| 日韩福利电影在线观看| 99re6这里只有精品视频在线观看| 91精选在线观看| 亚洲欧洲成人自拍| 国产精品538一区二区在线| 欧美中文一区二区三区| 国产欧美一区二区三区鸳鸯浴| 亚洲电影第三页| 99久久精品国产麻豆演员表| 精品国产99国产精品| 午夜影视日本亚洲欧洲精品| 97久久超碰国产精品| 久久久久99精品一区| 日韩国产精品久久久久久亚洲| 99久久精品一区| 国产无人区一区二区三区| 美女爽到高潮91| 欧美精品123区| 亚洲一级二级三级| youjizz国产精品| 久久视频一区二区| 麻豆精品精品国产自在97香蕉| 欧美三级电影一区| 亚洲裸体在线观看| 99久久99久久免费精品蜜臀| 久久精品亚洲精品国产欧美 | 亚洲国产日韩精品| 91福利社在线观看| 中文字幕一区二区三区不卡在线| 久久91精品国产91久久小草| 91精品国产综合久久香蕉麻豆 | 日日夜夜精品视频免费| 欧美伊人久久久久久久久影院| 国产精品不卡在线观看| 成人精品高清在线| 国产精品久久久久久久午夜片| 国产成人啪午夜精品网站男同| 精品剧情在线观看| 久久不见久久见免费视频7| 91精品国产综合久久久久久 | av一区二区三区在线| 国产农村妇女精品| 成人一区二区三区在线观看| 国产午夜精品久久久久久久 | 色老头久久综合| 亚洲丝袜另类动漫二区| 99久久国产综合精品色伊 | 亚洲女子a中天字幕| 91麻豆.com| 一区二区久久久| 欧美日韩在线亚洲一区蜜芽| 亚洲成人三级小说| 日韩美女在线视频| 国产成人av电影在线播放| 国产精品网站导航| 色综合中文字幕| 午夜精品国产更新| 日韩美一区二区三区| 国产精品自拍三区| 国产精品激情偷乱一区二区∴| 99国内精品久久| 亚洲国产精品麻豆| 欧美成人精品二区三区99精品| 国产自产高清不卡| 中文字幕一区二区三区不卡| 91福利视频网站| 麻豆国产欧美一区二区三区| 国产午夜精品久久久久久久| 97aⅴ精品视频一二三区| 亚洲国产日韩a在线播放性色| 欧美一区二区三级| 国产suv精品一区二区6| 亚洲黄一区二区三区| 91精品午夜视频| 粉嫩嫩av羞羞动漫久久久 | 久久精品一二三| 97久久精品人人澡人人爽| 天天亚洲美女在线视频| 久久免费国产精品| 在线观看视频91| 黄色成人免费在线| 亚洲精品中文在线观看| 日韩欧美三级在线| 99久久久国产精品| 久久国产精品99久久久久久老狼| 国产精品久久久久四虎| 欧美日韩高清影院| 岛国精品一区二区| 秋霞av亚洲一区二区三| 国产精品久久久久久久久久久免费看 | 91亚洲大成网污www| 全国精品久久少妇| √…a在线天堂一区| 欧美第一区第二区| 色综合久久中文字幕综合网| 久久99精品久久久久久国产越南| 亚洲女同女同女同女同女同69| 精品国产一区二区三区忘忧草 | 精品嫩草影院久久| 欧美这里有精品| 高清国产一区二区| 蜜芽一区二区三区| 亚洲最大色网站| 国产精品午夜电影|