2011-02-12 60 views
1

我想将浮点数传递给整数。基本上我有一个浮点数在1和0之间,有三位小数,我想把它传递给一个整数,就好像我乘以1000.我怀疑应该有一个更优化的方法来做到这一点比使用算术多操作x1000。我正在寻找一段代码。感谢所有可能的代码,参考文献,文章或评论。VHDL:如何将浮点数转换为整数

+0

您是否在行为代码中使用float(real)进行仿真或RTL代码应该进入硬件? – Philippe 2011-02-12 08:49:05

回答

0

如果您有一个不是常数的二进制浮点数,则无法实际执行乘法和积分转换,因此无法将其转换为整数[0,1000]

尝试在纸上做二进制运算。基10的缩放不适用于移位或任何特殊的东西......它只是一个通用的缩放操作。

由于数字在范围[0,1]中,请考虑以固定点计算所有算术,可能使用1/1024作为单位,或甚至以1/1000为单位的定点小数。

如果您需要更接近零的精度,则只应使用浮点数学运算。

3

如果你想这对于模拟只有你可以这样做:

i <= integer(r * 1000); 

如果你想合成硬件,你可以考虑电源的两到使逻辑更紧凑。

i <= integer(r * 1024); 

但@Potatoswatter有一个有效的观点:你应该考虑你是否真的需要一个实际的(浮点数)。