NI製品ディスカッション

キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

ケースストラクチャを用いたプログラムの最適化

解決済み
解決策を見る

LabVIEW_FPGAでcompactRIOに書き込むプログラムを作成しています。

入力信号に応じて、処理Aか処理Bの演算値のどちらかを出力するプログラムですが、

どちらの処理も大規模でFPGAのリソース使用量がギリギリという状況です。

 

プログラムの動作としては、入力信号を用いて処理Aと処理Bが同時平行で演算し、

「選択関数(三角形のブロック)」で演算値の選択をし、外部へ出力しています。

 

そこで、ケースストラクチャに処理A、処理BをそれぞれTrueケース、Falseケースに入れ、

入力信号に応じて処理を選択するようなプログラムに変更しようと考えています。

 

このような、プログラムの変更でFPGAのリソース量が減らせることは可能でしょうか。

0 件の賞賛
メッセージ1/6
2,724件の閲覧回数
解決策
トピック作成者Katori_Senkoが受理

やったことがないので確証はありませんが、どちらの処理もFPGAに焼かなければならないので、原理的には減らないと思います。

海外で過去にも同様の質問があったようなので、もし参考になれば。

http://forums.ni.com/t5/LabVIEW/case-structure-execution-on-a-FPGA/td-p/1076046

 

やり直しも効きますし、ハードウェアとVIがお手元にあるようなので、とりあえずやってみてはいかがでしょう。もちろん、コンパイルに時間はかかってしまいますが。

0 件の賞賛
メッセージ2/6
2,681件の閲覧回数

Merly さん

ご回答ありがとうございます。

 

先ほど試しにやってみたところ、使用率が98%⇒92%になるくらいでした。

0 件の賞賛
メッセージ3/6
2,657件の閲覧回数

FPGAの演算ということですが、割り算などFPGAリソースを大量に使用してしまうような関数はお使いではありませんでしょうか。FPGAでは一部の関数はリソースを大量に使用するため使用は避けるべきです。

割り算を使用しない演算方法についてこのようなサンプルがありますがご覧になったことはありますでしょうか。

http://forums.ni.com/t5/Example-Program-Drafts/%E5%95%86-%E4%BD%99%E3%82%8A-%E9%96%A2%E6%95%B0%E3%82...

 

0 件の賞賛
メッセージ4/6
2,638件の閲覧回数

pipipi0405 さん

コメントありがうございます。

 

「割り算」関数、「商&余り」関数は使用しておりません。

その代りに、「掛け算」関数、「逆数(高スループット)」関数を使用しております。

 

・定数で割る場合

定数の逆数を「掛け算」関数で掛ける。

(ex. 4で割る→1/4(0.25)を掛ける)

 

・変数で割る場合

変数を「逆数(高スループット)」関数に通し、「掛け算」関数で掛ける。

0 件の賞賛
メッセージ5/6
2,633件の閲覧回数

ご報告ありがとうございます。なるほど、少しは減るんですね。

ランダムなコンパイルを行う中で平均的にどれだけ減るのかは分かりませんが、ホントにギリギリの時には有効なのかもしれませんね。

0 件の賞賛
メッセージ6/6
2,623件の閲覧回数