Сообщать std_logic_vector как целое число без знака в ISim?

вот библиотеки, которые я использую:

library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.NUMERIC_STD.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

сигнал:

signal CountTemp : std_logic_vector(15 downto 0);

и заявление отчета:

report "Actual CountTemp: " & integer'image(to_integer(unsigned(CountTemp)));

Я получаю эту ошибку:

 at 30 ns, Instance /TESTFILE_tb/ : Warning: NUMERIC_STD.TO_INTEGER: metavalue detected, returning 0

person VKkaps    schedule 06.08.2015    source источник


Ответы (1)


Ошибки, содержащие metavalue detected, означают, что вы передали параметр (в данном случае unsigned(CountTemp)), содержащий биты с состояниями, отличными от 0 или 1.

Попробуйте инициализировать счетчик:

signal CountTemp : std_logic_vector(15 downto 0) := (others => '0');

Так как без этого значение CountTemp будет "UUUUUUUUUUUUUUUU", т.е. метазначение.

В качестве альтернативы убедитесь, что вы что-то присвоили своему сигналу, прежде чем передавать его в to_integer.

person scary_jeff    schedule 06.08.2015
comment
который обрабатывает сообщение об ошибке, но по-прежнему возвращает неправильное значение, даже если правильное значение равно 1. Все, что он возвращает, это 0 для каждого случая. - person VKkaps; 06.08.2015
comment
Это звучит как новый вопрос для меня. - person scary_jeff; 06.08.2015
comment
проблема связана с преобразованием integer'image (to_integer (unsigned (CountTemp))), а не с инициализацией CountTemp. Форма сигнала моделирования показывает CountTemp как ненулевое целочисленное значение без знака, но оператор отчета каждый раз возвращает ноль, потому что ему не нравится преобразование. - person VKkaps; 06.08.2015
comment
возможно, это поможет объяснить, что я пытаюсь сделать лучше.....groups.google.com/forum/#!topic/comp.lang.vhdl/ZkyIUFlulj4 - person VKkaps; 06.08.2015
comment
Я не знаю стандартного способа печати в двоичном формате. Вы можете попробовать to_hstring() печатать в шестнадцатеричном формате, но если целочисленное преобразование возвращает ноль, я не вижу, чтобы какой-либо другой метод печати показал что-то другое. Кажется более вероятным, что вы печатаете не то, что думаете, или что где-то еще есть какая-то ошибка. - person scary_jeff; 06.08.2015