Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
vhdl中的幂函数_Vhdl_Modelsim - Fatal编程技术网

vhdl中的幂函数

vhdl中的幂函数,vhdl,modelsim,Vhdl,Modelsim,我想使用vhdl实现幂函数,其中幂是浮点数,而数是整数(将始终为“2”) 2^一些浮点数 我使用ieee库和(fixed_float_types.all、fixed_pkg.all和float_pkg.all) 我想计算所有可能的输出并保存在ROM中,但我不知道功率的范围 如何实现这个函数,如果有任何像这样的函数,在哪里可以找到它 感谢您的模拟,您将在IEEE.math_real library中找到合适的幂函数 library IEEE; use IEEE.math_real.all; ...

我想使用vhdl实现幂函数,其中幂是浮点数,而数是整数(将始终为“2”)

2^一些浮点数

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

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

如何实现这个函数,如果有任何像这样的函数,在哪里可以找到它


感谢您的模拟,您将在IEEE.math_real library中找到合适的幂函数

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

X如果一个近似值可以,我想我会使用指数的整数部分来确定2的整数幂,就像如果浮点数是
111.0111010111
你知道2部分的整数幂是
0b10000000
。然后,我将基于分数位执行一个从左到右的条件加法,因此对于
111.0111010111
您知道需要将机具
0b10000000
添加(0*(1/2)+1*(1/4)+1*(1/8)+0*(1/16)…等等)。1/2、1/4、1/8等是
0b10000000
的右移。这将实现指数运算的整数部分,然后将分数部分近似为整数部分的乘法。

简单地说,二进制的0.1相当于十进制的0.5,这相当于计算平方根。 我一直在研究浮点数,花了大约4-5个小时才弄明白这一点,以最简单和可合成的方式实现幂函数。继续重复平方根,比如对于b“0.01”,你想做双平方根,比如sqrt(sqrt(x)),对于b“0.11”sqrt*双平方根,比如sqrt(x)*sqrt(sqrt(x))等等


这是pow函数的可合成实现…

虽然不可合成,但对于声明内存大小或基于大型阵列的组件非常有用。