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

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

?? modemtx.c

?? TI CCS2.1 下modem 收發(包括采樣重采樣變換)的底層代碼,是一個完整的工程包.
?? C
字號:
#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]));
		}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美综合在线视频| 亚洲精品ww久久久久久p站| 51精品国自产在线| 欧美色涩在线第一页| 在线视频综合导航| 色天天综合久久久久综合片| 不卡av在线免费观看| 不卡一区中文字幕| av在线不卡网| 91理论电影在线观看| 色综合久久88色综合天天免费| 99国产精品久久久久久久久久久| 成人三级在线视频| 北条麻妃一区二区三区| 91蜜桃传媒精品久久久一区二区| 91社区在线播放| 色94色欧美sute亚洲线路二 | 欧美少妇一区二区| 国产精品对白交换视频| 国产欧美日韩视频一区二区 | 久久99精品国产麻豆不卡| 久久99久久久欧美国产| 国产黄人亚洲片| 成人免费看黄yyy456| 91偷拍与自偷拍精品| 欧美日韩精品免费| 精品奇米国产一区二区三区| 久久久久久麻豆| 国产精品天美传媒沈樵| 亚洲欧美电影一区二区| 亚洲成人在线免费| 久久丁香综合五月国产三级网站| 国产一区 二区| 91在线丨porny丨国产| 欧美色老头old∨ideo| 欧美一区二区三区视频免费| 久久久亚洲精品一区二区三区| 欧美激情一区二区三区| 亚洲日本va在线观看| 偷拍与自拍一区| 国产乱妇无码大片在线观看| 不卡视频一二三四| 欧美军同video69gay| 337p日本欧洲亚洲大胆色噜噜| 国产精品毛片无遮挡高清| 亚洲电影一级片| 国产一区二区三区四区五区入口| 99久久久免费精品国产一区二区| 欧美丰满美乳xxx高潮www| 精品sm捆绑视频| 一区二区三区蜜桃网| 另类综合日韩欧美亚洲| 91在线一区二区| 精品乱人伦一区二区三区| 亚洲欧洲一区二区三区| 秋霞电影网一区二区| 91免费在线视频观看| 欧美一区二区三区公司| 国产精品久久久久久久久久久免费看 | 日韩一区二区免费在线观看| 国产精品私房写真福利视频| 无码av免费一区二区三区试看| 国产成人av在线影院| 91精品国产色综合久久不卡电影| 日本一区二区三区久久久久久久久不 | 99视频在线观看一区三区| 欧美男人的天堂一二区| 国产精品午夜电影| 青青草成人在线观看| 一本大道久久a久久精品综合| 日韩你懂的在线播放| 亚洲第一电影网| 96av麻豆蜜桃一区二区| 国产亚洲精品7777| 奇米影视在线99精品| 在线观看不卡一区| 中文一区二区在线观看| 久久国产精品99久久久久久老狼 | 亚洲视频你懂的| 国产自产视频一区二区三区| 欧美区视频在线观看| 亚洲美女视频一区| 成人av电影观看| 久久久综合激的五月天| 日韩电影在线一区二区三区| 91视频免费看| 国产精品短视频| 粉嫩aⅴ一区二区三区四区| 日韩欧美国产电影| 午夜伊人狠狠久久| 欧美性色黄大片| 亚洲欧洲日产国码二区| 国产不卡高清在线观看视频| 欧美成人精品福利| 麻豆精品久久精品色综合| 欧美日韩免费观看一区三区| 亚洲美女视频在线| 色香色香欲天天天影视综合网| 欧美国产综合一区二区| 国产精品一级片在线观看| 欧美电视剧在线观看完整版| 日日嗨av一区二区三区四区| 欧美午夜不卡视频| 亚洲福利视频导航| 欧美精品久久天天躁| 亚洲成av人综合在线观看| 欧美日韩综合一区| 日韩电影在线观看一区| 欧美一区二区三区不卡| 日韩电影在线免费观看| 日韩欧美美女一区二区三区| 另类成人小视频在线| 精品免费国产一区二区三区四区| 国内精品伊人久久久久av一坑| 久久久久久一级片| 国产成人在线电影| 国产精品国产自产拍在线| 不卡一区在线观看| 亚洲激情图片一区| 欧美精品黑人性xxxx| 蜜桃av一区二区三区电影| 欧美mv日韩mv| 国产成人午夜精品5599| 136国产福利精品导航| 91片在线免费观看| 亚洲丶国产丶欧美一区二区三区| 欧美日本一区二区| 韩国成人福利片在线播放| 中文字幕不卡在线| 日本精品视频一区二区| 日韩精品91亚洲二区在线观看| 日韩一区二区电影在线| 国产大片一区二区| 亚洲激情男女视频| 日韩午夜在线观看视频| 国产成人激情av| 亚洲一级二级三级| 精品日韩在线观看| fc2成人免费人成在线观看播放| 亚洲老妇xxxxxx| 日韩视频免费观看高清完整版在线观看 | 国产精品66部| 一区二区三区在线视频免费| 制服丝袜亚洲网站| 国产成人精品网址| 亚洲一卡二卡三卡四卡五卡| 欧美不卡123| 91免费在线看| 精品影院一区二区久久久| 中文字幕一区二区三区在线播放| 91福利国产精品| 国产乱一区二区| 一区二区三区色| 精品99一区二区| 欧美中文字幕一区| 国模冰冰炮一区二区| 亚洲图片你懂的| 欧美成人精品1314www| 色哟哟国产精品免费观看| 免费观看在线色综合| 中文字幕在线观看一区二区| 欧美日本视频在线| 成人福利视频网站| 蜜臀久久久久久久| 亚洲免费大片在线观看| 精品欧美乱码久久久久久1区2区| 91久久精品一区二区| 精品亚洲成a人在线观看| 亚洲综合色在线| 欧美国产日韩在线观看| 日韩一区二区三区在线| 在线观看视频一区| 粉嫩av亚洲一区二区图片| 久久国产精品第一页| 亚洲午夜电影网| 中文字幕一区二区三区四区| 精品日产卡一卡二卡麻豆| 欧美日韩一区成人| 一本色道亚洲精品aⅴ| 国产成人亚洲综合a∨猫咪| 日韩成人av影视| 亚洲一区在线观看网站| 最近中文字幕一区二区三区| 精品国产百合女同互慰| 7777精品伊人久久久大香线蕉经典版下载 | 国产精品久久久久桃色tv| 欧美videofree性高清杂交| 欧美日韩免费观看一区二区三区| 91丨porny丨中文| 9i看片成人免费高清| 成人动漫中文字幕| 国产ts人妖一区二区| 激情综合网激情| 蜜桃传媒麻豆第一区在线观看| 亚洲高清久久久| 亚洲成人一二三| 亚洲高清在线精品| 亚洲成人你懂的| 亚洲成人7777| 亚洲国产另类av|