5

我无法使以下报告语句正常工作:

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 "&".

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

我究竟做错了什么?

4

1 回答 1

5

使用“图像”的示例:

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。

于 2015-04-16T18:32:38.053 回答