This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

c6670硬件加速器在平台上回环出现的错误

Hi,我目前在平台上主要做TCP3e,调制,IFFT,FFT,解调和TCP3d回环,在TCP3d出来的数据始终有几个比特与TCP3e的输入对不上,经过仔细检查,发现问题可能在TCP3e_tables.c与TCP3d_itg.c中的交织表不对应造成的。在tcp3e中对配置参数frameInd配置不同,在tcp3的输出结果中,会在不同地方出现几个比特错误,不会全部出错。即3e与3d的frameInd不一样时,也只是几个比特在不同位置出现错误,这里3e输入与3d输出为什么不会出现全部错误呢?后来我把tcp3e与tcp3d的frameInd参数都配为一样(其中,tcp3d的frameInd是通过blocksize计算得出的),还是有几个比特出错,不知道具体原因是否是它们的交织表不对应造成的?如何修改,请给出具体意见?
配置寄存器内存截图.docx
  • 您好,

    关于交织表说明几点,请参考:

    1. 关于交织表差异:TCP3D和TCP3E的交织表是一样的,只是在TCP3d的交织表支持CBSize到8192,并且对于LTE而言由于TCP3d译码交织器需要输入4个参数,而TCP3e只需2个参数;

    2. 关于交织表配置:TCP3e与TCP3d的的交织表均跟CBSize一一对应,需要根据CBSize计算获得,并且必须配成一样,具体可以参考LTE 36.212关于编码一小节,及TCP3e及TCP3d的user guide交织表配置说明;

    关于测试说明几点,请参考:

    1. 请确认对于同一组输入,只有frameId不一样,TCP3e输出结果完全一样?这点比较怪异。

    2. 关于交织表,请根据你的测试CBSize调用TCP3e及TCP3d的交织表计算函数计算出相应的frameId,两者肯定是要求完全一样的,而不是在那边随便试,同时建议先阅读相关文档了解Turbo编码原理;

    3. 根据你的文档,提醒你的如下参数配置有问题,请根据下面修改后测试。

    504  // cbSet->cbData[cbCnt]->blockSize;    /*Nominal block size,是CBSize,包含CRC*/

    480  // cbSet->cbData[cbCnt]->numInfoBits;  /*Length does not include CRC bits if crcFlag is set,不包含CRC*/

    1    // cbSet->cbData[cbCnt]->crcFlag;

    3. 另外一个重点怀疑的是你的TCP3d是如何配置的,建议重点查一下TCP3d的Beta值计算与配置是否有问题。

    请参考测试,谢谢

  • 你好,

    感谢你上面提出的宝贵意见,下来后我重新做了一些测试和理解。对于上面我的一些问题未能表达清楚表示歉意,现做一些补充说明,并想把我重新理解的知识和你分享一下,请帮我确认一下是否正确。

    1.对于同一组数据,当TCP3E和TCP3D的frameInd不一样时,TCP3D出来的结果是一小部分比特位对应不上,当TCP3E和TCP3D的frameInd一样时也是一小部分比特位对应不上,但不是出现同一位置,对于这个现象我有点疑惑?

    2.对于blocksize、CBSize和numInfoBits三者的关系,当没有CRC时,它们应该是相等的,当有CRC时,blocksize= CBSize= numInfoBits+CRC(24)?我们目前是把cbSet->cbData[cbCnt]->crcFlag设置为0,无CRC。

    3.对于SW0_length参数的设置,除了让它满足条件blocklen<=numMap*128*Sw0Numlen外,还需其它考虑吗?当分别设置为64和128时,结果也不一样,上面附件有结果信息比对。

    4.TCP3E有个参数是mcount的设置,在TCP3D中是否是默认该参数设置为1?

    5.关于TCP3D的Beta值计算,是取其尾比特经解调后映射成6位有效的LLR值进行计算,经检查应该没什么问题。

  • 您好,

    1. mcount是码块数,对于LTE而言配成1即可,在TCP3d中不使用这个参数;

    2. 参考Tcp3d_betaStates的使用计算TCP3d betastate。

    另外在TCP3D中存在可配的参数较多,建议花点时间对TCP3e及TCP3d的配置参数详细了解一下,完全理解参数的含义后再进行配置。

    上述只提到少数参数,很多其他的参数都有可能影响结果,所以方便的话将TCP3e及TCP3d的所有参数整理好发上来比对一下。

  • 你好,

    对目前配置的一些参数已整理到附件的表格中了,请帮我检查一下是否有配置不当之处,谢谢!

  • 您好,

    请问你的工程是在PDK的基础上修改的吧?看了您的参数配置,有一点怀疑,请确认一下TCP3d的EDMA参数配置正确性:

    1. 您的TCP3d的输入EDMA参数的acnt是怎么配置的,TCP3d的输入三个流,每个流长度应该是cbsize+4;

    2. 如果还有问题的话,建议将运行后TCP3d的15个配置寄存器的内存截图,以及TCP3d使用的EDMA的配置内存截图,贴上来分析,因为直接看你的配置,我还不能完全确定TCP3d的配置是否跟我想的一样。

    谢谢。

  • 您好,

    以上参数基本是在PDK基础上修改的,对TCP3d的EDMA参数配置基本很少改动。

    SW0_length=64时,15个寄存器的内存配置情况如下

    SW0_length=128时,15个寄存器的内存配置情况如下

     

  • wenzheng liu 说:

    您好,

    以上参数基本是在PDK基础上修改的,对TCP3d的EDMA参数配置基本很少改动。

    SW0_length=64时,15个寄存器的内存配置情况如下

    SW0_length=128时,15个寄存器的内存配置情况如下

     

     

     

    配置寄存器内存截图.docx
  • 你好,

    我分别进去到内存里面跟踪了15个寄存器的配置情况,IC2、IC3、IC8—IC11为固定配置,和例程配置一样,IC0、IC1、IC12—IC14的配置与blocksize和sw_length有关,IC4—IC7的配置与beta state 有关,即与尾比特和blocksize有关。目前未能找到出错点,请在方便的时候帮我分析一下。谢谢!