使用“图像”的示例:
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity foo is
end entity;
architecture fum of foo is
signal a: std_logic_vector (31 downto 0) := x"deadbeef";
begin
process (a)
begin
report "ERROR: instruction address '" &
-- CONV_INTEGER(a(7 downto 2)) &
INTEGER'IMAGE(to_integer(unsigned (a(7 downto 2)))) &
"' out of memory range." ;-- severity failure;
end process;
end architecture;
我使用了包 numeric_std。原理相同,转换例程的名称不同。
'IMAGE 是一个预定义的属性,它返回一个类型的值的字符串表示形式(在本例中为 INTEGER)。
您的失败消息是因为没有可用的“&”连接运算符知道如何将整数连接到字符串上,因此您提供了整数的字符串图像。
运行时:
ghdl -r foo
foo.vhdl:13:9:@0ms:(report note): 错误:指令地址 '59' 超出内存范围。
位 7 到 2 是位串初始化的“111011”,当表示为整数时恰好等于 59。