FC2カウンター FPGAの部屋 Vivado HLS 2014.4 で合成したラプラシアンフィルタIPの高速化7(動作周波数のチューンナップを実機で検証)
fc2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

Vivado HLS 2014.4 で合成したラプラシアンフィルタIPの高速化7(動作周波数のチューンナップを実機で検証)

Vivado HLS 2014.4 で合成したラプラシアンフィルタIPの高速化6(動作周波数のチューンナップ)”の続き。

以下のバグは、FSBLが正しい Hardware Platform Specification を参照していないのが原因でした。詳しくは、”Vivado HLS 2014.4 で合成したラプラシアンフィルタIPの高速化11(性能が最大になる設定を探る4)”を参照下さい。

PIPELINEディレクティブに依って高速化したラプラシアンフィルタIP がVivado HLS 2014.4 の見積値で 250MHz 動作が可能だった。これを実機で検証してみよう。

Vivado HLS 2014.4 で合成したラプラシアンフィルタIPの高速化5(tu1978さんのCソースコードを実機で検証)”で使用したVivado 2014.4 のプロジェクトをコピーして、フォルダ名を V_ZYBO_CAMDfL144_org とした。
このプロジェクトのラプラシアンフィルタIPを、PIPELINEディレクティブに依って高速化したラプラシアンフィルタIP に入れ替えた。
入れ替えると、IPがアップデートされなくなったので、IPを消去して、もう一度、ラプラシアンフィルタIP をAdd IP した。その際にアドレスが振られていないので、そのままインプリメントして実機で検証すると、アドレスが振られていないので、バスエラーとなった。必ず、Address Editor画面は見る習慣を付けたい。なお、ブロック・デザインで、Validate Design を行えばワーニングかエラーが出たと思う。問題解決にはhiratch さんにお世話になりました。ありがとうございました。

さて、PSにFCLK_CLK3 を追加して、FCLK_CLK3 の出力周波数を 250 MHz に設定した。

lap_filter_axim_0 のクロックと、processing_system_7_0_axi_periph (AXI Interconnect) のM03_ACLK 、 axi_mem_intercon_1 (AXI Interconnect) の S00_ACLK, S01_ACLK を FCLK_CLK3 に接続した。

ブロック・デザインを下に示す。
lap_fil_hls_14_4_80_150404.png

これで、論理合成、インプリメント、ビットストリームの生成を行ったが、タイミングでエラーが出てしまった。
lap_fil_hls_14_4_68_150402.png

詳しくタイミングを見てみた。
lap_fil_hls_14_4_69_150402.png

clk_fpga_3 (250MHzクロック)のセットアップ時間が 2 ns くらいのタイミング・エラーになっている。

lap_fil_hls_14_4_70_150402.png

clk_fpga_0 to clk_fpga_3 もセットアップ時間のエラーになっている。こちらはタイミング制約を無視するように設定しよう。

clk_fpga_0 to clk_fpga_3 に False Path を設定する。
lap_fil_hls_14_4_71_150402.png

False Path を設定できた。
lap_fil_hls_14_4_72_150402.png

250MHzの動作周波数では、clk_fpga_3 のセットアップ時間も満たしていなかったので、今度は、PS のFCLK_CLK3 を 200MHz に設定してみた。
lap_fil_hls_14_4_78_150403.png

論理合成、インプリメント、ビットストリームの生成を行ったが、やはりタイミングでエラーが出てしまった。
lap_fil_hls_14_4_79_150404.png

次にPS のFCLK_CLK3 を 166.66667MHz に設定してみた。
lap_fil_hls_14_4_73_150402.png

論理合成、インプリメント、ビットストリームの生成を行った。今度は成功した。
lap_fil_hls_14_4_74_150403.png

ハードウェアをエクスポートして、SDKを立ちあげた。

BOOT.bin を生成した。

BOOT.bin を Micro SDカードに入れて、ZYBOに挿入して電源ONした。

./cam_disp_uio コマンドでカメラ画像を表示させた。

./lap_fil_hls_1shot コマンドでラプラシアンフィルタ処理を行った。下の結果はバグが有る状態での結果です。
lap_fil_hls_14_4_75_150404.png

設定も含めたラプラシアンフィルタ全体の処理時間が 119.8 ms、ラプラシアンフィルタ処理のみの時間が 104.4 ms だった。

(2015/04/13:追記)設定も含めたラプラシアンフィルタ全体の処理時間が 78.4 ms、ラプラシアンフィルタ処理のみの時間が 63.0 ms だった。
lap_fil_hls_14_4_122_150413.png

100MHz動作周波数の時の設定も含めたラプラシアンフィルタ全体の処理時間は、約 71.4 ms だったので、かなり遅くなっている。少し遅くなっている。

シミュレーション結果のDMA Write の間隔は、169.8 us だった。

ラプラシアンフィルタ処理のみの時間を計算してみよう。

169.8 us /1.6666667 * 600 行 ≒ 61.1 ms

となった。
実機で計測した 104.4 ms との間に差があるので、何らかの原因があるのかもしれない?

計算値と実測値がだいたい合っている。
  1. 2015年04月04日 05:53 |
  2. Vivado HLS
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
https://marsee101.blog.fc2.com/tb.php/3111-ee2e9c8b
この記事にトラックバックする(FC2ブログユーザー)