mod.c

来自「完整的OFDM系统,含Matlab仿真代码和DSP源代码下载.平台Tms320C」· C语言 代码 · 共 59 行

C
59
字号
//mod.c
//
// Project Red 2002: High Performance OFDM Modem 
// Against Channel Imperfections
// Auther: Linus Falk

//#include "ofdm.h"
#include "mod_tab.h"
#define RE_MASK_2 0x01	// 0000 0001
#define IM_MASK_2 0x02	// 0000 0010
#define RE_MASK_4 0x03	// 0000 0011
#define IM_MASK_4 0x0c	// 0000 1100
#define RE_MASK_6 0x07	// 0000 0111
#define IM_MASK_6 0x38	// 0011 1000
#define RE_MASK_8 0x0f	// 0000 1111
#define IM_MASK_8 0xf0	// 1111 0000

#define QAM_AMPLITUDE 1

				// indata,	antal bitar ,  pekare utdataminne
void mod(unsigned char data, char nr_bits, float *outdata_p){
switch(nr_bits){
	case 0: //no data sent
		*outdata_p = 0;
		*(outdata_p+1) = 0;
		break;
	case 1: //PSK
		if(data & 0x01 == 0x01){
			*outdata_p = 13.0;
			*(outdata_p +1) = 0;
		}else{
			*outdata_p = -13.0;
			*(outdata_p +1) = -0;
		}
		break;
	case 2: //4QAM, 
		*outdata_p = QAM_4_TABLE[(data & RE_MASK_2)];
		*(outdata_p+1) = QAM_4_TABLE[(data & IM_MASK_2)>>1];
		break;
	case 4: //16QAM, 
		*outdata_p = QAM_16_TABLE[(data & RE_MASK_4)];
		*(outdata_p+1) = QAM_16_TABLE[(data & IM_MASK_4)>>2];
		break;
	case 6: //64QAM, 
		*outdata_p = QAM_64_TABLE[(data & RE_MASK_6)];
		*(outdata_p+1) = QAM_64_TABLE[(data & IM_MASK_6)>>3];
		break;
	case 8: //256QAM, 
		*outdata_p = QAM_256_TABLE[(data & RE_MASK_8)];
		*(outdata_p+1) = QAM_256_TABLE[(data & IM_MASK_8)>>4];
		break;
	default: //never done
		*outdata_p = 0;
		*(outdata_p+1) = 0;
		break;
}
}

⌨️ 快捷键说明

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