Hi
your output is integer so whatever the real data you get the decimal point digits will be truncated to integer
so you have to find the nearest integer number to the real one
for instance if we have the following operation:
out = num * 0.05;
you can find that 0.05 is nearly 13/256 (0.05078)
so first multiply num by 13 and the division is simply removing the 8 digits from the right the right
note that using integer is the same of std_logic_vector(31 downto 0) which is more flexible
you can try this :
signal num:std_logic_vector(31 downto 0);
signal temp:std_logic_vector(35 downto 0);
signal out1:std_logic_vector(31 downto 0);
num <= x"0000028E"; -- test value 654
temp<=num * x"d"; -- 654 * 13 = 8502
out1 <= "00000000"&temp(31 downto 8);-- 8502 / 256 = 33
this result 33 is near to 654 * 0.05 = 32.7
this what I do to deal with float numbers
did you got it?