Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Float в тестбенчах
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
count_enable
Работаю с 18-битной Q-arithmetic в диапазоне +1..-1. Т.е все 17 бит это дробная часть, 1 бит знаковое расширение. И захотелось мне чтобы в тестбенче сразу в консоль выводило соответствующее значение, а не просто std_logic_vector. Можно ли как-то средствами VHDL сконвертить Q-вектор в дробь?
Timmy
Цитата(count_enable @ Jun 2 2015, 15:46) *
Работаю с 18-битной Q-arithmetic в диапазоне +1..-1. Т.е все 17 бит это дробная часть, 1 бит знаковое расширение. И захотелось мне чтобы в тестбенче сразу в консоль выводило соответствующее значение, а не просто std_logic_vector. Можно ли как-то средствами VHDL сконвертить Q-вектор в дробь?

У меня вот так сделано:
write(l, real(to_integer(signed(v)))*2.0**(1-v'length),field=>10,digits=>6);
count_enable
Спасибо, то что доктор прописал. А возможно ли средствами VHDL читать из текстового файла числа (десятичный формат 0.6 -например 0.675467 ) и конвертить их в Q1.17 ?
Timmy
Цитата(count_enable @ Jun 3 2015, 13:47) *
Спасибо, то что доктор прописал. А возможно ли средствами VHDL читать из текстового файла числа (десятичный формат 0.6 -например 0.675467 ) и конвертить их в Q1.17 ?

Читать real не пробовал(чукча не читатель, чукча писательsm.gif), а конвертить, естественно, в обратном порядке:
q := to_signed(integer(round(f * 2.0**(q'length-1))), q'length);
для чисел длинее 32 бит написал специальный конвертор:
Код
  function to_signed(v:real; l:positive) return signed is
    variable r, hi, lo:real;
  begin
    assert l < 62 report "result length must be less then 62" severity ERROR;
    if l <= 31 then
      return to_signed(integer(round(v)), l);
    else
      r := v+0.5;
      hi := floor(r/(2.0**30));
      lo := floor(r-hi*2.0**30);
      return to_signed(integer(hi),l-30)&to_signed(integer(lo),30);
    end if;
  end;

count_enable
Еще раз спасибо!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.