FC2カウンター FPGAの部屋 Vivado HLSの現状について

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

FPGAの部屋

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

Vivado HLSの現状について

今日のfpgaxで、Vivado HLSについて説明不足があったので、ブログで現状を解説します。

・Vivado HLS 2013.2
Vivado HLSでラプラシアン・フィルタ式のみをaxi lite slaveモジュールにして、IP化した。そのIPをソフトウェアから呼び出して使用した。動作を確認すると、完全に動作しました。

Vivado HLSでラプラシアン・フィルタ式のみをaxi lite slaveモジュールにする1
Vivado HLSでラプラシアン・フィルタ式のみをaxi lite slaveモジュールにする2
Vivado HLSでラプラシアン・フィルタ式のみをaxi lite slaveモジュールにする3


このラプラシアン・フィルタの axi lite slave IP を、使ってみたのが、下のブログだ。

Vivado HLSで作ったラプラシアン・フィルタIPを使ってみる1
Vivado HLSで作ったラプラシアン・フィルタIPを使ってみる2
Vivado HLSでラプラシアン・フィルタ式のみをaxi lite slaveモジュールにする3
Vivado HLSで作ったラプラシアン・フィルタIPを使ってみる3


ソフトウェアの実行時間は、約1.94秒となった。完全にソフトウェアで実行した前回の 1.94 / 0.39 ≒ 5 倍になった。遅くなってしまった。AXI4 Lite Slaveバスのアクセスがとっても多いので仕方が無いかもしれない。でラプラシアン・フィルタ式のみをaxi lite slave IP として使用した時のCソースはここに貼ってある
Vivado HLSでAXI4 Lite Slave IPを作ることは、私の例では問題ない。但し、ラプラシアン・フィルタ程度ではハードウェアにオフロードしたほうが遅くなる。

そこで、AXI4 Masterで1画面分のラプラシアン・フィルタを行うIPを作ることにした。

Vivado HLSでラプラシアン・フィルタ関数をaxi masterモジュールにする1
 ・laplacian_filter.c を Vivado HLS でコンパイルできるように書き換えてIPにした。
Vivado HLSでラプラシアン・フィルタ関数をaxi masterモジュールにする2
 ・前回は、カメラ画像フレーム・バッファ読み込み用アドレスとラプラシアン・フィルタの結果を書き出すフレーム・バッファのアドレスは、parameter 指定の固定アドレスだったので、AXI4 Lite Slave でAXI4 Master のRead/Writeするアドレスを渡す仕様に変更した。
Vivado HLSで作ったラプラシアン・フィルタAXI4 Master IPを使う1
 ・”Vivado HLSでラプラシアン・フィルタ関数をaxi masterモジュールにする2”で作ったAXI4 Lite Slave と AXI4 Master の 2種類のAXIバスを実装するラプラシアン・フィルタ IPをXPSのカスタムIPとして使ってみた。
Vivado HLSで作ったラプラシアン・フィルタAXI4 Master IPを使う2
 ・デバックしているが、いまのところ ap_done が上がらずに原因を調査中。Vivado HLSでのSystemC のCo-Simulation をしたところ訳の分からないエラーになった。
Vivado HLSで作ったラプラシアン・フィルタAXI4 Master IPを使う3
ChipScopeで調査したところ、ラプラシアン・データを書き戻すAXI4 Master Writeのアクセスが1個も来ていなかった。これによりペンディングとなる。


・Vivado HLS 2013.3

Vivado HLS 2013.3でラプラシアン・フィルタ関数をaxi masterモジュールにする
 ・Vivado 2013.3 をインストールした。そして、再度、Vivado HLSでラプラシアン・フィルタ関数をaxi masterモジュールにしてみた。
 ・Vivado HLS 2013.3 でも、C Simulation と C/RTL Cosimulation はうまく行かなかった。
 ・IP化は出来た。
Vivado HLS 2013.3 で作ったラプラシアン・フィルタAXI4 Master IPを使う1
 ・ソースファイルを貼り付けた。
 ・AXI4 Master 版ラプラシアン・フィルタを動作されるソフトウェアを実行したが、ap_done が帰ってこない。Vivado 2013.2 の時とソフト的には同様の結果だった。
Vivado HLS 2013.3 で作ったラプラシアン・フィルタAXI4 Master IPを使う2
 Vivado HLS 2013.3 で生成されたラプラシアン・フィルタIPには2つの問題がある。
 1.ap_doneが 1 にならない。
 2.ラプラシアン・フィルタのWriteデータが全て 0 になっている。(最初のラインはすべて0を書いているので、これは正しいです。他のラインがどうなっているかを確認します)

というように、Vivado HLS の AXI4 Lite Slave IPは完璧に動作しているので問題ない。しかし、Vivado HLSを使用した AXI4 Master IP は Co-Simulation が出来ないことや、動作しないという問題がある。私のコードが悪いのかもしれないが、実際のAXI4 Master Write の動作は改善が見られるので、まだ発展状態ではないか?と思った。

(追加)
Vivado HLSについては、pragma でAXI4 Lite 、AXI4 Master 、AXI4 Stream バスも指定することが出来て、簡単にAXIバスIPが書けるので気に入っています。それに、生成されたHDLコードも読みやすいです。その中には、AXI4 Master汎用IPとして使えそうなモジュールもあります。まだ、たぶん(私のコードやマニュアルの読み方が間違っていなければ)発展途上だと思っているので、AXI4 Master IPについては、もう1パージョン待ってみようと思っています。
  1. 2013年11月10日 22:57 |
  2. Vivado HLS
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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