首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >定点MATLAB DSP算法

定点MATLAB DSP算法
EN

Stack Overflow用户
提问于 2011-06-13 15:08:36
回答 2查看 2.6K关注 0票数 4

我有一个关于在MATLAB中为德州仪器TMS320C64xx数字信号处理器编写算法的问题:

我有一个工作草率的实现,我的过滤器在MATLAB。我的目标是使用MATLAB嵌入式编码器将该算法转换为C,然后将其导入并加载到DSP上。

为了做到这一点,我知道我需要对我的MATLAB代码做一些事情。例如,我需要为矩阵预先分配空间,这样它就知道要使它们的大小(除非我想要为可变大小的数据而烦恼)。所有这些把MATLAB代码转换成C‘’ish代码,使MATLAB编码器能够或多或少地将它转换成代码。但是,我不知道如何确保我的数据类型(例如,我的过滤器的系数)是不动点,而不是浮点,这样MATLAB嵌入式编码器将把我的代码转换成C,它只涉及定点数据类型。

所以我想我的主要问题是:

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

( 2)是否有办法确保MATLAB嵌入式编码器不创建浮点数据类型?

3)是否需要使用MATLAB不动点工具箱?

谢谢大家,如果还需要更多的信息来回答我的问题,请告诉我。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-17 21:00:33

  1. 您可以使用浮点数据类型,但是,正如前面的答案所指出的,DSP将模拟浮点数,执行速度将慢得多。对于某些数值操作来说,这种类型的执行是可以的,其中a)您需要浮点数的精度( b)和/或转换到定点通常是一种痛苦(例如平方根)或不总是可行的,c)和/或这些操作不会发生在您的程序中经常占用大部分CPU周期。
  2. 是的。在MATLAB配置设置对话框的界面窗格下有一个复选框,上面写着“只支持纯整数”。检查这将确保生成的代码中没有任何浮点数据类型。但是,您首先需要确保代码中只使用整数/定点数据类型。这个选项只是确保不会产生浮点数-它不会自动从浮点MATLAB代码生成一个定点或整数版本的代码。
  3. 要真正创建一个定点C代码,首先必须将浮点MATLAB代码转换为定点代码。您需要一个固定点工具箱,让您将变量指定为FI对象,并使用FIMATH设置定义定点操作规则。一旦为所有变量和操作定义了16/32位定点数据类型,就可以对其进行模拟、分析结果,并对其进行迭代以调整设置,以尽量减少溢出和舍入错误。然后,您可以生成一个真正的整数C代码,它的行为就像(或非常接近)您的定点MATLAB行为。您可能看到的不动点MATLAB代码和定点C代码之间的任何差异主要是由目标编译器引入的。

有关此主题的录制的webinar的以下链接应提供关于使用固定点工具箱:http://www.mathworks.com/wbnr38838的过程的良好介绍。

HTH。

票数 3
EN

Stack Overflow用户

发布于 2011-06-13 17:03:51

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

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

C64xx数字信号处理器还可以实现16位定点和32×16位混合定点。您使用的数据类型越小,结果代码的运行速度就越快。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6332292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档