Diary/2008-8-28
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の記述順に従って変数に格納される.
実行時に開きたいファイルがあれば,実行中にデータを書き足しても
ちゃんと読んでくれるよう.便利〜♪