www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Dateiende erkennen mit std.textio


Autor: T.M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe ne Testbench, in der ich Stimulidaten aus einem txt-File
einlesen will.
Wie kann ich eigentlich das Zeilenende feststellen?
Die Funktion endline() fällt aus, weil die in VHDL'93 nicht mehr
unterstützt wird. Laut Designers Guide kann man dafür die Länge der
Zeilenvariable abfragen mit zB.
IF Zeileinhalt'LENGTH = 0 THEN
....
Nur muss ich davor natürlich erstmal die Zeile mittels readline()
einlesen, und schon da steigt mir der Simulator mit nem Error aus :-(

Hat jemand zufällig eine Idee für das Problem?


T.M.

Autor: Klaus Falser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du mußt unterscheiden zwischen Dateiende und Zeilenende.
Bevor Du eine Zeile mit readline einliest, muß du mit endfile()
abfragen, ob überhaupt noch eine Zeile vorhanden ist.
Das Dateiende wird nicht mehr durch Einlesen einer leeren Zeile
erkannt, sondern mittels endfile().

Grüße
Klaus

Autor: T.M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab mich da verschrieben...ich meine natürlich endfile.
Und das wird ab VHDL'93 aber nicht mehr unterstützt. Ich hab aber nun
schon mein ganzes Design nach dem Standard geschrieben. :-(

Autor: T.M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kommando zurück.
endline() gibts nicht mehr unter VHDL'93 / '02
endfile() aber wohl doch...
Man muss nur mal richtig hinschauen ;-)

Danke


T.M.

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier mal ein Ausschnitt aus nem Testbench der eine Datei einliest
bei read gibt der 3. Parameter zurück ob es geklappt hat

variable NEOL:BOOLEAN:=true;
...
while not endfile(bild) loop
readline(bild,l);
loop
read(l,pixel,NEOL);
exit when not NEOL;
PCLK<='0';
PDAT<=std_logic_vector(TO_Unsigned(pixel,8));
wait for 50 ns;
PCLK<='1';
wait for 50 ns;
end loop;
end loop;

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.