Posted on:

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,
Posted on:

> 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
Posted on:

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.
Posted on:

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?
Posted on:

> 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"