ceil and floor

Z

zlotawy

Guest
Hello,

there are three constants:

constant one : Natural := 36;
constant two : Natural := 14;
constant three: Natural := one/two;


After synthesise three equels 2.

BEcause 36/14 is more than 2 I have question, how to get this value?

Thanks
zlotawy
 
Użytkownik "zlotawy" <spawnek@wp.NO_SPAM.pl> napisał w wiadomości
news:fcggup$fp6$1@inews.gazeta.pl...

For me

36/14 = 3 :)
36/12 = 3
36/18 = 2
36/35 = 2

zlotawy
 
zlotawy wrote:
Hello,

there are three constants:

constant one : Natural := 36;
constant two : Natural := 14;
constant three: Natural := one/two;


After synthesise three equels 2.

BEcause 36/14 is more than 2 I have question, how to get this value?
It just takes the integer value. In the "math_real" package you will
find "ceil" and "floor" functions with take in REAL numbers and return
real numbers (which are the integer values).

If you are trying to synthesize a number that is less than 1, I would
recommend that you try a fixed point number.
 
Uzytkownik "David Bishop" <dbishop@vhdl.org> napisal w wiadomosci
news:46ebdfc0$0$32511$4c368faf@roadrunner.com...


hmm.. thanks but i can not use it.. :(

library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.MATH_REAL.ALL;
package PKG is
constant one: Integer := ceil(7/ 2);
end PKG_SRAM;



And i receive error: "ceil can not have such operands in this context.". Can
I not generateconstatnt by ceil function?


Thanks,
zlotawy
 
"zlotawy" <spawnek@wp.NO_SPAM.pl> wrote in message
news:fcgrc2$mkn$1@inews.gazeta.pl...
Uzytkownik "David Bishop" <dbishop@vhdl.org> napisal w wiadomosci
news:46ebdfc0$0$32511$4c368faf@roadrunner.com...


hmm.. thanks but i can not use it.. :(

library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.MATH_REAL.ALL;
package PKG is
constant one: Integer := ceil(7/ 2);
end PKG_SRAM;



And i receive error: "ceil can not have such operands in this context.".
Can I not generateconstatnt by ceil function?

Yes, you can. The errors you're getting are because the data types that you
are using do not have a 'ceil' function defined for it. The function
declaration for 'ceil' in the ieee.math_real package.

function CEIL (X : real ) return real;

In ieee.math_real ceil takes a 'real' as the input parameter and returns a
real type. Since you'd like to use integers you simply need to cast them
appropriately.

The correct way for your example would be
constant one: Integer := natural(ceil(real(7)/real(2)));
or equivalently...
constant one: Integer := natural(ceil(7.0/2.0));

KJ
 

Welcome to EDABoard.com

Sponsor

Back
Top