[PR]
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
ファイルへの入出力
テストベンチの際に、ファイルへ任意の値を入出力するやり方
1.まず、use ieee.std_logic_textio.all; と、use std.textio.all; を宣言。
2.ファイル型を定義
file read_file text open read_mode is "input.txt"; --入力ファイル
file write_file text open write_mode is "output.txt" --出力ファイル
3.入力ファイルから値の読み出し(値は2進数)
variable read_line : line; --変数のライン型を定義
variable read_value : std_logic_vector();
readline(read_file,read_line); --ファイルの一行を読み出し
read(read_line,read_value); --行中の値を読み出し(信号ではなく変数)
hoge <= read_value; --信号に代入して、後は煮るなり焼くなり
4.出力ファイルへの書き出し
variable write_line : line;
variable write_value : std_logic_vector(); --signalでもok!
write(write_line,write_value,right,10); --10の文字幅で値を行に右詰め格納(値は信号可)
writeline(write_file,write_line); --行をファイルに書き出し
5.バリエーション
oread(); owrite(); --read,writeの8進数ver. bit数は3の倍数
hread(); hwrite(); --read,writeの16進数ver. bit数は4の倍数
条件に満たない場合は適当に&で連結して任意の倍数bit長にしましょう。
--追記
16進数をファイルからreadする場合は
型の大きさより小さい数は、空白を0で埋めなきゃ駄目ですね。
Excelでもそうですしファイル読み取り全般に言えることらしいです。