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) = j65536;
else
telm2_r(i) = j;
end
j = int32(fscanf(fid,'%x',1));
if j > 32767
telm2_i(i) = j65536;
else
telm2_i(i) = j;
end
end
fclose(fid);
