지난 주 동안 나는 내 VHDL 안에 캐스팅 오류를 해결하기 위해 애 쓰고있었습니다. 내 코드는 아래에 첨부되어 있습니다.VHDL 캐스팅 오류
if 문을 올바르게 평가하지만 새 값을 min 또는 max 변수에 할당하지 않습니다. 나는 주석을 달고 기능의 다른 측면을 테스트하면서 이것을 알고있다.
FYI. t_battery_data
타입은 아래 기능에서 비교할 전압 인 의 배열을 포함합니다.
왜 이런 식으로 수행하는지 잘 모르겠습니다. 온라인 검색에서 찾을 수있는 것은 모두 내가 수행 한 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;