VHDL内のキャストエラーを解決しようとしてきた過去数日間、私はかなり困惑しています。私のコードは以下に添付されています。
if ステートメントは適切に評価されますが、最小変数または最大変数に新しい値が割り当てられません。関数のさまざまな側面をコメントアウトしてテストしたので、これを知っています。
参考までに。typeには、以下の関数で比較している電圧t_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;