Преобразование типа IEEE с плавающей точкой в ​​std_logic_vector - PullRequest
0 голосов
/ 20 сентября 2011

У меня есть двумерная матрица, где каждый элемент должен быть 64-битным std_logic_vector.

Теперь я хочу сохранить определенные значения в матрице, как показано ниже.Как я могу это сделать?Например:

type a is array (0 to 10,0 to 10) of std_logic_vector(63 downto 0);
signal a1: a;
a1(0,0) <= std_logic_vector( to_float64(12.23) );

По сути, я не знаю, как конвертировать float64 в std_logic_vector.

Я использую библиотеку float_pkg из ieee_proposed.

1 Ответ

4 голосов
/ 20 сентября 2011

Почему бы не сделать:

type aftype is array (0 to 10,0 to 10) of float64;
signal af: aftype;

Тогда нет преобразования.

С точки зрения преобразований, для функции to_float требуется тип, чтобы знать, как форматировать ввод real.:

signal f : float64;
f <= to_float(12.34, f);
-- or
af(0,0) <= to_float(12.34,f);

Если вы должны иметь std_logic_vector, вы можете использовать to_std_logic_vector из пакета (с псевдонимом to_slv):

a1(0,0) <= to_slv(to_float(12.34,f));
...