ceil and floor

Z

zlotawy

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
 
D

David Bishop

zlotawy said:
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.
 
Z

zlotawy

Uzytkownik "David Bishop" <[email protected]> napisal w wiadomosci


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
 
K

KJ

zlotawy said:
Uzytkownik "David Bishop" <[email protected]> napisal w wiadomosci


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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top