Forum: FPGA, VHDL & Co. Auslesen von Daten


von Karl (Gast)


Lesenswert?

Hallo,

ich finde immer wieder Beispiele in denen Dateien Zeile für Zeile 
ausgelesen werden nach dem Prinzip
1
...
2
VARIABLE zeile: LINE;
3
...
4
WHILE(NOT endfile(source_file)) LOOP
5
readline(source_file, zeile);
6
...
7
END LOOP;

Die Variable Zeile wird nirgends initialisiert noch inkrementiert.
daher vermute ich, dass Variablen in VHDL bei der Deklarierung mit einem 
Standardwert initialisiert werden. Ich nehme an, das dies hier 0 oder 1 
ist (keine Ahnung, welchen Index die erste Zeile in einem Textfile 
bekommt).
Ist meine Annahme korrekt, ich finde dazu keine Infos und google mir 
grad die Finger wund...

Vielleicht hat jemand einen Link wo ich eine Übersicht finde aus der 
hervorgeht mit welchen Werten Variablen initialisiert werden.

Danke im Voraus
Gruß
Karl

von Bitte einen Namen eingeben (Gast)


Lesenswert?

In dem Beispiel enthält die Variable "zeile" keine Zeilennummer,
sondern die von readline() aus der Datei eingelesene Zeile
(d.h. eine Zeichenfolge, in der kein Newline-Zeichen vorkommt).
Daher wird "zeile" ja auch als "LINE" festgelegt (und nicht
als "INTEGER").

Deine Vorstellung war offenbar, daß das zweite Argument von readline() 
die Zeilennummer der einzulesenden Zeile angibt. Dem ist allerdings 
nicht so, denn readline() liest immer die nächste noch nicht eingelesene 
Zeile aus der Datei. Vielmehr gibt das zweite Argument die Variable an,
in die readline() die eingelesene Zeile schreiben soll.

von Karl (Gast)


Lesenswert?

Ah, ok. Das erklärts. Dann ist line eher sowas wie eine Stringvariable 
an die *readline()* den Inhalt der jeweils eingelesenen Zeile übergibt.

Danke für die Erklärung

von Sven P. (Gast)


Lesenswert?

Geht das in VHDL eigentlich genauso in die Hose, wie in C? Also dass 
'endfile' (resp. 'feof') erst wahr wird, wenn man schon über das 
Dateiende  hinausgelesen hat?

von Duke Scarring (Gast)


Lesenswert?

@Sven P.:

Nein.

Zitat (http://www.eda.org/comp.lang.vhdl/FAQ1.html#text_files):
1
In addition, TextIO contains a function Endfile, which
2
is a predicate that indicates whether the next call to
3
Readline will fail. (That is, as long as Endfile 
4
returns false, the next Readline on the same file 
5
will succeed.)

Duke

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.