我想new line
在输出文件中用字符分隔数据,但是以下代码导致错误“无法解决过程调用的重载”:
write(out_line, "\n");
write(out_line, "");
write(out_line, '');
我想如何使用它的示例代码:
ENTITY writer IS
PORT ( clk : IN STD_LOGIC := '0'; start : IN STD_LOGIC := '0');
END ENTITY;
ARCHITECTURE arch OF writer IS
SIGNAL vect : STD_LOGIC_VECTOR (2 downto 0) := "000";
TYPE state_type IS (init, write_file);
SIGNAL state : state_type := init;
BEGIN
PROCESS (clk, start)
FILE out_file : text;
VARIABLE out_line : line;
BEGIN
IF rising_edge(clk) THEN
CASE state IS
WHEN init =>
IF start = '1' THEN
state <= write_file;
ELSE
state <= init;
END IF;
WHEN write_file =>
state => init;
FOR i IN 0 TO 10 LOOP
write(out_line, vect);
writeline(out_file, out_line);
-- write(out_line, "\n"); <--
-- write(out_line, ""); <--
-- write(out_line, ''); <-- None of these work
writeline(out_file, out_line);
END LOOP;
END CASE;
END IF;
END PROCESS;
END ARCHITECTURE;
所以我想知道,在VHDL中可以吗?如果是,怎么办?
以下内容将始终为你提供一个空白行:
write(out_line, string'(""));
writeline(out_file, out_line);
我怀疑@Dani发布的内容可能与工具有关。例如,在一个流行的模拟器上,以下代码将产生一个换行符:
write(out_line, LF);
writeline(out_file, out_line);
但是,当我在LF后面添加一个空格时,我得到两行:
write(out_line, LF & ' ');
writeline(out_file, out_line);
如果未分配out_line,将其释放(取消分配调用或写行),则会在随后的写行中出现空白行-“如果参数L在调用开始时包含空访问值,则将写入空字符串到一个或多个文件。” (与-1993年相同。)这对您的“一个流行的模拟器”有用吗?它应该避免在假定的空白行上包含任何字符。注意,如图所示,OP的代码已注释掉中间的写过程,并且应在for循环中为第二个过程写行产生空白行。也许使用了“一个流行的模拟器”?