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.
情况一: int16 a,b;int32 c,d即四个整型变量,范围不同
问题:a*b和 a*c和c*d指令周期分别是多少?
情况二:int16 m;int32 n,float k分别是三种变量
问题:m*k和n*k指令周期分别是多少?
1、运行在ram中的话一个指令周期可以执行一个32位*32位的乘法。
2、定点芯片执行浮点运算需要调用IQmath库,对应的执行时间可以参考文档:file:///C:/ti/c2000/C2000Ware_4_01_00_00/libraries/math/IQmath/c28/docs/IQmath_Quickstart.pdf
4.3. C28x IQmath Library Benchmarks
其中IQNmpyIQX的计算大概需要7个周期
此外我看了浮点数使用IQ的时候先乘以一个长整型数据后再参与运算最后再转换为浮点数,难道整型数据直接与浮点数相乘的执行时间比IQ那样操作还长?
#define _IQ28(A) (long) ((A) * 268435456.0L)
我看了浮点数使用IQ的时候先乘以一个长整型数据后再参与运算最后再转换为浮点数,难道整型数据直接与浮点数相乘的执行时间比IQ那样操作还长?
#define _IQ28(A) (long) ((A) * 268435456.0L) 是不是调用芯片本身存储的数才会导致运算速度提升?谢谢!
你好,关于定点芯片做浮点运算这个问题我也是跟其他工程师确认了一下,收到的回复是这样的:
在没有硬件加速的情况下唯一的另一种方法是使用基于c的浮点内联函数,但是这将比IQMath慢很多。
比如我现在我就是单纯地一个整数乘以浮点数然后赋值给一个整数,这个时候使用IQ格式也比单纯的使用基于c的浮点内联函数操作快?
uint16 a,b;float c
情况一
a=IQtoF(IQ(b*c));
情况二
a=b* IQ(c) >> GLOBAL_Q;
情况三
a=b*c;
上面三种情况哪种运算速度快?
我真的建议你自己前往英文论坛咨询一下,没这么深入研究过IQmath,中文论坛这边无非也就是将国外工程师的答复翻译给你。翻译了这么久你也没觉得问题解决,我们也觉得在做无用的翻译工作。不如你自己去问一下,即使英文没那么好,但起码你们能更直接地交流。何必在这里纠结呢?
哎,我这边也没办法解决,现在国内的C2000工程师本来就少,你看中文论坛除了我和另外一名新同事还有别的工程师回复吗。。。
然后我们都是驻在上海的,我们差不多已经在家办公快2个月了,根本没机会接触板子。
所以现在唯一的办法就是升级英文论坛。。。