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.
Huiyan,
您好!
EDMA的相关参数配置在VCP2 user guider 的4.2章节。
相关代码可以参考下面这个网页中的VCP2的例子:
Huiyan,
如果是大于1000多的帧,请对照VCP2的手册看一下是否在最大帧长范围内(不同K值最大限制也不同)。 如果超过最大长度限制,就需要您用软件参与做分段译码,具体原理类同sliding window方式。
这个例子用的是查询方式判断译码是否结束, 如果用中断方式,是由EDMA传输完成事件来触发的,您可以借鉴其他EDMA中断的例子来做。
Jane 您提供的例子 我看了
可是有几个地方不理解。
1、VcpConfigParms是怎么赋值的?在例程中没有找到赋值的地方,不知道poly,traceBack,numBmFrames等等这些值怎么来的?
2、还有branch_metrics这个的格式怎么也VCP2的用户手册提到的格式不一样呢?
3、您提供的例程是不是没有驱动VCP2硬核?而是用的软核(只调用某些函数来译码?)?
4、VCP2用户手册提到的Tailed TraceBack Mode是指咬尾模式吗?启用这个模式,是不是VCP2核会自动为译码信息的头部添加信息再译码?
谢谢
Jane,
由于我最开始从贵网站下载的VCP和TCP例程是“dsk6455_v2\boards\dsk6455_v2\csl_c6455\example”内的“vcp2_soft_decisions”和“tcp2_standalone_mode”,除了上述几个问题之外。在使用过程中,我还遇到一个很奇怪的问题,有时候程序会死在VCP_statRun和TCP2_statTcpState中,这个时候需要对C6455进行复位才能让VCP和TCP正常工作?请问这是为什么?应该怎么避免?谢谢!!
Huiyan,
您好,下面是我的回复:
1 VcpConfigParms是通过CSL函数VCP2_genParams()来赋值的。 该函数的源码见附件,里面有poly,traceBack,numBmFrames相关参数赋值。 其中,poly采用了默认值,如果你的多项式与默认值不同,需要在这个函数之后另行修改。
2 branch_metrics的格式应该是按照VCP2的手册要求排列的。
3 VCP2_BER这个工程可以用C 仿真模型(通过#ifdef VCP2_C_MODEL 控制),默认是用硬核译码。
4 Tailed TraceBack Mode是指一帧数据都在同一个回溯判决内,不是咬尾模式。 如果您需要做咬尾,需要手动在头尾添加信息。
5 如果程序死在VCP_statRun中,应该是VCP处于running状态没有结束。 有可能是与VCP2配合的EDMA传输存在问题。 建议每次load程序之前,都用仿真器把DSP 复位一下。
1、例子VCP2BER.zip中ConvolutionalEncode函数的编码方式是什么?这个编码和FEC编码有什么本质上的区别?
目前的情况是,我的编码信息通过VCP2BER.zip这个例程来译码,结果不正确,后来才发现我的编码和VCP2BER.zip中ConvolutionalEncode中的编码不同。。
2、同时我的编码后的信息通过“从贵网站下载的例程dsk6455_v2\boards\dsk6455_v2\csl_c6455\example\vcp2”是可以正确译码的,只是在使用这个例程时,我遇到一个棘手的问题:怎么能知道译码结束了?感觉这个例程的配置可能不全面,可是我又不知道怎么去配置?“http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/p/52474/119725.aspx#119725”这是我发在贵网站的针对这个问题的一个帖子。
Jane Lu,
您好!
我在测试您给的链接中的例子时发现VCP2 channel density test这个文件中,测试VCP2译码时间时用了273行这句话:printf("DecodingTime:%8ldns ", CycleCounter/VCP2_CHANNELS_PER_TIME);
其中 CycleCounter为实际调用VCP2执行时间,VCP2_CHANNELS_PER_TIME值为16,我的理解是每次可以使用的channel数目,
以我看来,我们的译码时间就是 CycleCounter,为什么在输出时要除以16,而不以实际花费时间为准呢。。
希望获得您的解答,谢谢。