Hallo zusammen,
zur Zeit setze ich ein Cyclone II von Altera ein.
Ich versuche einen String in eine Text-Datei abzuspeichern. Bislang aber
ohne Erfolg. Vielleicht könnt ihr mir sagen, wo der Fehler ist.
Ersteinmal habe ich ein File definiert:
file text_handle : Text;
process(CLK)
variable initial : boolean := true; -- not initialized yet
variable status : file_open_status; -- status for fopen
begin
if rising_edge(CLK) then --erzeugt 1s Clock
if initial = true then
file_open (status, text_handle, "C:\Log.txt");
initial := false;
end if;
end if;
end process;
...
process(CLK, nReset, CLKs, send_enable)
variable status : file_open_status;
variable data_string : LINE;
begin
if nReset = '0' then
state <= idle ;
elsif rising_edge(CLK) then
write (data_string, string'("Test String"));
test_signal <= test_signal + 1;
if Tx_ready = '1' and test_signal = "00" then
case state is
when idle =>
if send_enable = '1' and CLKs = '1' then
if input_buffer = (x"53" or x"73") then
state <= send_h;
writeline (text_handle, data_string);
file_close (text_handle);
...
end process;
Könnt Ihr mir bitte sagen, wo der Fehler ist?
Danke!
Hallo Lothar,
ich gehe davon aus, dass die Datei offen ist.
Die Änderungen habe ich kurz reinprogrammiert. Es passiert trotzdem
nichts.
Kann es sein, dass dem Data_String ein Wert zugewiesen werden muss?
PD schrieb:
> Kann es sein, dass dem Data_String ein Wert zugewiesen werden muss?
Tust du doch:
write (data_string, string'("Test String"));
Das hier geht auf jden Fall:
Ich habe nun folgenden VHDL-Code ausprobiert:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.numeric_std.ALL;
use std.textio.all;
--use ieee.std_logic_textio.all;
entity Save is
port(
-- CLK : in std_logic; --50MHz
Start : in std_logic; -- Start-Taster
LED_out : out std_logic
);
end Save;
architecture test of Save is
signal done : std_logic := '0'; -- flag set when simulation finished
begin -- test of file_io
write_file:
process (Start) is -- write (when done goes to '1')
file my_output : TEXT open WRITE_MODE is "Output.txt";
variable my_line : LINE;
variable my_output_line : LINE;
begin
file_open (my_output, "Output.txt", Write_MODE);
if start='1' then
write(my_line, string'("writing file"));
writeline(output, my_line);
write(my_output_line, string'("output from Save.vhdl"));
writeline(my_output, my_output_line);
LED_out <= '1';
else
LED_out <= '0';
end if;
end process write_file;
end architecture test;
-----------------------------
Funktioniert aber leider noch nicht!
Hat jemand noch eine Idee?
>Funktioniert aber leider noch nicht!
Was tust du eigentlich?
Dir ist schon klar, dass das nur in der Simulation geht?
Wie simulierst du das? Und mit welchem Simulator?
Ich bekomme diesen Fehler:
1
# ** Error: (vsim-3341) Cannot open file "Output.txt"; it is already open.