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


von T.M. (Gast)


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.
1
IF Zeileinhalt'LENGTH = 0 THEN
2
....
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.

von Klaus Falser (Gast)


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

von T.M. (Gast)


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. :-(

von T.M. (Gast)


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.

von Wolfram (Gast)


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;

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.