将整数转换为字符串,使其适合指定数量的位置,然后输出的函数

问题描述 投票:0回答:1

我已经使用VHDL有一段时间了,并且习惯了其中的to_string和integer'image函数。我正在尝试编写一些 SystemVerilog,刚刚意识到字符串连接,尤其是整数到字符串的工作方式不同。

我正在尝试在 SystemVerilog 中为整数编写一个

to_string
函数。它应采用三个参数。第一个是要转换的整数(显然)。第二个是字符串表示必须占据的位置数。这可以是 0 的形式,也可以是空格的形式,因此第三个参数应该是填充字符。

我不确定如何告诉

$sformat
函数填充量应该是可变的,并指定填充字符。编写具有字节级字符串操作的低级函数是执行此操作的唯一方法吗?

Convert 12 to string to fit in 5 places, pad with zeros and not empty space. This gives:

00012
verilog system-verilog
1个回答
0
投票

这应该可以帮助您开始。 它利用此技术来构建格式字符串

module tb;

string str;

function string to_str (int num, width);
    string fmt;
    // %%  is a literal %
    // 0   is the pad character
    // %0d formats the width as an integer with no padding
    // d   is for digit
    fmt = $sformatf("%%0%0dd", width);
    return $sformatf(fmt, num);
endfunction

initial begin
    str = to_str(12, 4) ; $display(str);
    str = to_str(12, 5) ; $display(str);
    str = to_str(12, 6) ; $display(str);
    str = to_str(123, 7); $display(str);
    str = to_str(123, 8); $display(str);
    str = to_str(123, 9); $display(str);
end

endmodule

打印:

0012
00012
000012
0000123
00000123
000000123
© www.soinside.com 2019 - 2024. All rights reserved.