Ich habe folgende Fragestellung: Gibt es in Vhdl einen Textersatz? Zur Aufgabenstellung: Daten aus einem Textfile sollen in einer Testbench eingelesen werden. Zunächst aus File_1, dann aus File_2 usw. Anstatt jedes File (bei mehreren macht es wenig Sinn) separat aufzulisten und einzulesen dachte ich an eine Art Schleife. Dazu muss der File Name jedoch hochgezählt werden. 'File_i.txt' -> File einlesen, Counter i hochzählen -> File einlesen ... Danke für Vorschläge
Du kannst doch auch den String zusammenbauen:
1 | a := "File_" & integer'image(i) & ".txt" |
Gruß Marius
Wie lassen sich Files innerhalb eines Prozesses öffnen? alt:
1 | architecture log_to_file of FILE_LOG is |
2 | file l_file: TEXT open write_mode is "text.txt"; |
3 | begin
|
4 | process
|
5 | begin
|
6 | while true loop |
7 | writeline(l_file, l); |
8 | end loop; |
9 | ...
|
neu:
1 | p1: process(newfile) |
2 | variable a ... |
3 | begin
|
4 | if newfile = 1 then |
5 | i <= i+ 1; |
6 | a := "File_" & integer'image(i) & ".txt" |
7 | end; |
8 | end process p1; |
9 | |
10 | p2: process |
11 | file l_file: TEXT open write_mode is a; |
12 | begin
|
13 | while true loop |
14 | writeline(l_file, l); |
15 | end loop; |
16 | end process p2; |
Im process p2 müsste ich l_file als Variable definieren. Die Beschreibung ist momentan aufgrund der Problematik nicht ausführbar. Abhilfe?
Friedrich schrieb: > Wie lassen sich Files innerhalb eines Prozesses öffnen? Mit file_open:
1 | ...
|
2 | file stim : text; |
3 | variable status : file_open_status; |
4 | variable l : line; |
5 | ...
|
6 | file_open( status, stim, file_name); |
7 | if status = open_ok then |
8 | while not endfile( stim) loop |
9 | readline( stim, l); |
10 | ...
|
11 | wait until rising_edge( clk); |
12 | ...
|
13 | end loop; |
14 | file_close( stim); |
15 | else
|
16 | report "could not open file (" & file_name & ")" |
17 | severity warning; |
18 | wait; |
19 | end if; |
20 | ...
|
Duke
Dein Beispiel ist für das Lesen eines Files, richtig? Wie stelle ich auf write mode um? (das file muss erst angelegt werden)
1 | file l_file: TEXT open write_mode is log_file; |
Friedrich schrieb: > Dein Beispiel ist für das Lesen eines Files, richtig? Ja. > Wie stelle ich auf write mode um? Indem Du einen anderen 'file open mode' verwendest:
1 | file_open( status, stim, file_name, append_mode); |
2 | |
3 | if status = open_ok then |
4 | for i in 0 to 10 loop |
5 | write( l, value); |
6 | writeline( stim, l); |
7 | wait until rising_edge( clk); |
8 | value <= i * 2; |
9 | end loop; |
10 | file_close( stim); |
11 | else
|
12 | report "could not open file (" & file_name & ")" |
13 | severity warning; |
14 | end if; |
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.