VisualApplets FAQ: FPGA画像処理はどれだけ早いのか?

FPGAによる画像処理の一つの特長として、その超高速な処理が挙げられます。どの様な複雑なアルゴリズムであっても、FPGAの上では超高速かつ安定した時間で処理を終える事ができ、画像処理アプリケーションの高速化、安定性に大きく貢献します。

では具体的にFPGAの処理はどれぐらい早いのでしょうか。本号ではVisualAppletsをお使いのお客様がまず興味を持たれる「実際にかかっている処理時間の計測」を行うデザインの書き方と、実際にその計測結果をご紹介します。

imgLE01

実践VisualApplets: FPGA処理時間計測デザイン作成

今回は、処理時間の計測として5x5のメディアンフィルタに要する時間を計測します。まずVisualAppletsでメディアンフィルタを行うプログラムデザインはこのようになり、この緑の部分が計測したい処理部分となります。

imgLE02

このメディアンフィルタにかかる時間を計測するプログラムは以下の様になります。計測したい処理部分を挟む形で分岐が入り、その分岐を右側オレンジの計測デザインへ渡しています。こうする事でこの水色の2つの分岐の間にどれだけの時間を要したかを計測する事が可能となります。

imgLE03

プログラムをダウンロード

オペレーター技術解説

・[FrameStartToSignal]は、画像の先頭データが送られたタイミングで信号を生成しす。StartSignalはメディアンフィルタを行う前の先頭ピクセルのタイミングで信号を生成し、EndSignalがメディアンフィルタを終えた後の先頭ピクセルのタイミングで信号を生成します。もしメディアンフィルタが無い場合、StartSignalとEndSignalは同じとなり、処理時間はゼロとなります。

・[SignalToDelay]は2つの信号の入力に対して、どれだけのタイミング差があったかを計測します。今回はStartSignalとEndSignalのそれぞれの信号が生成されるまで何クロック要したかを計測する事で、その処理に要した時間を計測します。

・[GetStatus]はその値をアプリケーションから数値として取得する際に使用します。これによりアプリケーションからProcessingTimeという変数名で結果の取得が可能となりました。実際に要する時間はカメラを繋いで画像を取り込みながら確認する必要があります。上記のデザインを実行すると、ProcessingTimeは以下の様になりました。

imgLE04

この668という値がメディアンフィルタを実行するのにFPGAが何クロックを要したかを表します。今回使用したMarathon-VCLは1回のクロックが8nsecで動作しており、そのため処理時間として5.34μ秒(668 x 8nsec)がかかっている事がわかります。


技術検証: FPGAの処理速度と安定性

FPGAによるメリットは高速性の他にその安定した処理時間が挙げられます。実際にどれだけの安定性が得られるのか検証を行いました。今回は比較としてCPUの負荷が無い場合、負荷が非常に高い場合(CPU使用率100%)の2ケースにて、処理時間がどの様に変化するか1000回の計測を行いました。

imgLE05

上記の通りFPGAではCPUの状態に影響を受けることなく非常に安定した数値が得られました。どの様なCPU環境化であっても常に安定した処理時間を実現でき、システムとしての安定性向上、処理時間の短縮に大きく貢献できる、ここがFPGA画像処理の大きなメリットとなります。

※LinX Express 配信の中止・アドレスの変更をご希望の方は、お手数ですがこちらよりお問い合わせください。