VHDL:当>;时,如何将有符号/无符号表示为整数字符串;32位

VHDL:当>;时,如何将有符号/无符号表示为整数字符串;32位,vhdl,Vhdl,我正在进行一系列DSP验证,为了在断言失败时打印,我为有符号和无符号类型编写了以下函数: function to_string(arg : integer) return string is begin return integer'image(arg); end function; function to_string(arg : signed) return string is begin return to_stri

我正在进行一系列DSP验证,为了在断言失败时打印,我为有符号和无符号类型编写了以下函数:

    function to_string(arg : integer) return string is
    begin
        return integer'image(arg);
    end function;

    function to_string(arg : signed) return string is
    begin
        return to_string(to_integer(arg));
    end function;

    function to_string(arg : unsigned) return string is
    begin
        return to_string(to_integer(arg));
    end function;

然而,由于我的一些结果大于32位宽,它们刚刚中断。在VHDL中,当有符号和无符号类型的宽度大于32位时,是否有办法提供它们的整数字符串表示?如果没有,是否有人可以提供一个函数来提供这些数字的十六进制表示,以减少打印到控制台上的内容的大小?

VUnit string\u ops包提供了这样的函数:。

在VHDL 2008中,通过to\hstring函数在数字std包中免费提供十六进制表示。还提供了to_串和to_串


这些函数是为其本机软件包中所有基于位的类型提供的。write、owrite和hwrite也可用于写入行。

也许您可以从
real
类型中获益,因为它总是这样,因此有更多的位来表示整数部分。@MortenZilmer这很好,但在处理有符号/无符号类型时,这是不可能的,因为我必须先转换为整数。我的用例是验证宽度大于31位的有符号/无符号结果。在检查值时,我没有问题,因为我使用相同的数据类型。但是,我想以可读的方式将预期/观察到的内容打印到屏幕上,以便用户看到差异。很酷,看起来我将至少在所有测试台上切换到'08,因为我使用的所有模拟器似乎都支持我需要的东西。谢谢你指出这一点,我不知道他们添加了这一点,因为我们一直被困在'02。