![]() |
|
|
|
#1 |
|
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 zlotawy |
|
|
|
|
#2 |
|
Posts: n/a
|
Użytkownik "zlotawy" <_SPAM.pl> napisał w wiadomo¶ci news:fcggup$fp6$... For me 36/14 = 3 36/12 = 3 36/18 = 2 36/35 = 2 zlotawy zlotawy |
|
|
|
#3 |
|
Posts: n/a
|
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. David Bishop |
|
|
|
#4 |
|
Posts: n/a
|
Uzytkownik "David Bishop" <> napisal w wiadomosci news:46ebdfc0$0$32511$... 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 |
|
|
|
#5 |
|
Posts: n/a
|
"zlotawy" <_SPAM.pl> wrote in message news:fcgrc2$mkn$... > > Uzytkownik "David Bishop" <> napisal w wiadomosci > news:46ebdfc0$0$32511$... > > > 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 KJ |
|