1.30720
含义:1子帧的数据长度
计算:(2048 + 160)* 2 + (2048 + 144) * 12 = 30720 int(real+imag)
采样点 长CP 2个符号 短CP 12个符号
2.8848
含义:((2048 + 160) + 4)= 2212 int(real+imag)
2212 * 4 = 8848 char
3.DSP直接发送正弦波到AIF
(1)首先,直接将正弦波数据赋值给pOneSubFramWavAnt1 /2:
pOneSubFramWavAnt1 = (T_OneSubFramWav * )(&single30720[0]);
pOneSubFramWavAnt2 = (T_OneSubFramWav * )(&single30720[0]);
T_OneSubFramWav结构体定义如下,第0,7符号中前面为extend CP(160),其余符号前面为normal CP(144):
typedef struct _T_HeadSymWav{
_Scomplex CP_Data[2048+160];
}T_HeadSymWav;
typedef struct _T_NormSymWav{
_Scomplex CP_Data[2048+144];
}T_NormSymWav;
typedef struct _T_OneSubFramWav{
T_HeadSymWav HeadSymWavPre;
T_NormSymWav NormSymWavPre[6];
T_HeadSymWav HeadSymWavPro;
T_NormSymWav NormSymWavPro[6];
}T_OneSubFramWav;
其中single30720定义为:
_Scomplex single30720[30720]=
{
#include "single_30720_Frmwk_BspAif2Init.txt"
};
for(SymInx = 0;SymInx<7;SymInx++)
{
if(0 == SymInx) //160 cp
{
//符号0 ANT1
memcpy(&(pgAifSendDatStu->OneSymTimeDataAnt1[Aif1msBufBlockNum][SymInx].TimeData), &(pOneSubFramWavAnt1->HeadSymWavPre), sizeof(T_HeadSymWav));
//符号7 ANT1
memcpy(&(pgAifSendDatStu->OneSymTimeDataAnt1[Aif1msBufBlockNum][7+SymInx].TimeData), &(pOneSubFramWavAnt1->HeadSymWavPro), sizeof(T_HeadSymWav));
//符号0 ANT2
// memcpy(&(pgAifSendDatStu->OneSymTimeDataAnt2[Aif1msBufBlockNum][SymInx].TimeData), &(pOneSubFramWavAnt2->HeadSymWavPre), sizeof(T_HeadSymWav));
//符号7 ANT2
// memcpy(&(pgAifSendDatStu->OneSymTimeDataAnt2[Aif1msBufBlockNum][7+SymInx].TimeData), &(pOneSubFramWavAnt2->HeadSymWavPro), sizeof(T_HeadSymWav));
}
else//144 cp
{
//符号1,2,3,4,5,6 ANT1
memcpy(&(pgAifSendDatStu->OneSymTimeDataAnt1[Aif1msBufBlockNum][SymInx].TimeData), &(pOneSubFramWavAnt1->NormSymWavPre[SymInx-1]), sizeof(T_NormSymWav));
//符号8,9,10,11,12,13 ANT1
memcpy(&(pgAifSendDatStu->OneSymTimeDataAnt1[Aif1msBufBlockNum][7+SymInx].TimeData), &(pOneSubFramWavAnt1->NormSymWavPro[SymInx-1]), sizeof(T_NormSymWav));
//符号1,2,3,4,5,6 ANT1
// memcpy(&(pgAifSendDatStu->OneSymTimeDataAnt2[Aif1msBufBlockNum][SymInx].TimeData), &(pOneSubFramWavAnt2->NormSymWavPre[SymInx-1]), sizeof(T_NormSymWav));
//符号8,9,10,11,12,13 ANT1
// memcpy(&(pgAifSendDatStu->OneSymTimeDataAnt2[Aif1msBufBlockNum][7+SymInx].TimeData), &(pOneSubFramWavAnt2->NormSymWavPro[SymInx-1]), sizeof(T_NormSymWav));
}
}
其中,pgAifSendDatStu 结构体指向gucDlMonoDescRegion:
T_AifSendDatStu * pgAifSendDatStu = (T_AifSendDatStu *)(&gucDlMonoDescRegion[0]);
gucDlMonoDescRegion定义为:
//8848 * 14(符号) * 2(ms) * 2(天线) DEV_AIF_SHARE_MONO_DESC_DL_NUM = 7*4*2
UINT8 gucDlMonoDescRegion[DEV_AIF_MONO_DESC_SIZE * DEV_AIF_SHARE_MONO_DESC_DL_NUM];
T_AifSendDatStu结构体定义如下,其为2天线*2ms*14个符号,1符号为(2048+160+4)*4=8848(char):
typedef struct _T_AifSendDatStu{
T_OneSymTimeData OneSymTimeDataAnt1[2][14];
T_OneSymTimeData OneSymTimeDataAnt2[2][14];
}T_AifSendDatStu;
其中T_OneSymTimeData结构体定义:
typedef struct _T_OneSymTimeData{
unsigned int CppiHead[4];
_Scomplex TimeData[160+2048];
}T_OneSymTimeData;
上述memcpy赋值中,TimeData为2048+160长度,而NormSymWavPro为2048+144,所以存在normal CP的符号(0,7)赋值给对应TimeData之后,TimeData的最后会有160-144=16(int)个0;HeadSymWavPre为2048+160,故存在extend CP的符号正好全部赋值。
也就是说,gucDlMonoDescRegion(也即pgAifSendDatStu )大小为(2048+160)*14*2*2=123648(int),真实2天线*2ms数据(2子帧)长度为:30720*2*2=122880(int)。
123648-122880=768,正好为(160-144)*12符号*2ms*2天线。
4.发送端画图
(2)因为gucDlMonoDescRegion中带normal CP的符号也开辟了2048+160+4的长度,拿符号1为例,其前面为normal CP,使用上述memcpy拷贝函数时,gucDlMonoDescRegion中符号1最后应该有160-144=16(int)=32(16bit)个0,如下图所示:
(3)下图为画出的2ms波形,可以看到尖峰为每个符号前面的unsigned int CppiHead[4],共14*2=28个尖峰,最右边点为:(2048+160+4)*14*2=61936。
放大之后为: