我正在将文本数据加载到VHDL测试平台中,我想将输入字符串转换为整数值。
例如:“123”=> 123
有人可以推荐一种在VHDL中将字符串转换为整数的“最佳”方法吗?
答案 0 :(得分:6)
readline 和阅读功能应该可以实现您的目标。
基本上:
代码段:
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()