Ich habe eine Testbench die ein File öffnet und Daten aus dem File entnimmt. Das Läuft so weit. Jetzt will ich ein RESET integrieren und hier müsste das File wieder von Anfang an beginnen. VHDL hat leider kein seek so weit ich weiss. Hat jemand eine Idee wie so was gehen kann? Ich poste meine aktuelle Lösung hier. Bin gespannt, ob es eine Lösung gibt.
1 | signal clk : std_logic := '0'; |
2 | signal reset : std_logic; |
3 | |
4 | signal data_in : std_logic_vector(7 downto 0); |
5 | signal rd_enable : std_logic; |
6 | signal rd : std_logic; |
7 | -- Clock period definitions
|
8 | constant clk_period : time := 10 ns; |
9 | |
10 | subtype by_te is character; |
11 | type f_byte is file of by_te; |
12 | |
13 | BEGIN
|
14 | --read a file
|
15 | process
|
16 | constant file_name: string:="test.txt"; |
17 | file in_file: f_byte open read_mode is file_name; |
18 | |
19 | --variable in_line,out_line: line;
|
20 | variable good:boolean; |
21 | variable a:character; |
22 | |
23 | begin
|
24 | if not endfile (in_file) then |
25 | read(in_file,a); |
26 | data_in<=std_logic_vector(to_unsigned(character'pos(a),8));--very tricky the conversation |
27 | rd_enable<='1'; |
28 | else
|
29 | rd_enable<='0'; |
30 | end if; |
31 | |
32 | wait until rising_edge(CLK) and rd='1'; |
33 | end process; |