Использование целых чисел из большого однострочного текстового файла для testbench - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть файл с большим количеством целых чисел, он выглядит следующим образом:

123 254 360 700 800 900 1000 354 778 897 663 554 888 776 654 655 231 900 777 666 667 776 887 991 555 888 778 666 111 2232 444 545 667 ...  

Я написал VHDL-код (алгоритм) для анализа этого файла, в котором хранятся несколько характеристик этого файла.Я хочу написать тестовый стенд для этого алгоритма, который принимает значение (целое число) за раз, передает его моему алгоритму в качестве входных данных и переходит к следующему значению.

В конце файла этот тестСканер должен взять вывод, сохраненный в алгоритме, записать результат в отдельный текстовый файл.

Предостережение заключается в том, что это большой однострочный файл, разделенный пробелами.Я пробовал такие решения, как Чтение текстового файла в VHDL testbench , но они не подходят для однострочного файла.

Ответы [ 2 ]

0 голосов
/ 07 сентября 2018

процедура read (l, int) считывает следующее целое число из строки l, разделенной пробелом. Таким образом, вы можете выполнить одну readline (f, l) с несколькими вызовами read (l, int), пока строка не станет пустой.

0 голосов
/ 06 сентября 2018

Если вы не ограничены в памяти, вы можете просто прочитать всю строку сразу, а затем проанализировать ее по одному целому числу за раз до последнего целого числа.Пример:

use std.textio.all;

entity foo is
end entity foo;

architecture arc of foo is
begin
  process
    variable l: line;
    file f: text is "foo.txt";
    variable i: integer;
    variable good: boolean;
  begin
    readline(f, l); 
    loop
      read(l, i, good);
      exit when not good;
      report integer'image(i);
    end loop;
    wait;
  end process;
end architecture arc;

Если размер файла превышает размер доступной памяти, вам придется разделить readline на более мелкие куски, но здесь std.textio не поможет, и вам придетсяиспользуйте процедуры чтения более низкого уровня и пользовательский тип файла символов.Но лично я, вероятно, использовал бы некоторые утилиты оболочки, чтобы разбить супер-длинную линию на более короткие.Программирование на VHDL забавно, но когда решаемая проблема слишком далека от аппаратного обеспечения, веселье становится менее значительным.

...