Как преобразовать строку в целое число в VHDL?



Я загружаю текстовые данные в тестовый стенд VHDL и хочу преобразовать входные строки в целочисленные значения.



Например: "123" => 123



Может ли кто-нибудь порекомендовать "лучший" способ преобразования строк в целые числа в VHDL?

617   2  

2 ответов:

Функции Readline иread должны достичь того, что вы ищете.

В основном:

  1. Откройте файл
  2. используйте readline для получения следующей строки из файла в буфер строк
  3. использовать для разбора строки буфера для данных
  4. (необязательно) преобразуйте анализируемое значение по мере необходимости

Фрагмент Кода:

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

Для справки. Также можно преобразовать строку в целое число с помощью атрибута '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()

Comments

    Ничего не найдено.