LTE系统调试记录8:发送端发送正弦波详解+8848、30720含义

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"
};


(2)将pOneSubFramWavAnt1 (Ant2暂未使用)的数据赋给另外一个结构体中的数据TimeData:
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;


(3)注意:
上述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.发送端画图

(1)下图上面的文件为正弦波采样点,gucDlMonoDescRegion地址下起始为unsigned int CppiHead[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。


放大之后为:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大师兄电子工作室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值