📄 datamodulation.cpp
字号:
//#include "dlTxBurstData.h"
#include "stdio.h"
#include "datamodulation.h"
#include "global_var.h"
void dataModulation(Uint8 subChannelIndex,Uint8 *pModulationIn ,
Uint16 modulationInLength,Uint8 modulationType,
Int16 qamAve,PilotParam *pPilotParam,
Int16 *pModulationOut,Uint16 modulationOutLength)
{
Int16 i;
Uint8 outBit;
Uint16 wk;
// qamAve =(Int16)qamAve * 1.41421;
qamAve = 2896;
if(subChannelIndex == 16)
{
if(pPilotParam->ofdmSymIndex == 0)
{
pPilotParam->registers = pPilotParam->encodePoly;
}
wk = (pPilotParam->registers & 1);
outBit = wk ^ ((pPilotParam->registers >> 2) & 1);
pPilotParam->registers >>= 1;
outBit <<= 10;
pPilotParam->registers |= outBit;
pPilotParam->ofdmSymIndex ++;
switch (modulationType)
{
case BPSK:
for(i = 0; i < 28; i++)
{
*pModulationOut++ = 0;
*pModulationOut++ = 0;
}
for (i = 0; i < 201; i++)
{
switch(i)
{
case 12:
case 62:
case 163:
case 188:
*pModulationOut++ = (1 - 2*wk) * qamAve;
*pModulationOut++ = 0;
break;
case 37:
case 87:
case 113:
case 138:
*pModulationOut++ = (1 - 2*(~wk&1)) * qamAve;
*pModulationOut++ = 0;
break;
case 100:
*pModulationOut++ = 0;
*pModulationOut++ = 0;
break;
default:
*pModulationOut++ = bpskCoordinates[pModulationIn[0]];
*pModulationOut++ = 0;
pModulationIn += 1;
break;
}
}
for(i = 0; i < 27; i++)
{
*pModulationOut++ = 0;
*pModulationOut++ = 0;
}
// *modulationOutLength = 256;
break;
case QPSK:
for(i = 0; i < 28; i++)
{
*pModulationOut++ = 0;
*pModulationOut++ = 0;
}
for (i = 0; i < 201; i++)
{
switch(i)
{
case 12:
case 62:
case 163:
case 188:
*pModulationOut++ = (1 - 2*wk) * qamAve;
*pModulationOut++ = 0;
break;
case 37:
case 87:
case 113:
case 138:
*pModulationOut++ = (1 - 2*(~wk&1)) * qamAve;
*pModulationOut++ = 0;
break;
case 100:
*pModulationOut++ = 0;
*pModulationOut++ = 0;
break;
default:
*pModulationOut++ = qpskCoordinates[pModulationIn[0]];
*pModulationOut++ = qpskCoordinates[pModulationIn[1]];
pModulationIn +=2;
break;
}
}
for(i = 0; i < 27; i++)
{
*pModulationOut++ = 0;
*pModulationOut++ = 0;
}
// *modulationOutLength = 256;
break;
case QAM16:
for(i = 0; i < 28; i++)
{
*pModulationOut++ = 0;
*pModulationOut++ = 0;
}
for (i = 0; i < 201;i++)
{
switch(i)
{
case 12:
case 62:
case 163:
case 188:
*pModulationOut++ = (1 - 2*wk) * qamAve;
*pModulationOut++ = 0;
break;
case 37:
case 87:
case 113:
case 138:
*pModulationOut++ = (1 - 2*(~wk&1)) * qamAve;
*pModulationOut++ = 0;
break;
case 100:
*pModulationOut++ = 0;
*pModulationOut++ = 0;
break;
default:
*pModulationOut++ =
qam16Coordinates[(pModulationIn[0]<<1)^pModulationIn[1]];
*pModulationOut++ =
qam16Coordinates[(pModulationIn[2]<<1)^pModulationIn[3]];
pModulationIn += 4;
break;
}
}
for(i = 0; i < 27; i++)
{
*pModulationOut++ = 0;
*pModulationOut++ = 0;
}
// *modulationOutLength = 256;
break;
case QAM64:
for(i = 0; i < 28; i++)
{
*pModulationOut++ = 0;
*pModulationOut++ = 0;
}
for (i = 0; i < 201;i++)
{
switch(i)
{
case 12:
case 62:
case 163:
case 188:
*pModulationOut++ = (1 - 2*wk) * qamAve;
*pModulationOut++ = 0;
break;
case 37:
case 87:
case 113:
case 138:
*pModulationOut++ = (1 - 2*(~wk&1)) * qamAve;
*pModulationOut++ = 0;
break;
case 100:
*pModulationOut++ = 0;
*pModulationOut++ = 0;
break;
default:
*pModulationOut++ =
qam64Coordinates[(pModulationIn[0]<<2)^(pModulationIn[1]<<1)^pModulationIn[2]];
*pModulationOut++ =
qam64Coordinates[(pModulationIn[3]<<2)^(pModulationIn[4]<<1)^pModulationIn[5]];
pModulationIn += 6;
break;
}
}
for(i = 0; i < 27; i++)
{
*pModulationOut++ = 0;
*pModulationOut++ = 0;
}
// *modulationOutLength = 256;
break;
default:
printf("the modulation type is not available! \n");
break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -