Vhdl Textersatz

Gast #4312519
Lesenswert?

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
Gast #4316740
Lesenswert?

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?
Gast #4316753
Lesenswert?

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
Gast #4317034
Lesenswert?

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
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren