Intel® Quartus® Prime Software
Intel® Quartus® Prime Design Software, Design Entry, Synthesis, Simulation, Verification, Timing Analysis, System Design (Platform Designer, formerly Qsys)
17261 Discussions

handling two dimensional array using vhdl

Altera_Forum
Honored Contributor II
2,141 Views

i have a two dimensional array in a text file. i want to read it from the text file and write it in another text file as a two dimensional array. i have tried using the code given below. but it writes only one column. how to write all the columns. 

 

library std; 

use std.textio.all; --include package textio.vhd 

 

 

--entity declaration 

entity filehandle is 

end filehandle; 

 

 

--architecture definition 

architecture Behavioral of filehandle is 

--period of clock,bit for indicating end of file. 

signal clock,endoffile : bit := '0'; 

--data read from the file. 

signal dataread : real; 

--data to be saved into the output file. 

signal datatosave : real; 

--line number of the file read or written. 

signal linenumber : integer:=1;  

 

 

begin 

 

 

 

 

clock <= not (clock) after 1 ns; --clock with time period 2 ns 

 

 

 

 

--read process 

reading : 

process 

file infile : text is in "bit8.txt"; --declare input file 

variable inline : line; --line number declaration 

variable dataread1 : real; 

begin 

wait until clock = '1' and clock'event; 

if (not endfile(infile)) then --checking the "END OF FILE" is not reached. 

readline(infile, inline); --reading a line from the file. 

--reading the data from the line and putting it in a real type variable. 

read(inline, dataread1); 

dataread <=dataread1; --put the value available in variable in a signal. 

else 

endoffile <='1'; --set signal to tell end of file read file is reached. 

end if; 

 

 

end process reading; 

 

 

--write process 

writing : 

process 

file outfile : text is out "bit8_inv.txt"; --declare output file 

variable outline : line; --line number declaration  

begin 

wait until clock = '0' and clock'event; 

if(endoffile='0') then --if the file end is not reached. 

--write(linenumber,value(real type),justified(side),field(width),digits(natural)); 

write(outline, dataread, right, 16, 12); 

-- write line to external file. 

writeline(outfile, outline); 

linenumber <= linenumber + 1; 

else 

null; 

end if; 

 

 

end process writing; 

 

 

end Behavioral;
0 Kudos
1 Reply
Altera_Forum
Honored Contributor II
1,102 Views

Your code has no mention of a line length, so there is no way to know how many values to write onto each line. 

The write process also writes out every single value. You need to save the writeline() procedure until you have a complete line to write.
0 Kudos
Reply