TI中文支持网
TI专业的中文技术问题搜集分享网站

利用BCP实现PDCCH

大家好!

不知道谁有利用BCP实现PDCCH的例子?实现的不仅仅是编码部分还包括加扰和调制部分?我现在的DSP型号是C6670.

求大神赐予!不胜感激!

Andy Yin1:

没有,我们都是用的软件做的PDCCH处理,你可以参考BCP中说明使用CRC/ENC/RM/并结合pktDMA及MOD模块实现,有问题可以沟通。

guang lin:

回复 Andy Yin1:

你好!Andy,

现在这部分我是实现的差不多了,但就是有一个很大的问题摆在我的前面,那就是所有DCI做完了速率匹配之后CPU会进行复用,那么我们直接将复用的数据送入BCP做加扰和调制的操作,根据我目前的调试结果,BCP不识别我速率匹配后的结果啊,不知道有什么还需要配置的?或者有什么该注意的,目前我的调制结果一直是错误的。非常期待您的解答!

谢谢!

Andy Yin1:

回复 guang lin:

CRC/ENC/RM是分PDCCH依次输入处理,MOD是将一个TTI所有PDCCH复用后再次输入处理,你的复用是DSP CORE完成的么,确认一下复用输出结果及MOD的配置。你现在MOD输出的结果是怎样的,有什么规律么。如果复用没有问题,对于MOD模块而言没什么特殊的配置,无非就是按照手册说明配置相应的modulation type、enable scrambling、CINIT等参数。

guang lin:

回复 Andy Yin1:

hi, Andy,

非常感谢您的回答!

关于您说的我解释一下:

复用结果输出时正确的,因为我将这个结果直接进行软件加扰和调制是OK的!结果如下:

0x010001010x000101000x000001010x010000010x000101000x000000010x010100000x000100010x010101010x000100010x010100000x010101000x000100010x010101000x010100010x010000010x010101010x00000101

另外我的MOD的配置如下:

pPureModHdrCfg->moduleId = BcpSubModuleId_MOD;

pPureModHdrCfg->mode = 1; pPureModHdrCfg->swapIQOutput = EBcpSwapIQ_Disabled; pPureModHdrCfg->localHdrLength = 4; pPureModHdrCfg->modeType = EBcpModType_QPSK; pPureModHdrCfg->uvaValue = 0;

pPureModHdrCfg->enScr = 1; pPureModHdrCfg->rmuxLength = 0; pPureModHdrCfg->indexTableB = 0; pPureModHdrCfg->cmuxLength = 0; pPureModHdrCfg->qFormat = 0; pPureModHdrCfg->cqiLength = 0; pPureModHdrCfg->riLength = 0; pPureModHdrCfg->ackLength = 0; pPureModHdrCfg->cinitP2Value = cinit; pPureModHdrCfg->splitMode = 0;

然后我的输出有一个规律那就是,如果速率匹配之后的结果输入后进行加扰,加扰公式是由(c(i)+b(i))mod2,加扰后的经过MATLAB反推回去发现我的b(i)竟然一直为0,加扰全部是采用c(i)实现的,我的cinit为x02083.

所以我们现在怀疑MOD模块对数据是否有特殊要求呢?

Andy Yin1:

回复 guang lin:

uvaValue配成0当然调制结果全是0了,uvaValue这个值是调制幅度定标值,每个调制符号都会乘上这个幅度值,应根据实际应用功率定标配置。

guang lin:

回复 Andy Yin1:

Hi Andy,

可是我的调制输出时选择了硬调制压缩输出,也就是我仅仅需要输出的是星座点的索引,所以这个值在这边为0不影响结果吧?而且星座点索引输出是有值的:

0x050302030x050404040x040304030x050202040x040502050x040504040x030203050x050203020x04020204

谢谢!

Andy Yin1:

回复 guang lin:

输出上述列出的索引结果的话说明mod之后结果不全是0呀,如果结果还是错的看看输入输出数据格式设置

guang lin:

回复 Andy Yin1:

Hi Andy,

是啊,并不全为0 ,但是这个结果反推回去发现是做加扰的时候仅仅利用c(i)来做加扰,而b(i)的值却全为0 ,但是我的b(i)是有值的啊,那个值是:

0x010001010x000101000x000001010x010000010x000101000x000000010x010100000x000100010x010101010x000100010x010100000x010101000x000100010x010101000x010100010x010000010x010101010x00000101

另外在BCP的用户指导书中讲到MOD的输入有三种格式:

The MOD input data is usually provided by the RM submodule. The data is formattedas a stream of 8-bit integers. Each 8-bit integer will represent one of the following:• Soft bit LLR in 2's complement format – used in the soft-decision PIC/SIC uplinkLTE receiver• Soft bit LLR in 2's complement format (extreme values: 0x7f for 1 and 0x81 for 0)- used in the hard-decision PIC/SIC uplink LTE receiver• Bit to be hard modulated format (0x01 for 1 and 0x00 for 0) – used in thedownlink LTE or WiMAX transmitter

可是并没有看到任何寄存器指示这个输入格式是选择哪种?是不是BCP里面会自动识别?如果自动识别,为何不能识别我的RM模块输出的结果?

谢谢您的解答哈!

Andy Yin1:

回复 guang lin:

建议你先修改uval的值为非0试试,我怀疑是这个值导致的,因为即使是由于工作在大端模式下TM flow table中endian in/out format不匹配的话也不应该是你推导出的原始bit全0.

guang lin:

回复 Andy Yin1:

Hi Andy,

这个值不为0 的情况也尝试过了,具体修改为:

if(m_BcpParams.modulation == 1 || m_BcpParams.modulation == 2) // BPSK pPureModHdrCfg->uvaValue = (m_BcpParams.linAmpl * 23170 + 0x4000) >> 15; else if(m_BcpParams.modulation == 4) //16 QAM pPureModHdrCfg->uvaValue = (m_BcpParams.linAmpl * 10362 + 0x4000) >> 15; else if(m_BcpParams.modulation == 6) //64 QAM pPureModHdrCfg->uvaValue = (m_BcpParams.linAmpl * 5056 + 0x4000) >> 15; else //256 QAM pPureModHdrCfg->uvaValue = (m_BcpParams.linAmpl * 2513 + 0x4000) >> 15;

但是结果还是一样的。因为RM的输出结果是BCP输出的,我们没有做任何操作就直接输入BCP,可是BCP

不识别这些数据,后来我们尝试直接写输入值,全为FF或者8F或者7F好像有点效果,但是输出的值还是和自己预期的对应不上,

所以目前就不清楚BCP期望输入的值是什么,有何规律?

谢谢您的解答!

赞(0)
未经允许不得转载:TI中文支持网 » 利用BCP实现PDCCH
分享到: 更多 (0)