主题: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?规定必须乘4
printf("%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++;//
}