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.

请教关于TMS320C6455内TCP2协处理器设置问题

Other Parts Discussed in Thread: TMS320C6455

您好,我目前在使用贵公司TMS320C6455自带的TCP2协处理器,目前是基于贵网站提供的例程“tcp2_standalone_mode”上进行相应的修改已适用我的需求。

我使用的是SA模式,1/2编码率,待编码信息270bits,添加CRC校验位后为294bits。编码后有588个符号和12个卷尾符号。符合3GPP2 CDMA2000。
最棘手的问题:例程tcp2_standalone_mode内TCP2_statTcpState函数返回的值0xA的含义是什么?怎么计算得到?看函数说明这个好像说的是返回一种状态?目前在这个例程中,译码帧长为40,如果非40bits,我不知道应该对那个配置进行修改方能让程序正确译码?

其他问题:
1、CRC校验的pass和迭代次数这两个参数怎么传出来?由于我是调试的时候想清楚的指导这两个量,是不是可以不通过EDMA传出来,而在仿真器中看?如果通过edma传出来,又是怎么传?目前我调用了计算迭代次数的函数,好像不好使。同时numCrcPass设置为1,是不是就表示只要crc通过了,就结束译码的迭代次数?
2、spru973.pdf这个文档是不是有地方打印出错。比如,关于第四章提到的“数据输入格式”?

其中附件是上述提到的例程和pdf文档。
谢谢!
tcp2.zip
  • 目前关于CRC和迭代次数,我也理解得差不多 但是关于帧长这个最棘手的问题依然没有眉目。。
  • 1. TCP2_statTcpState是读TCPSTATE状态寄存器,读取状态值来确定TCP是否译码完成;这个函数在csl_tcp2Aux.h中有源码查看;

    在这里不推荐都状态机的方式,因为此时可能译码结果还没有通过EDMA搬移到外部实际memory,推荐配置TCPRX EDMA在搬移完成后产生一个中断事件的方式来通知外部处理;

    2. Tcp2_standalone_mode_example.c line181有明确的参数传递帧长,configBase.frameLen     = frameLen; 所以只需要修改tcpExampleData.c中的frameLength即可;

    3. CRCITERPASS: configBase.numCrcPass   = 0; /* default value, 配置为0、1均对应1次迭代CRC正确即推出 */

    迭代次数:configBase.maxIter      = MAX_TCP_ITERATIONS;configBase.minIter      = MIN_TCP_ITERATIONS;

    4 数据手册在http://www.ti.com/product/tms320c6455 (user guide)下载最新的版本为准,如有问题请详细列出讨论。

    关于上述问题,都可以在TCP2例程的源码中找到,例程中调用的函数TCP2_statTcpState等都是csl函数,下载安装mcsdk后,源码分布在pdk_c64x_1_00_00_06\components当中相应device src目录下inc及src的文件当中,TCP2的例程包含在pdk_c64x_1_00_00_06\packages\ti\csl\c6457\csl_c6457\example\tcp2

    mcsdk:http://software-dl.ti.com/sdoemb/sdoemb_public_sw/bios_mcsdk/01_00_00_08/index_FDS.html

    关于TCP2具体的编程及寄存器定义请参考TCP2 user guide相关章节。

  • 谢谢您的回复。可是为什么frameLength我已经进行相应修改,可是译码结果全是0?? 还有您说的“一般不推荐读状态机的方式”而是配置“TCPRX_EDMA”。可是发现从您推荐的链接下载的例程好像是读状态机的方式,想问问如果用TCPRX_EDMA这个方式,应该怎么配置?谢谢
  • 目前我对非40长度的进行编码,再调用TCP2核来译码的话,程序总是在 “while(0XA!=TCP2_statTcpState());出不来。陷入死循环。。。
  • 1、最后发现例程中对EDMA的配置参数用的都是根据当然数据信息的常数值。。。。通过修改,上面的N多问题都一一搞定了。。。总结一下还是pdf文档看得不仔细。

    2、但是目前还是有一个问题,就是CRC校验,为什么我设置了configBase.crcLen       = 6;    configBase.crcPoly      = 0x00000023;这个参数是从参考文档找的,这个对应的CRC生成多项式是x6+x2+x1+1。。。可是我调用了函数TCP2_statCrc,根据上面的CRC生成多项式进步CRC编码和turbo编码,再通过这个tcp2核来译码。译码结果和信息是相同的,但是这个TCP2_statCrc就是不返回1,,是不是我对CRC的上面两个参数配置不对?还是对EDMA的配置还不到位?

    3、觉得pfd文档有疑问的地方:

    我第一次说的pdf文档感觉有问题的地方是这个,感觉应该是 SP4 SP3 SP2 SP1 SP0.。。。