www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Auslesen von Daten


Autor: Karl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich finde immer wieder Beispiele in denen Dateien Zeile für Zeile 
ausgelesen werden nach dem Prinzip
...
VARIABLE zeile: LINE;
...
WHILE(NOT endfile(source_file)) LOOP
readline(source_file, zeile);
...
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

Autor: Bitte einen Namen eingeben (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Duke Scarring (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Sven P.:

Nein.

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

Duke

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.