Power function in vhdl

user1673892 picture user1673892 · Apr 28, 2013 · Viewed 21.7k times · Source

I want to make power function using vhdl where the power is floating number and the number is integer (will be always "2").

2^ some floating number.

I use ieee library and (fixed_float_types.all, fixed_pkg.all, and float_pkg.all).

I thought of calculating all the possible outputs and save them in ROM, but i don't know the ranges of the power.

How to implement this function and if there is any implemented function like this where to find it?

thanks

Answer

user_1818839 picture user_1818839 · Apr 29, 2013

For simulation, you will find suitable power functions in the IEEE.math_real library

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

This is probably not synthesisable. If I needed a similar operation for synthesis, I would use a lookup table of values, slopes and second derivatives, and a quadratic interpolator. I have used this approach for reciprocal and square root functions to single precision accuracy; 2**n over a reasonable range of n is smooth enough that the same approach should work.