我有一个关于在MATLAB中为Texas Instruments TMS320C64xx DSP编码算法的问题:

我在MATLAB中对过滤器进行了草率的实现。我的目标是使用MATLAB Embedded Coder将该算法转换为C,然后将其导入到Code Composer Studio中并加载到DSP中。

要做到这一点,我知道我的MATLAB代码需要做某些事情。例如,我需要为矩阵预先分配空间,以便它知道要使它们变大的大小(除非我想大惊小怪地处理可变大小的数据)。将MATLAB代码转换为C'ish代码的所有内容,以便MATLAB编码器可以或多或少地将其转换。但是,我不知道如何确保我的数据类型(例如滤波器的系数)是定点而不是浮点的,因此MATLAB Embedded Coder会将我的代码转换为仅涉及定点数据类型的C. / p>

所以我想我的总体问题是:

1)如果C64xx被指定为32位定点DSP,这意味着如果我尝试使用float数据类型,针对它的编译器将抛出错误?

2)有没有办法确保MATLAB Embedded Coder不创建浮点数据类型?

3)我需要使用MATLAB定点工具箱吗?

谢谢大家,让我知道是否还有其他信息可以回答我的问题。

有帮助吗?

解决方案

  1. 您可以使用浮点数据类型,但是,正如前面的答案所指出的那样,DSP将模拟浮点,执行速度将大大降低。对于某些数值运算,这种执行类型是可行的,其中 a)您需要浮子的精度 b)和/或转换为定点通常是一种痛苦(例如,平方根)或总是不可行的, c)和/或这些操作不会经常在程序中占用大部分CPU周期。

  2. 是的。在“ MATLAB Coder配置设置”对话框的“接口”窗格下,有一个复选框,显示“仅支持纯整数”。选中此选项可确保在生成的代码中没有任何浮点数据类型。但是,首先需要确保在代码中仅使用整数/定点数据类型。此选项只是确保不生成浮点数-它不会自动从您的浮点MATLAB代码生成定点或整数版本的代码。

  3. 要真正创建定点C代码,您首先必须将您的浮点MATLAB代码转换为定点C代码。您将需要使用定点工具箱,以便将变量指定为FI对象,并使用FIMATH设置定义定点运算规则。为所有变量和操作定义16/32位定点数据类型后,就可以对其进行仿真,分析结果并对其进行迭代以调整设置,以最大程度地减少溢出和舍入错误。然后,您可以生成一个仅整数的C代码,其行为与(或非常接近)定点MATLAB行为一样。定点MATLAB代码和定点C代码之间可能会看到任何差异,这主要是由目标编译器引入的。

    以下有关该主题的在线讲座的链接应该很好地介绍了使用定点工具箱的过程: http://www.mathworks.com/wbnr38838

    HTH。

其他提示

我只能回答您的第一个问题:

C64xx是32位定点DSP,但是如果您使用浮点,编译器将不会抱怨。生成的代码可以很好地运行,但会慢很多,因为将模拟浮点操作。

C64xx DSP还可以执行16位定点和混合32x16位定点。使用的数据类型越小,生成的代码将运行得越快。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top