[an error occurred while processing this directive]
|
FUNCTION integer_to_std_logic_vector(input : INTEGER; highbit : INTEGER) RETURN STD_LOGIC_VECTOR IS
VARIABLE temp : INTEGER := 0;
VARIABLE output : STD_LOGIC_VECTOR(highbit DOWNTO 0);
BEGIN
temp := input;
FOR i IN highbit DOWNTO 0 LOOP
IF temp >= (2**i) THEN
output(i) := '1';
temp := temp - (2**i);
ELSE
output(i) := '0';
END IF;
END LOOP;
RETURN output;
END integer_to_std_logic_vector;
Пример использования:
SIGNAL a : STD_LOGIC_VECTOR(7 DOWNTO 0);
SIGNAL a_int : INTEGER RANGE 0 TO 255;
a <= integer_to_std_logic_vector(a_int, 7);
Только здесь со знаком аккуратно надо, вообще-то в оригинале эта функция работает для UNSIGNED. Надо в начале функции поставить проверку на меньше нуля, а дальше аналогично.
E-mail: info@telesys.ru