cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Contributor
Contributor
4,107 Views
Registered: ‎03-19-2015

get ap_fixed decimal value

Jump to solution

Hello,

how can I get decimal value from ap_fixed?

for example I have:

ap_ufixed<8, 4> my_ufixed;

and I want to save it to two separate variables:

ap_uint<4> my_uint;

ap_uint<4> my_dec;

I know I can do:

my_uint = my_ufixed.to_int()

but how can I get decimal value?

I'm sure there is an easy solution, but I somehow cannot find it.

0 Kudos
1 Solution

Accepted Solutions
Highlighted
Explorer
Explorer
6,787 Views
Registered: ‎07-13-2015

Re: get ap_fixed decimal value

Jump to solution

You should be able to do this:

 

ap_uint<4> my_dec = my_ufixed.range(3,0);

Obviously care must be taken when dealing with signed fixed-point; you'll have to decide how you want to handle that if you ever do need to use it.

 

If you want the actual decimal value (rather than the decimal value shifted up to become an integer) then the code would be:

ap_ufixed<4,0> my_dec;
my_dec.range() = my_ufixed.range(3,0);

For an input of 3.0625 (binary 0011.0001) the first approach would give you a value of 1, whereas the second would give a value of 0.0625.

View solution in original post

0 Kudos
1 Reply
Highlighted
Explorer
Explorer
6,788 Views
Registered: ‎07-13-2015

Re: get ap_fixed decimal value

Jump to solution

You should be able to do this:

 

ap_uint<4> my_dec = my_ufixed.range(3,0);

Obviously care must be taken when dealing with signed fixed-point; you'll have to decide how you want to handle that if you ever do need to use it.

 

If you want the actual decimal value (rather than the decimal value shifted up to become an integer) then the code would be:

ap_ufixed<4,0> my_dec;
my_dec.range() = my_ufixed.range(3,0);

For an input of 3.0625 (binary 0011.0001) the first approach would give you a value of 1, whereas the second would give a value of 0.0625.

View solution in original post

0 Kudos