vhdl中的电源功能

时间:2013-04-28 19:09:30

标签: vhdl modelsim

我想使用vhdl进行电源功能,其中电源是浮点数,数字是整数(总是“2”)。

2 ^一些浮​​动数字。

我使用ieee库和(fixed_float_types.all,fixed_pkg.all和float_pkg.all)。

我想过计算所有可能的输出并将它们保存在ROM中,但我不知道功率的范围。

如何实现这个功能,如果有任何实现的功能在哪里找到它?

感谢

3 个答案:

答案 0 :(得分:4)

对于模拟,您将在IEEE.math_real库中找到合适的幂函数

library IEEE;
use IEEE.math_real.all;
...
X <= 2 ** Y;
or
X <= 2.0 ** Y;

这可能无法合成。如果我需要类似的合成操作,我会使用值,斜率和二阶导数的查找表,以及二次插值器。我已经将这种方法用于倒数和平方根函数以达到单精度精度;在合理的n范围内,2 ** n足够平滑,相同的方法应该有效。

答案 1 :(得分:1)

如果进行近似,我想我会使用指数的整数部分来确定2的整数次幂,就好像浮点数是111.011010111你知道2部分的整数幂是0b10000000。然后我会根据小数位执行从左到右的条件添加,因此对于111.011010111,您知道需要添加实现0b10000000次(0 *(1/2)+ 1 *(1 / 4)+ 1 *(1/8)+ 0 *(1/16).....等等。 1 / 2,1 / 4,1 / 8等等是0b10000000的右移。这实现了求幂的整数部分,然后将小数部分近似为整数部分的乘法。

答案 2 :(得分:0)

二进制文件中的0.1十分简单,十进制中的0.5等效于0.5,即等于计算平方根。 我一直在研究浮点数,花了大约4到5个小时才知道以最简单,可综合的方式实现幂函数。只需使用重复的平方根,例如对于b“ 0.01”,您要对像sqrt(sqrt(x))做双平方根,对于b“ 0.11” sqrt,对像sqrt(x)* sqrt(sqrt(x), )等等...

这是pow函数的可综合实现...