FC2カウンター FPGAの部屋 Vivado HLS 2014.4 の高位合成テスト17(ラプラシアンフィルタ12、Clock Period = 2.5 ns の場合のインプリメント)

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

FPGAの部屋

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

Vivado HLS 2014.4 の高位合成テスト17(ラプラシアンフィルタ12、Clock Period = 2.5 ns の場合のインプリメント)

Vivado HLS 2014.4 の高位合成テスト16(ラプラシアンフィルタ11、Clock Period = 4 ns の場合のインプリメント)”の続き。

前回は、Clock Period = 4 ns (250MHz)の場合、つまり、Latency = 7 クロックの条件で、ラプラシアンフィルタのCソースからVivado HLS 2014.4 で高位合成されたVerilog HDLファイルをVivado 2014.4でインプリメントして、250MHzつまり 4 ns の遅延で実際に動作するようにインプリメントできるかを確認して成功した。Vivado 2014.4のプロジェクトの使用するFPGAはZYBOに使用されている xc7z010clg400-1 だ。これは今回も同様にVivado 2014.4のプロジェクトで使用する。

今回は、Clock Period = 2.5 ns で、ラプラシアンフィルタのCソースからVivado HLS 2014.4 で高位合成されたVerilog HDLファイルをVivado 2014.4でインプリメントして、400MHzつまり 2.5 ns の遅延で実際に動作するようにインプリメントできるかを確認する。

まずは、Vivado HLS 2014.4 で、Solution Settings ダイアログの左のペインでSynthesis を選択してClock Period のテキストボックスに 2.5 と入力してから、C Synthesis を行った。結果を下に示す。
Vivado_HLS_Study_80_150122.png

Latency は 16 クロックだった。リソースはFFを 1241 個、LUTを 521 個消費する。

Analysis の Resource タブを見た。
Vivado_HLS_Study_84_150123.png

演算が2クロックで行われている。この演算も独立に演算することができるはずなので、もっと演算リソースを使えば並列に行うことができると思う。つまりレイテンシを短くすることができるはずだ。そして、そのためのディレクティブがあるはずだ。後で調べてみよう。

Vivado HLS 2014.4 の作業が終了したので、ラプラシアンフィルタの Verilog HDL ファイルを Vivado 2014.4 のプロジェクトにコピーした。今回は、laplacian_filter.v だけではなく、laplacian_filter_add_32ns_32ns_32_2.v と laplacian_filter_sub_32ns_32ns_32_2.v が追加されていた。
Vivado_HLS_Study_81_150122.png

Vivado 2014.4 のプロジェクトを示す。
Vivado_HLS_Study_82_150122.png

論理合成を行って、成功した。
タイミング制約を クロック周期 = 2.5 ns に変更した。

create_clock -period 2.500 -name ap_clk -waveform {0.000 1.250} [get_ports ap_clk]


インプリメントを行って、成功した。タイミング制約も満足している。ZYBO が 400MHz で動作するとは思わなかった。

Implemented Design で Report Timing Summary をクリックして Timing Summary を見た。
Vivado_HLS_Study_83_150122.png

ラプラシアンフィルタ内のレジスタ間の遅延が最大 2.231 ns に収まっている。

Implemented Design で Report Utilization を見た。
Vivado_HLS_Study_85_150123.png

laplacian_filter.v のLUT使用数は、461 個だった。Vivado HLS での値は 521 個だったので、60 個減った。
次に、FF使用数は 856 個だった。Vivado HLS での値は 1241 だったので、385 個減っている。

これで、ラプラシアンフィルタがZYBO で 400MHz の動作周波数で動作することがわかった。正直、ここまで動作周波数が行くなんて思ってなかった。驚きだ。
Vivado HLS 2014.4 で PIPELINE ディレクティブを追加してラプラシアンフィルタを高位合成すると、必要とする動作周波数に応じて異なるレイテンシの HDL を出力してくれる。これはとっても便利だ。

レイテンシとスループットを同時に満たす必要がある分野でFPGAをHDLで設計しているとレイテンシをギリギリまで切り詰めて設計するので、どうやっても動作周波数が確保できない時がある。HDLで作っているとパイプラインの段数を増やすことになり、HDLを書きなおす必要が出てくる。
C及びC++からの高位合成でアルゴリズムを書いておけば、動作周波数によって、レイテンシを自動で決定してくれるので、ソースを書き直す必要がなく、とっても便利だと思う。
  1. 2015年01月23日 04:58 |
  2. Vivado HLS
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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