Xilinx MicroBlaze浮点兼容性

时间:2014-07-02 06:50:56

标签: c gcc floating-point fpga xilinx

我有一个' c'针对MicroBlaze CPU的代码 当我在Eclipse + GCC或Visual Studio中将代码调试为c程序时,我得到了我想要的结果 然而,当我跑到目标上时,结果是不同的。

仅在浮点运算(乘法和除法)上发生。

如何使其以完全浮点精度工作?

是否有特殊的GCC标志?

P.S。
MicroBlaze的配置与所有启用浮点运算的硬件配合使用。

2 个答案:

答案 0 :(得分:1)

我对MicroBlaze不是很有经验,但the Wikipedia page表示:

  

此外,可以选择性地添加/删除很少使用但在硬件中实现更昂贵的关键处理器指令(即乘法,除法和浮点运算。)

强调我的。

因此,请确保您的特定MicroBlaze实际上支持浮点运算,否则我认为您的结果将非常随机。

还要确保您的编译器工具链生成正确的指令,有时是嵌入式开发支持软件模拟浮点的工具链。通过反汇编最终代码并了解如何实现浮点运算,这应该是微不足道的。

答案 1 :(得分:1)

MicroBlaze硬件浮点支持IEEE754,MicroBlaze参考指南中列出了一些例外情况。

浮点在所有计算机上并非100%相同。 它取决于执行操作时的实际精度(硬件在执行单精度操作时可以使用扩展精度),它还取决于舍入模式的配置(IEEE定义了四种不同的舍入模式)。

MicroBlaze不支持非规范化浮点(它们将被视为零)。 然而,正常编码应避免非规范化值,因为它们的精度会降低。

你看到了什么样的差异?

GöranBilski