FC2カウンター FPGAの部屋 2013年11月10日
FC2ブログ

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

FPGAの部屋

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

坂東ハーフマラソン、FPGAXに参加

今日は、坂東いわい将門ハーフマラソンの5Kmの部に参加してから、FPGAXで発表してきました。

朝、6時30分ころ家を車で出発して7時ちょっと過ぎに坂東マラソンに会場に着きました。すでにすごい車の量です。交通の便はあまり良くないので、ほとんどの人が車で来ると思います。
奥さんの10kmのスタートは10時10分、5kmのスタートは10時20分なので、最初はプラプラ歩いてお店のテントを見ていました。ここにはランナーに関係するグッズ、ウェアとかサングラスとかGPSウォッチなどを並べいているお店のテントが6つ位ありました。そこを冷やかしていると、今日は結構寒いのに手袋を忘れたことを思い出して手袋を買いました。680円でした。
その後、会場内のトラックをゆっくり2周して、ストレッチを行いました。
bando_1_131110.jpg

そうそう、有森裕子さんがゲストで来ていました。かなり元気ですね。ランナーとハイタッチしていました。うちの奥さんもハイタッチしたそうです。
bando_2_131110.jpg

ゼッケンを安全ピン4個で付けます。これにはNFCのICタグが入っていて、スタート地点とゴール地点のセンサを通過することで、タイムを自動的に計測してくれます。

奥さんの10kmが10時10分にスタートしてから、上着を置いて、長袖シャツ1枚になって、スタート地点へ。しまった、帽子をかぶってきちゃいました。仕方がないので、そのままスタート。
最初は6分30秒/km くらいで走ってました。人を抜いて上がっていきます。走りだして500mくらいで、5分45秒/km位になってしまったので、少しペースを抑えて、5分55秒/kmくらいにします。
岩井の町の中を通って、折り返しがスタートから2.94kmくらいでした。結構苦しいです。給水があったので、取りました。普通は5kmくらいでは給水を取ることは無いのですが、どうしても1度取ってみたかったので、もらって飲んでみました。スポーツドリンクだったんですが、とても薄く水みたいでした。

最後は、下り坂なので、加速して数人抜きました。そこを過ぎるとトラックに入ります。最後にスパートして5人くらい抜きました。5kmで29分48秒でした。年代別で55位です。給水で20~30秒ロスしましたが、それでも30分を切れたので、満足です。

奥さんは10kmを52分台で、年代別で9位でした。調子が良く50分台だったらお立ち台でしたね。6位までお立ち台がありました。

その後、レタス(田舎なので野菜をもらえます)豚汁サービスとバナナ、とアクエリアスをもらいました。

すぐに家に帰って、着替えて、今度はFPGAXのために東京に行きました。
やはり、疲れていますね。電車で居眠りしていました。体力がなくなっているため、コンビニで甘いものを買って食べながら会場へ。会場のビルの下には関係者が集まっていました。そこの会社の方に案内されて会場に。

最初のFPGA vs GPU の話を聞きながら、次の私の話と対極にあるなと感じていました。正直美味しかったです。つまり、次の私の話と対比がとっても面白いと感じました。

私の話は、いろいろな方に話すのに、ちょっとわかりにくかったかな?と思いましたが、文句は出ませんでしたね。

高位合成の話は、正直よくわからなかったんですが、凄いというのは分かりました。

次はビールとピザで乾杯です。私はビールは飲めないので、お茶で。ピザはたくさんありました。美味しかったです。

Moving Computation to the Data はとっても興味深い内容でした。私が今やっていることとも共通点がありました。

今日はUSTされているのを忘れちゃって、ちょっと言い過ぎたところもありましたが、どうぞご勘弁ください。
とても楽しかったです。またFPGXに参加したいと思います。

資料は公開したほうが良いでしょうか? SlideShareで公開すれば良いのかな?これって後で消せるのだろうか?

(2013/11/11:追記)
FPGAXで発表したプレゼン資料を公開しました。
  1. 2013年11月10日 23:59 |
  2. 日記
  3. | トラックバック:0
  4. | コメント:0

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