- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
!FreeHDLでtextio
VHDLのtextioを使ったシミュレーションをFreeHDLでやってみた.
ieee.std_logic_textioがないみたいなので,std.textioで頑張る.
# つまりhreadが使えない.
たとえば,
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
library std;
use std.textio.all;
entity test is
end test;
architecture Behavior of test is
signal a : std_logic_vector(7 downto 0);
signal clk : std_logic;
file src : text open read_mode is "in_file_name";
begin
process
begin
for i in 1 to 10 loop
clk <= '0'; wait for 50 ns;
clk <= '1'; wait for 50 ns;
end loop;
wait;
end process;
process
variable l : line;
variable var_a : bit_vector(7 downto 0);
begin
wait until CLK'event and CLK = '1';
readline(src, l); -- 1行読む
read(l, var_a); -- デリミタ(空白)までを切り出して変数に代入
a <= to_stdlogicvector(var_a); -- std_logic_vectorに変換して代入
end process;
end Behavior;
書き出すファイルが欲しければ,
file dest : text open write_mode is "out_file_name";
とかして定義して,
write(l, string'("test"));
writeline(dest, l);
とすれば,書き出せる.標準出力に書き出したいときは,
destの代わりにoutputと書くとよい...みたい.
readlineで読んだデータは空白で分割されて,
readの記述順に従って変数に格納される.
実行時に開きたいファイルがあれば,実行中にデータを書き足しても
ちゃんと読んでくれるよう.便利〜♪