[an error occurred while processing this directive]
Ответ:
(«Телесистемы»: Конференция «Языки описания аппаратуры (VHDL и др.))

миниатюрный аудио-видеорекордер mAVR

Отправлено Paulf 20 мая 2003 г. 10:34
В ответ на: Помогите начинающему - как в VHDL преобразовать тип INTEGER в STD_LOGIC_VECTOR ? отправлено Uuftc 19 мая 2003 г. 23:05

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: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru