FC2カウンター FPGAの部屋 Vivado HLS 2014.1でラプラシアン・フィルタ関数をaxi masterモジュールにする8(パイプライン化ソースを実機テスト3)
fc2ブログ

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

FPGAの部屋

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

Vivado HLS 2014.1でラプラシアン・フィルタ関数をaxi masterモジュールにする8(パイプライン化ソースを実機テスト3)

Vivado HLS 2014.1でラプラシアン・フィルタ関数をaxi masterモジュールにする7(パイプライン化ソースを実機テスト2)”の続き。

(2014/06/08:時間計測にバグがあったので、大幅に結果を書き換えました)
前回、インプリメント時のタイミング制約のエラーが消えなかった。そこで、Vivado HLS 2014.1 のラプラシアンフィルタのIPの動作クロックを 100MHz か 90MHz にすることにした。計算上の限界は 94MHz だったが、XPSのClock Generator IP に 94MHz に動作クロックを設定したら、エラーになってしまったので、90MHz とすることにした。

・XPSの clock_generator_0 をダブルクリックして、ダイアログを立ちあげて、CLKOUT2 の Required Frequency (Hz) に 90000000 (90MHz) を設定した。
Vivado_HLS_2014_1_37_140606.png

・XPS上での clock_generator_0 の様子を下図に示す。CLKOUT2 が追加されている。
Vivado_HLS_2014_1_38_140606.png

・、Vivado HLS 2014.1 のラプラシアンフィルタのIP (lap_filter_axim_top_0) の動作クロックは、PSの FCLK_CLK0 が供給されている。これは、100MHz のクロックだ。
Vivado_HLS_2014_1_39_140606.png

・それらのクロックを、clock_generator_0::CLKOUT2 に変更した。
Vivado_HLS_2014_1_40_140606.png

・これでインプリメントを行ったところ、-0.026 ns だが、タイミング制約エラーが出てしまった。
Vivado_HLS_2014_1_41_140606.png

・この程度だったら、Map Properties のコストテーブルの値を変えてインプリメントしてみることで、解消できるだろう。Project Navigator のMap Properties の Starting Placer Cost Table (1-100) を 2 に変更した。
Vivado_HLS_2014_1_42_140607.png

・これで、Project Navigator でインプリメント、ビットストリームの生成を行ったが、タイミング制約エラーが無くなった。
Vivado_HLS_2014_1_43_140607.png

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

・Create Boot Image でSDカードのブートイメージを作製して、SDカードにコピーした。

・ZedBoardにSDカードを挿入して電源ONした。

・Tera Termを立ちあげて、./lap_fil_hls_axim.elf を起動して、Vivado HLS 2014.1 で作製したラプラシアンフィルタIPを起動すると、実行時間は 36 ms 程度だった。./laplacian_filter.elf コマンドは、ソフトウェアでラプラシアンフィルタを実行した時の実行時間を示す。実行時間は 400ms 程度だった。./lap_filter_axim.elf コマンドは自作HDLによるラプラシアンフィルタIPの実行時間を示す。実行時間は 17ms 程度だった。(但し、この時間計測はソフトウェアの開始時にタイマーセットして、ソフトウェアの最後に時間計測を停止して、時間を表示している)
Vivado_HLS_2014_1_45_140607.png

・下に、ラプラシアンフィルタ処理を行う前の原画像を示す。
Vivado_HLS_2014_1_46_140608.jpg

・Vivado HLS 2014.1 で作製したラプラシアンフィルタIPを起動した時のラプラシアンフィルタ処理後の画像を示す。
Vivado_HLS_2014_1_47_140608.jpg

tu1978 さんに教えて頂いたラプラシアンフィルタ処理をパイプライン化するCソースをVivado HLS 2014.1 でIPすると、ISEでインプリメントするときに、100MHzでは動作せず(10 ns に制約をVivado HLS 2014.1 でかけていたのだが)、90MHzでの動作になった。そのラプラシアンフィルタ処理時間は、約 36 ms だった。
自分で作ったラプラシアンフィルタ処理のCソースを使用したラプラシアンフィルタIPの処理時間は、約 98 ms だったので、2.7倍程度、ラプラシアンフィルタ処理をパイプライン化したほうが速くなった。(”Vivado HLS 2014.1でラプラシアン・フィルタ関数をaxi masterモジュールにする2(実機でテスト)”参照)
しかし、HDLで自作したラプラシアンフィルタIPの実行時間 17 ms からは2倍程度遅い。(”AXI4 Master アクセスのラプラシアン・フィルタ IP9(できた。完成)”参照)
(追加:ソフトウェアとHLS IPとの比較は、400 ms / 36 ms ≒11倍程度早くなっているので、有効だといえる)

今のところは、意図した回路になるように、Cソースを書き換える必要があるようだ。これでもAXIバス・インターフェースを自動生成してくれたりするので、便利なのだが、どうのような形にCソースを変更すれば、所望の回路になるのかがよくわからない。できれば、Vivado HLSでソースの修正を行わずに性能が向上できれば良いと思った。
  1. 2014年06月08日 05:19 |
  2. Vivado HLS
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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