📄 mod.c
字号:
//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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -