如何在VHDL中将字符串转换为整数?

时间:2011-09-01 13:35:19

标签: string integer type-conversion vhdl

我正在将文本数据加载到VHDL测试平台中,我想将输入字符串转换为整数值。

例如:“123”=> 123

有人可以推荐一种在VHDL中将字符串转换为整数的“最佳”方法吗?

2 个答案:

答案 0 :(得分:6)

readline 阅读功能应该可以实现您的目标。

基本上:

  1. 打开文件
  2. 使用readline将文件中的下一行转换为行缓冲区
  3. 使用read将行缓冲区解析为有用数据
  4. (可选)根据需要转换已解析的值

  5. 代码段:

    library STD;
    use std.textio.all;
    ...
    variable File_Name         : string;
    file my_file               : text; 
    variable lineptr           : line;
    variable temp              : integer;
    ...
    file_open(my_file, File_Name, read_mode); -- open the file
    readline(my_file, lineptr); -- put the next line of the file into a buffer
    read(lineptr, temp); -- "parse" the line buffer to an integer
    -- temp now contains the integer from the line in the file
    ...
    

答案 1 :(得分:4)

为了参考。也可以使用'value属性将字符串转换为整数:

variable str : string := "1234";
variable int : integer;
...

int := integer'value(str);

根据他人的需要,这可能比read()程序更令人满意,因为它不会破坏性地改变源字符串。但是,它仅在字符串是有效的整数文字时才有效,除了空格之外没有周围的字符。

variable ln  : line;
variable int : integer;
...

ln := new string'("  456   ");  -- Whitespace will be ignored
int := integer'value(ln.all); -- Doesn't consume contents of ln

ln := new string'("789_000 more text");
int := integer'value(ln.all); -- This will fail unlike read()