如何在报告语句中将字符串与整数连接起来?

How to concatenate strings with integer in report statement?

我在使用以下报告语句时遇到问题:

report "ERROR: instruction address '" & CONV_INTEGER(a(7 downto 2)) & "' out of memory range." severity failure;

其中 a 的类型为 in std_logic_vector(31 downto 0)

我得到的错误是:

No feasible entries for infix operator "&".

我想打印出一个字符串,连接整数值,然后连接另一个字符串。

我做错了什么?

使用'IMAGE的例子:

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 是一个预定义的属性,returns 一个类型值的字符串表示形式(在本例中为 INTEGER)。

您的失败消息是因为没有可用的“&”连接运算符知道如何将整数连接到字符串,因此您改为提供整数的字符串图像。

当运行:

ghdl -r foo
foo.vhdl:13:9:@0ms:(report note): ERROR: instruction address '59' out of memory range.

第 7 位到第 2 位是位串初始化的“111011”,当表示为整数时恰好等于 59。