我正在尝试添加
time_count_real <= time_count_real + 0.000_000_02 ;
但我遇到了这个错误
cannot synthesize non-constant real objects or values
那我怎样才能添加实数?
答案 0 :(得分:1)
对于合成,您需要以二进制格式表示实数(定点或浮点,具体取决于您想要的范围)。 VHDL-2008 provides a few packages具有转换功能,可以让您更轻松。例如,如果您使用浮点数:
use ieee.float_pkg.all;
...
signal float_real : real;
signal float_bin32 : float32;
signal float_slv : std_logic_vector(31 downto 0);
signal float_sum : float32;
...
float_bin32 <= to_float(float_real);
float_sum <= float_bin32 + 0.002;
float_slv <= to_slv(float_sum);
请注意,最后一个语句不会转换该值;它只是将float32类型转换为std_logic_vector的示例。