19.4.6.6.6 Subcarrier modulation mapping
来源:互联网 发布:linux脚本怎么建立 编辑:程序博客网 时间:2024/05/16 12:57
uint_8 get_bit_value(uint_8 *bin, const int size){//bn...b4b3b2b1b0这样的顺序uint_8 bitval = bin[0];for (int i = 1; i < size; i++){bitval |= (bin[i] << i);}return bitval;}int_32 Subcarrier_Modulation_Mapping(IN int_32 module, IN uint_8 indat[], int_32 inlen, OUT Complex outdat[]){int_32 i = 0;uint_8 bitval = 0;int_32 cnt = 0;//indat 把bit stream转换成了byte stream,每一个bit对应一个byte//b0最先输出,所以多个bit进行map时,最后输出要反转//例如map时输入b0b1b2b3,但是输出时需要转换成b3b2b1b0if(module == BPSK){//输人(b0) I路输出 Q路输出// 0 -1 0// 1 1 0int_16 code_bpsk[2] = { -1, 1};//const double kmod_bpsk = 1;for(i = 0; i < inlen;){bitval = indat[i++] & 0x01;outdat[cnt][0] = code_bpsk[bitval];outdat[cnt][1] = 0;cnt++;}}else if(module == DBPSK){//输人(b0) I路输出 Q路输出// 0 -1 0// 1 1 0int_16 code_bpsk[2] = { -1, 1};//const double kmod_bpsk = 1;for(i = 0; i < inlen;){bitval = indat[i++] & 0x01;outdat[cnt][0] = 0;outdat[cnt][1] = code_bpsk[bitval];cnt++;}}else if(module == QPSK){//输人(b0) I路输出 输人(b1) Q路输出// 0 -1 0 -1// 1 1 1 1int_16 code_qpsk[2] = { -1, 1};const double kmod_qpsk = 0.7071; // 1/(√2)if(inlen % 2){err("VSG QPSK mapping\n");return 0;}for(i = 0; i < inlen;){bitval = indat[i++] & 0x01;outdat[cnt][0] = code_qpsk[bitval] * kmod_qpsk;bitval = indat[i++] & 0x01;outdat[cnt][1] = code_qpsk[bitval] * kmod_qpsk;cnt++;}}else if(module == QAM16){//输人(b0b1) 1路输出 输入(b2b3) 转换 (b1b0) 1路输出// 00 -3 00 -3 00 -3// 01 -1 01 -1 01 3// 11 1 11 1 10 -1// 10 3 10 3 11 1int_16 code_qam16[4] = { -3, 3, -1, 1};const double kmod_qam16 = 0.3162; // 1/(√10)const int N_BPSC = 2;if(inlen % 4){err("VSG QAM16 mapping\n");return 0;}for(i = 0; i < inlen;){bitval = get_bit_value(&indat[i], N_BPSC);outdat[cnt][0] = code_qam16[bitval] * kmod_qam16;i += N_BPSC;bitval = get_bit_value(&indat[i], N_BPSC);outdat[cnt][1] = code_qam16[bitval] * kmod_qam16;i += N_BPSC;cnt++;}}else if(module == QAM64){//输人(b0b1b2) I路输出 输人(b3b4b5) Q路输出 转换 输人(b2b1b0) I路输出// 000 -7 000 -7 000 -7// 001 -5 001 -5 001 7// 011 -3 011 -3 010 -1// 010 -1 010 -1 011 1// 110 1 110 1 100 -5// 111 3 111 3 101 5// 101 5 101 5 110 -3// 100 7 100 7 111 3int_16 code_qam64[8] = { -7, 7, -1, 1, -5, 5, -3, 3};const double kmod_qam64 = 0.1543; // 1/(√42)const int N_BPSC = 3;if(inlen % 6){err("VSG QAM64 mapping\n");return 0;}for(i = 0; i < inlen;){bitval = get_bit_value(&indat[i], N_BPSC);outdat[cnt][0] = code_qam64[bitval] * kmod_qam64;i += N_BPSC;bitval = get_bit_value(&indat[i], N_BPSC);outdat[cnt][1] = code_qam64[bitval] * kmod_qam64;i += N_BPSC;cnt++;}}else if(module == QAM256){//输人(b0b1b2b3) I路输出 输人(b4b5b6b7) Q路输出 转换 输人(b3b2b1b0) I路输出// 0000 -15 0000 -15 0000 -15// 0001 -13 0001 -13 1000 15// 0011 -11 0011 -11 0100 -1// 0010 -9 0010 -9 1100 1// 0110 -7 0110 -7 0010 -9// 0111 -5 0111 -5 1010 9// 0101 -3 0101 -3 0110 -7// 0100 -1 0100 -1 1110 7// 1100 1 1100 1 0001 -13// 1101 3 1101 3 1001 13// 1111 5 1111 5 0101 -3// 1110 7 1110 7 1101 3// 1010 9 1010 9 0011 -11// 1011 11 1011 11 1011 11// 1001 13 1001 13 0111 -5// 1000 15 1000 15 1111 5int_16 code_qam256[16] = { -15, 15, -1, 1, -9, 9, -7, 7, -13, 13, -3, 3, -11, 11, -5, 5};const double kmod_qam256 = 0.076696498884737; // 1/(√170)const int N_BPSC = 4;if(inlen % 8){err("VSG QAM256 mapping\n");return 0;}for(i = 0; i < inlen;){bitval = get_bit_value(&indat[i], N_BPSC);outdat[cnt][0] = code_qam256[bitval] * kmod_qam256;i += N_BPSC;bitval = get_bit_value(&indat[i], N_BPSC);outdat[cnt][1] = code_qam256[bitval] * kmod_qam256;i += N_BPSC;cnt++;}}else{err("Subcarrier_Modulation_Mapping\n");return 0;}//说明:11A中// 每次总数据流中取出NCbps54位,然后再以NBpsc54位对其分解成48个通道数据. 再经过映射得到48个复数;// 48个复数分别放到通道-26,+26中(其中-21,-7,7,21通道保留不存入数据,用于后面插入导频; 0通道放到复数0)// 其它-32,-27; 27,31通道不使用填充0return cnt;}
0 0
- 19.4.6.6.6 Subcarrier modulation mapping
- OFDM中的DC subcarrier
- 调制modulation的概念
- Pulse Width Modulation
- 什么是调制(Modulation)
- MTF(Modulation Transfer Function)
- Pulse Width Modulation (PWM)
- ShaderSimpler(6) : Parallax Mapping
- Mapping
- Mapping
- Mapping
- Digital Tv Modulation Type 介绍
- PWM(Pulse Width Modulation)调试原理
- 脉冲宽度调制(Pulse Width Modulation) PWM简介
- Modulation and Coding Scheme - MCS Index Table
- Active Load Modulation(有源负载调制)
- Introduction to Pulse Width Modulation (PWM)
- 脉冲宽度调制(Pluse Width Modulation)
- I2C和SPI总线对比
- 修改ActionMode左边关闭按钮的图标
- self.automaticallyAdjustsScrollViewInsets = NO; -(有效)
- 欢迎使用CSDN-markdown编辑器
- Could not find method android() for arguments on root project '项目名' of type org.gradle.api.Project.
- 19.4.6.6.6 Subcarrier modulation mapping
- Jenkins进阶系列之——12详解Jenkins节点配置
- java关于javadoc的那些小技巧和你需要知道的地方(二)
- jQ选择器及常见几个方法
- 选择:国企?民营?
- 通过cat 命令显示字符画
- [BZOJ4319]cerc2008 Suffix reconstruction(贪心+构造+后缀数组)
- Java实现WebService以及不同的调用方式
- 软件开发项目影响进度因素及控制浅谈