mikrocontroller.net

Forum: FPGA, VHDL & Co. while not endfile


Autor: Kasper (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo -

lese eine stimuli datei mit

while not endfile(...)

ein.

Die Datei soll dann nochmals vollständig eingelesen werden.
Allerderdings weiss ich nicht, wie ich die loop variable wieder auf 0 
setzen muss, denn sie wird ja ledglich so aufgerufen:

    while not endfile(testfile) loop
      readline(testfile_2, testfile_l);
      read(testfile_l, testfile_s);
      ADDR <= to_std_logic_vector(testfile_s(32 downto 19));
      DI   <= to_std_logic_vector(testfile_s(18 downto 3));
      RN <= to_std_logic(testfile_s(2));
      STB  <= to_std_logic(testfile_s(1));
      wait until rising_edge(SYSCLK);
    end loop;

Wäre über Hilfe dankbar,
Kasper

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
du mußt testfile einmal schließen und nochmal neu öffnen.

Autor: Kasper (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Läubi -

Danke für die Antwort!
Und wie mache ich das?

Das file wird ja vor dem stimuli process geöffnet..

Kasper

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist das oben der vollständige Code?

Autor: Kasper (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nein..

hier ein auszug

entity top_p_tb is
  generic (
    log_file      : string := "res.log";
    test_file_1    : string := "ramfile_1.txt";
    );
end top_p_tb;
architecture behavior of top_p_tb is
  file logfile_top_p : text open write_mode is log_file;
  file testfile_1     : text open read_mode is ram_file_1;
  -- Component Declaration for the Unit Under Test (UUT)
  component top_p
    port(

..
..
..
..

  -- Stimulus process
  stim_proc : process
    variable ramfile_l      : line;
    variable ramfile_s      : string(32 downto 1);

  begin
  --------------------------------------------------------------------
    -- RESET
  --------------------------------------------------------------------
    wait for 100 ns;
    RESETN <= '0';
    wait until rising_edge(SYSCLK);
    RESETN <= '1';
    wait until rising_edge(SYSCLK);
    wait for 100 ns;
    wait until rising_edge(SYSCLK);

    while not endfile(testfile) loop
      readline(testfile_2, testfile_l);
      read(testfile_l, testfile_s);
      ADDR <= to_std_logic_vector(testfile_s(32 downto 19));
      DI   <= to_std_logic_vector(testfile_s(18 downto 3));
      RN <= to_std_logic(testfile_s(2));
      STB  <= to_std_logic(testfile_s(1));
      wait until rising_edge(SYSCLK);
    end loop;

    ..
    ..


    while not endfile(testfile) loop
      readline(testfile_2, testfile_l);
      read(testfile_l, testfile_s);
      ADDR <= to_std_logic_vector(testfile_s(32 downto 19));
      DI   <= to_std_logic_vector(testfile_s(18 downto 3));
      RN <= to_std_logic(testfile_s(2));
      STB  <= to_std_logic(testfile_s(1));
      wait until rising_edge(SYSCLK);
    end loop;
end process compare_datain;
end;

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da haben wir es doch:
file logfile_top_p : text open write_mode is log_file;
file testfile_1     : text open read_mode is ram_file_1;
Da öffnest du die Dateien, ggf. mußt mal sehen wie man ne Datei 
schliesst dann solltest du sie neu öffnen können.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.