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.

[参考译文] TMS320VC5509A:DSP 库 DSPLIB 版本2.4的 C55x 实现中的相关函数出错。

Guru**** 2756805 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/982355/tms320vc5509a-error-in-the-correlation-function-in-the-c55x-implementation-of-the-dsp-library-dsplib-version-2-4

器件型号:TMS320VC5509A

我认为在 DSP 库 DSPLIB 版本2.4的 C55x 实现中、相关函数存在错误。

您可以使用随安装程序分发的示例代码重新创建错误。

将 t8.h 的内容替换为以下内容。

#define NA 9.
#define NB 9 // NB <= nA
#define FNAME"T8"(定义 FNAME "T8")
#define MAXROR 10 //最大绝对误差
数据错误[2]={150、15000};
数据 A[NA]={-3427、1375、-8326、-7231、-4831、1241、-315、9878、-5857};
数据 b[NB]={-467、579、6394、-6707、8947、9223、-1063、5844、9772};
数据 rtest[nA+NB-1]={-1022、-201、-1126、-5052、-577、588、-3564、1065、-924、-4589、3389、1373、-3592、103、-964、-244、83};

分布式 t8.h 与上述的唯一区别是在 A[NA]数组之前添加了 ERR[2]数组。

假设在 craw_T.c 中调用'corr(b、a、r、nA、nb、raw)'时 CSR 寄存器值为1 这将在'r'数组中产生以下结果。

错误位于 craw.asm 中的第209行。 "RPTADD CSR、#2"错误地假设 CSR 寄存器为零。 在我运行的分布式示例代码中、跳转到 corr_raw 时 CSR 寄存器值为1。 这将导致第210行中的 MAC 调用索引'A'数组以外的一个。 在 t8.h 中的"A"数组之前添加'err'数组可确保在关联计算中包含15000的错误样本。 较大的错误值将导致测试功能失败。

我可以通过在 craw_T.C.中调用 cr 之前插入以下代码来修复此错误

asm (“MOV #0,CSR”);
(b、a、r、nA、nB、raw);

TI 能否确认上述内容是否正确?  

清除 CSR 是否是正确的修复?  

DSPLIB 中是否有其他调用会做出相同的假设?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    DSPLIB 的最新版本为3.0、可从 以下位置下载:https://software-dl.ti.com/libs/c55_dsplib/latest/index_FDS.html。 我看不到提到的有关 craw 的任何错误修复与您所描述的类似。 您能否查看您是否认为此新版本中存在此问题?

    此致、
    弗兰克

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我从3.0版本开始、但在链接时遇到以下错误。

    "C:/ti/c55_dsplib_3.00/lib/55xdspx_r3.lib " 指定"C55x CPU Rev 3.x"、它与 之前文件或命令行中指定的"C55x CPU Rev 2.x"不兼容

    我假设此错误是正确的、 并且新版本3.0库不完全向后兼容。 此外、TI 将库从55xdspx.lib 重命名为 55xdspx_R3.lib 这一事实也表明了兼容性问题。

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Gary、

    我检查了 DSPLIB 3.0的安装内容、似乎是正确的、即 DSPLIB 3.0仅适用于修订版3内核器件(例如 C55x5、C5517)。 下载页面上未明确说明这一点。

    DSPLIB 2.4上次更新时间是2007年、因此很难为其提供支持。 我可以快速检查我是否观察到类似的行为、但我可能无法确认您提出的修复方案。 由于您具有 DSPLIB 源代码、因此最终需要由您来验证此错误修复是否正确。

    此致、
    弗兰克

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如果您可以确认 DSPLIB 3.0中是否存在错误、这将非常有用。 如果不是、我可以检查差异并将其用作修补我的版本的指南。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Gary、

    我在 t9.h 中运行了 craw()测试,但没有进行任何修改。  

    我在 main()和调用 craw()时注意到 csr=1。

    如果我使用 csr=1调用函数、则测试失败、结果如下:

    如果我在函数调用之前(通过 CCS/JTAG)强制 CSR = 0、则测试通过、结果如下:

    如果您确信这是有效的错误修复、我建议您只需在 craw.asm 中的 craw()函数开始时添加一个 CSR clear。

    此致、
    弗兰克

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    弗兰克、

    感谢您的所有帮助、我们不胜感激。

    为了说明您的测试是使用 DSPLib 3.0版完成的、对吧?

    Gary

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Gary、

    是的、这是 C5535上的 DSPLIB 3.0。

    此致、
    弗兰克