使用来自大型单行文本文件的整数来进行测试

问题描述 投票:0回答:2

我有一个包含大量整数的文件,它看起来像:

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代码(算法)来分析这个文件,它存储了这个文件的几个特征。我想为这个算法编写一个测试平台,它一次取一个值(整数)给我的算法作为输入并继续下一个值。

在文件的最后,这个测试工作台应该将算法中存储的输出写入一个单独的文本文件中。

这里需要注意的是它是一个由空格分隔的大型单行文件。我尝试过像Read textfile in VHDL testbench这样的解决方案,但它们不适合单行文件。

vhdl test-bench
2个回答
1
投票

如果你没有内存限制,你可以一次读取整行,然后一次解析一个整数,直到最后一个整数。例:

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无效,您将不得不使用较低级别的读取过程和自定义文件类型的字符。但是,就个人而言,我可能会使用一些shell实用程序来分割超长线是较短的。 VHDL编程很有趣但是当要解决的问题离硬件太远时,乐趣变得越来越不重要。


0
投票

read(l,int)过程从行l读取下一个整数,用空格分隔。因此,您可以使用多个read(l,int)调用执行单个readline(f,l),直到该行为空。

© www.soinside.com 2019 - 2024. All rights reserved.