Input from file and output to file - VHDL

E

Emel

Guest
Hi,

what is the easiest way of taking inputs from a file and writing
outputs to a file? I need to take values from MATLAB. I also need to
plot the outputs in MATLAB. Can anyone suggest an appropriate way of
doing this?

Thanks in advance.

e.
 
Emel wrote:
Hi,

what is the easiest way of taking inputs from a file and writing
outputs to a file? I need to take values from MATLAB. I also need to
plot the outputs in MATLAB. Can anyone suggest an appropriate way of
doing this?
If you read and write the files as ascii, then you can do this in both
Matlab and VHDL in a portable fashion. I generally prefer to use binary
data files for this purpose. I don't think there is a standard for
binary file formats in VHDL, but Modelsim at least reads and writes 4
byte integers. I have no problem then importing that into Matlab and
plotting it.

But I have used the ascii method; sometimes it is nice to have an easily
readable file. For example, in VHDL:

constant telm_filename : String := "telm.out";
begin
data_ver_p: process is
variable L : line;
file telm_file : text open write_mode is telm_filename;
begin
loop
wait until rising_edge(USER_CLK);
if RX_SRC_RDY = '1' then
RX_CNT <= RX_CNT + 1;
hwrite(L, RX_DOUT);
writeline(telm_file, L);
deallocate(L);
end if;
end loop;
end process data_ver_p;

Then, in Matlab:

fid = fopen(strcat(telm,'telm.out'),'r');
for i = 1:range_samples
j = int32(fscanf(fid,'%x',1));
if j > 32767
telm2_r(i) = j-65536;
else
telm2_r(i) = j;
end
j = int32(fscanf(fid,'%x',1));
if j > 32767
telm2_i(i) = j-65536;
else
telm2_i(i) = j;
end
end
fclose(fid);
 

Welcome to EDABoard.com

Sponsor

Back
Top