2011-12-10 195 views
1

ファイルを読み書きするためのVHDLコードを書きました。基本的には、ファイルを読み込み、ファイル内のデータを処理し、結果を別のファイルに書き出します。 今、プログラムを複数のテストケースを読み上げるように拡張したいと考えています。たとえば、データは1.txt、2.txtなどの異なるファイルで使用でき、100.txtまで使用できます。 ファイルからデータを1つずつ読み込んで別のファイルに書き出すためにループを使いたいと思っています。誰も助けることができますか?vhdl textioを使用して複数のファイルを読み書きする

type i1 is file of character;      
file f1 : i1 open READ_MODE is "1.txt"; 

これは私がファイルを読み込むために使用しているコードのタイプです。どのようにファイルの配列のためにそれを拡張するには?

答えて

1

私のブログはこちらhttp://parallelpoints.com/node/66/は、関数内からファイルを開いてデータを読み込む方法を示しています。

あなたは関数にstringタイプとしてファイル名を渡し、textファイルを使用することができます:それを開くために

file file_variable : text; 

と...

file_open(file_variable, filename, read_mode); 

を。

バイナリファイルを読み込んでいる場合は、さまざまなシミュレータがさまざまな方法で動作します。 Modelsimはあなたが(おそらく)期待していることをします。私は、EOF文字が読み込まれたときにGHDLが転倒してしまった。ザイリンクスのシミュレータでは、ファイルに特別なヘッダーが必要です。

前処理が必要な場合でも、純粋なテキストに固執するのが最も便利です。

+0

私はこれを探していました:file_open(pgmfile、filename、read_mode); ありがとうございます.. – vipin

0

私は自宅でこれを試すことができないので、これはうまくいかない可能性があります - ファイル名をパラメータとしてprocedureにコードを移動しようとしましたか?その後、単純なforループでそれをラップすることができます。そして、generateループ内の汎用ファイルとしてファイル名を持つ場合のように、すべてを並列処理しようとはしません。

+0

私は約100のファイルを持っています。だから私は別のファイル名があります。私は一般的な方法でファイル名を渡す方法を知らない。 – vipin

0

手順 ( FILE_NAME:文字列中、 ... )read_sample_file ファイルMSGFILEは次のとおりです。テキスト。 ... begin file_open(msgFile、file_name、READ_MODE);

+1

あなたの答えにもう少し詳しくお聞かせください。 – EluciusFTW

関連する問題