在过去的几天里,我一直在尝试解决VHDL中的转换错误,这让我感到很困惑。我的代码附在下面。
它将正确评估 if 语句,但不会将新值分配给 min 或 max 变量。我知道这一点,因为我注释掉并测试了函数的不同方面。
仅供参考。typet_battery_data
包含一个数组,std_logic_vectors(15 downto 0)
即我在下面的函数中比较的电压。
我不确定它为什么会这样。我在网上搜索中所能找到的几乎所有内容都包括ieee.numeric_std
我已经完成的图书馆。
还是一头雾水。任何建议将不胜感激。谢谢!
function cell_delta_voltage_counts(
bat_data: t_battery_data
) return integer is
constant POS_INFINITY: integer:= 2 ** 16 - 1;
constant NEG_INFINITY: integer:= 0;
variable min: integer range 0 to 2 ** 16 - 1:= POS_INFINITY-5;
variable max: integer range 0 to 2 ** 16 - 1:= NEG_INFINITY;
begin
for i in 0 to NUM_CELLS-1 loop
if (to_integer(unsigned(bat_data.cell_readings(i).voltage)) < min) then
min := to_integer(unsigned(bat_data.cell_readings(i).voltage));
end if;
if (to_integer(unsigned(bat_data.cell_readings(i).voltage)) > max) then
max := to_integer(unsigned(bat_data.cell_readings(i).voltage));
end if;
end loop;
return max - min;
end function cell_delta_voltage_counts;