主题:iqlog.c文件
时间:2021年1月8日
作者:ybb
D:\OAI\openairinterface5g-develop-20209018\openairinterface5g-develop\common\utils\T\tracer\logger\iqlog.c
if (bsize != N_RB_UL * symbols_per_tti * 12 * 4) {//为什么RE数量需要乘4?规定必须乘4printf("%s:%d:%s: bad buffer size\n", __FILE__, __LINE__, __FUNCTION__);abort();}
int16 + int14=int 32
采样数量
max_nsamples = bsize / 4;//最大采样数量与bitsize有关,按照前面的定义就是采样数量的最大值就是对应的一个TTI的RE个数
if (max_nsamples > l->max_length) {l->i = realloc(l->i, max_nsamples * sizeof(float));//为指针再分配空间,原来大就减小,原来小就扩大 注:IQ数据以32位浮点数处理if (l->i == NULL) abort();//内存分配失败l->q = realloc(l->q, max_nsamples * sizeof(float));if (l->q == NULL) abort();l->max_length = max_nsamples;
两层for循环实行对存储的IQ两路数据的读取:
//下面的两层for循环很重要idst = l->i;qdst = l->q;count = 0;for (i = 0; i < symbols_per_tti; i++)//一个TTI的长度为1个时隙,1ms子帧在5G可以有多个时隙(最大采样数量在这里定义为一个TTI内RE的个数)//时域上for (j = 0; j < 12 * nb_rb; j++) {//j为频域指示//频域上*idst = ((int16_t *)buffer)[(i*N_RB_UL*12 + j) * 2];//偶数*qdst = ((int16_t *)buffer)[(i*N_RB_UL*12 + j) * 2 + 1];//奇数idst++;//???qdst++;//???count++;//}