开发者

How to convert a string to integer in VHDL?

开发者 https://www.devze.com 2023-04-01 23:11 出处:网络
I am loading text data into a VHDL test bench and I开发者_运维百科 want to convert input strings into integer values.

I am loading text data into a VHDL test bench and I开发者_运维百科 want to convert input strings into integer values.

eg: "123" => 123

Can someone recommend a "best" way of converting strings to integers in VHDL?


For the sake of reference. It is also possible to convert a string to integer using the 'value attribute:

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

int := integer'value(str);

Depending on one's needs this may be more desirable than the read() procedure because it does not destructively alter the source string. It does, however, only work if the string is a valid integer literal with no surrounding characters other than whitespace.

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()


readline and read functions should achieve what you are looking for.

Basically:

  1. Open your file
  2. Use readline to get the next line from file into a line buffer
  3. Use read to parse the line buffer to useful data
  4. (Optional) convert the parsed value as necessary

Code Snippet:

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
...
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号