06-25-2019 01:34 AM
In 2017.2 I could write :
procedure generate_sinewave ( signal wave_out : out std_logic_vector; constant kFREQ_HZ : in real; -- must be > 0.0 constant kGAIN : in real; -- gain 0.0 ... 1.0, with 1.0 = full-scale ) is constant upper_limit : integer := 2**(wave_out'length) / 2; -- min value that can be held in signed vecotr constant lower_limit : integer := (-1 * upper_limit) + 1; -- max value constant amplitude : real := kGAIN * (upper_limit - 1); -- multiply with gain constant two_pi_freq : real := 2 * MATH_PI * kFREQ_HZ; -- constant factor in sine calculation
in 2018.2, when opening the same file, I get an error on the constant 'amplited' and 'two_pi_freq' calculation:
Error: found '0' definitions of operator "*", cannot determine exact overloaded matching definition for "*"
did something change from 2017.2 -> 2018.2?
I could fix this by writing :
onstant amplitude : real := kGAIN * (real(upper_limit - 1));
-> I kinda fixed this myself, but I want to double-check: looks like an explicit conversion has become required in 2018.2 vs 2017.2? Is this correct?
-> where can I find a change log of such things?