FC2カウンター FPGAの部屋 HLS ビデオライブラリの hls::LineBuffer のVivado HLS 2015.4 以前とその後での変更点1(メモリ・ライン・バッファー)

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

FPGAの部屋

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

HLS ビデオライブラリの hls::LineBuffer のVivado HLS 2015.4 以前とその後での変更点1(メモリ・ライン・バッファー)

ガボール・フィルタ (Gabor Filter) による白線検出5(hls::LineBuffer と hls::Window を使用2)”などで、Vivado HLS のHLS ビデオライブラリのhls::LineBuffer と hls::Window を使用してガボール・フィルタを実装した。

この時は知らなかったが、Vivado HLS 2016.1 から hls::LineBuffer と hls::Window のクラス・メソッドが大きく変更になった。Vivado HLS 2015.4 までは、 hls::LineBuffer と hls::Window の配列の並びは、列はインデックス 0 からなのだが、行はインデックス「行の配列の最大数」かになっていた。”Vivado Design Suite ユーザー ガイド 高位合成 UG902 (v2015.4) 2015 年 11 月 24 日”の”メモリ・ライン・バッファー”の193 ページの”表 2‐7 : LineBuffer 例のデー タ セッ ト”を引用する。
gabor_filter_lh2_1_170725.png

行が行2 から始まって、行1 、行0 とインデックスが減っているのが分かるだろうか?列は列0 から始まって増えていっている。
メモリ・ライン・バッファーの値を更新するためにメモリ・ライン・バッファーの現在処理している列を上方向にシフトするのだが、Vivado HLS 2015.4 まででは、shift_down() メソッドを使用する。とっても紛らわしい。その後、現在のピクセル値を挿入するには、insert_bottom() メソッドを使用する。

Vivado HLS 2016.1 からは、この行のインデックスが通常と同様にインデックス 0 からとなっている。
下に、”Vivado Design Suite ユーザー ガイド 高位合成 UG902 (v2017.1) 2017 年 4 月 5 日”の”HLS ビデオライブラリ”の ” 2‐6: LineBuffer 例のデー タ セッ ト”を引用する。
gabor_filter_lh2_2_170725.png

行のインデックスが列のインデックス同様に 0 から始まっているのが分かると思う。
メモリ・ライン・バッファーのメソッドも更新されている。下に、メモリ・ライン・バッファーのメソッドを示す。

• shift_pixels_up()
• shift_pixels_down()
• insert_bottom_row()
• insert_top_row()
• getval(row,column)


上に示すように、今まで使用していた shift_down() メソッドが無くなっている。ただし、互換性確保のためにshift_down() メソッドというか、Vivado HLS 2015.4 以前のコードも使用することができた。
Vivado HLS 2015.4 以前のコードをVivado HLS 2016.1 以降のコードに書き直すと、shift_pixels_up() メソッドで現在処理している列を上方向にシフトし、insert_bottom_row() で現在のピクセル値を挿入する。
  1. 2017年07月25日 04:47 |
  2. Vivado HLS
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

トラックバック URL
http://marsee101.blog19.fc2.com/tb.php/3863-e5f67eef
この記事にトラックバックする(FC2ブログユーザー)