VHDL:如何将浮点数转换为整数

时间:2011-02-12 07:48:32

标签: floating-point integer vhdl

我想将浮点数传递给整数。基本上我有一个介于1和0之间的浮点数,有三个小数位,我想把它传递给一个整数,好像我把它乘以1000.我怀疑应该有一个比使用算术更优化的方法多操作x1000。我最好找一块代码。感谢所有可能的代码,参考,文章或评论。

2 个答案:

答案 0 :(得分:3)

如果您想要模拟,只需执行以下操作:

i <= integer(r * 1000);

如果你想合成到硬件,你可能会考虑使用2的幂来使逻辑更紧凑。

i <= integer(r * 1024);

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

答案 1 :(得分:0)

如果您的二进制浮点数不是常数,则无法在[0,1000]中将其转换为整数,而无需实际执行乘法和积分转换。

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

由于数字在[0,1]范围内,考虑在固定点进行所有算术,可能使用1/1024作为单位,或者甚至以1/1000为单位的定点十进制。

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