Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

what is the wrong with this code

Status
Not open for further replies.

Serwan Bamerni

Member level 2
Joined
Dec 21, 2014
Messages
45
Helped
0
Reputation
0
Reaction score
0
Trophy points
6
Activity points
367
Dear EDABoard users

i want to read data in a text file and after a small processing I write the data in other text file

I wrote this code but unfortunately i got error when I synthesis it


Code dot - [expand]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use STD.TEXTIO.all;
use IEEE.STD_LOGIC_TEXTIO.all;
 
ENTITY read_write_text_file_dhl IS
    PORT(   Clock : IN STD_LOGIC);
END read_write_text_file_dhl;
 
 
architecture Behavioral of read_write_text_file_dhl is
 
    file read_file : text;
    file write_file : text;
    constant filename_r : string :="D:\1.txt";
    constant filename_w : string :="D:\2.txt";
    signal dataout: std_logic_vector(3 downto 0);
 
begin
 
FILE_READ : process (Clock)
    variable line_out : line;
    variable fstatus:File_open_status;
    variable data: std_logic_vector(3 downto 0);
    variable xx: std_logic := '0';
 
begin
 
    if (xx = '0') then                                                  --------------------------
        file_open(fstatus, read_file, filename_r, read_mode);   -- the file should be --
    end if;                                                                     -- opened one time only --
                                                                                --------------------------
    if rising_edge(Clock) then
        if (not endfile(read_file)) then
            readline(read_file,line_out);
            read(line_out, data);
            dataout <= data;
        end if;
    end if;
    xx := '1';
end process FILE_READ;
 
-------------------------------------------------
 
FILE_WRITE : process (Clock)
    
    variable line_out : line;
    variable fstatus:File_open_status;
    variable zz: std_logic := '0';
 
 
begin
 
    if (zz = '0') then
    file_open(fstatus,write_file,filename_w,write_mode);
    end if;
--------------------------------
    if rising_edge(Clock) then
            write(line_out, dataout);
            writeline(write_file, line_out);
    end if;
    zz := '1';
 
end process FILE_WRITE;
 
--------------------------------------------------
 
end Behavioral;




the following error occur

line 59: Second argument of write must have a constant value.


please can any one help me in solving the problem
 
Last edited by a moderator:

the function wrtie(,) in line 59 takes character type in second argument, then try convert dataout form std_logic_vector to character.
 

thank you Mr. TrickyDicky
but textio is synthesised with read function
Is that so?

So tell me based on your VHDL expertise...how does a synthesized design that is run through the FPGA tools and downloaded into a FPGA on a board supposed to interpret where the file names D;\1.txt and D:\2.txt are? Or put another way what is the circuit that is described by the synthesized textio functions for reading and writing to a file system?
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top