トップ 一覧 Farm 検索 ヘルプ RSS ログイン

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