# Forum: FPGA, VHDL & Verilog Fraction sfixed

 Author: Jan (Guest) Posted on: 2010-05-26 11:30

Rate this post
 0 ▲ useful ▼ not useful
Dear All,

In our calculations we have a sfilxed value:

SIGNAL Bin : sfixed(9 DOWNTO -9); -- ( = 2.7 )

Now I want to have the fractional part as integer (=7) in a signal and
the "integer" part (=2) in another signal.

How can I do this? Is there an example?

I'm not succeeding even when using the round_style or overflow_style
options.

With kind regards,

 Author: Na sowas (Guest) Posted on: 2010-05-26 13:03

Rate this post
 0 ▲ useful ▼ not useful
> Now I want to have the fractional part as integer (=7) in a signal
Thats not the way the type sfixed ist working!!

The bits are weighted:
 sfixed(9 DOWNTO -9) : 9 8 7 6 5 4 3 2 1 0 -1 -2 -3 -4 -5 -6 -7 -8 -9 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 
And now 2.7 is
  9 8 7 6 5 4 3 2 1 0 -1 -2 -3 -4 -5 -6 -7 -8 -9 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 = 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 1 1 0 
So you can easily see: the first 10 bits are simply:
0000000010 = 2

But the fraction is far far away from anything looking like 7:
101100110
In fact its not .7 but .69916875, the nearest representable number :-o

 Author: Jan (Guest) Posted on: 2010-05-26 13:55

Rate this post
 0 ▲ useful ▼ not useful
Dear Na sowas,

Thank you very much for your quick reaction.

That's just my problem. I need the 7 (or 69916875) in a signal but I
don't know how to extract it from the sfixed.

I hope you can tell me how.

 Author: Na sowas (Guest) Posted on: 2010-05-26 14:07

Rate this post
 0 ▲ useful ▼ not useful
Lets get a step further:
Given the number 2.7 you want as result the numbers 2 and 7?
What do you want for 2.76? Or for 2.765 or 2.7654?

 Author: Jan (Guest) Posted on: 2010-05-26 14:27

Rate this post
 0 ▲ useful ▼ not useful
> Given the number 2.7 you want as result the numbers 2 and 7?

Yes, that's right.

> What do you want for 2.76? Or for 2.765 or 2.7654?

A fixed number of digits lets say 3 (rounded):

for example in this case (skipping the signal "2"):

2.7     ->  "700"
2.76    ->  "760"
2.765   ->  "765"
2.7654  ->  "765"

• $formula (LaTeX syntax)$