我尝试将VHDL模拟结果写入txt文件。
我可以写一些数据。
但是我喜欢按行顺序堆叠这些数据。也就是说,已保存的数据之间有一条新的线。
我保护了writeline函数移动换行符。但这不是。
TEXT_OUT : process (I_CLK,I_RST)
file file_RESULTS : text open write_mode is "output_result.txt";
variable v_OLINE : line;
begin
if (I_RST = '1') then
null;
elsif (rising_edge(I_CLK)) then
if (I_BRAM_ENA = '1') then
hwrite(v_OLINE, O_ADDRB, left, 5);
writeline(file_RESULTS, v_OLINE);
report "Save the output address!";
end if;
end if;
end process;
如果O_ADDRB随着时间的流逝依次具有0000、0001、0002。
然后output_result.txt具有如下数据
0000
0001
0002
答案 0 :(得分:0)
如果您需要换行打印,那么除非您必须一次性完成所有操作,而不必关闭文件然后再次打开(在这种情况下,您可以按照注释中的说明进行操作),否则我可能无法为您提供帮助由user1155120。 但是,如果仅出于调试目的,请使用以下代码在控制台中打印:
library ieee;
use ieee.std_logic_1164.all;
use std.textio.all;
use ieee.std_logic_textio.all;
procedure writeproc(sig: in std_logic_vector; s : string) is
variable li : line;
variable str : string(1 to sig'length);
file f_in : text; -- open read_mode is "output";
file f_out : text; -- open write_mode is "output";
begin
file_open(f_out, "output", write_mode);
write(li, std_logic_vector(sig));
write(li, lf); writeline(f_out, li);
file_close(f_out);
file_open(f_in, "output", read_mode);
readline(f_in, li);
read(li, str);
file_close(f_in);
report "read " & s & str;
end procedure writeproc;