0

テキスト ファイルを読み取るためのサンプル ソース コードをテストしています。このファイルの各行には、2 つの整数 (スペースで区切られています) が含まれており、これらを読み取って合計する必要があります。以下のコードでは、アーキテクチャのみを報告しています。

architecture behav of tb is
  signal xb, yb, zb: std_logic_vector(7 downto 0);
begin
  process
    file fp: text is in "in.txt";
    variable ln: line;
    variable x, y, z: integer;
  begin
    readline( fp, ln ); read( ln, x ); read( ln, y );
    xb <= conv_std_logic_vector( x, 8 );
    yb <= conv_std_logic_vector( y, 8 );
    if endfile( fp ) = true then
      wait;
    else
      wait for 10 ns;
    end if;
  end process;

  DUT: zb <= xb + yb; 
end behav;

ソース コードをコンパイルした後、シミュレーションを実行し、テキスト ファイルの最後まで適切に続行します。しかし、ソース コードを次のように変更すると、テキスト ファイルの最後でシミュレーションが終了しません。なんで?

architecture behav of tb is
  signal xb, yb, zb: std_logic_vector(7 downto 0);
begin
  process
    file fp: text is in "in.txt";
    variable ln: line;
    variable x, y, z: integer;
  begin
    while not endfile(fp) loop
      readline( fp, ln ); read( ln, x ); read( ln, y );
      xb <= conv_std_logic_vector( x, 8 );
      yb <= conv_std_logic_vector( y, 8 );
      wait for 10 ns;
    end loop;
  end process;

  DUT: zb <= xb + yb; 
end behav;
4

0 に答える 0