FC2カウンター FPGAの部屋 Vivado HLS 2014.1でラプラシアン・フィルタ関数をaxi masterモジュールにする4(ChipScope Proでデバック)
FC2ブログ

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

FPGAの部屋

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

Vivado HLS 2014.1でラプラシアン・フィルタ関数をaxi masterモジュールにする4(ChipScope Proでデバック)

Vivado HLS 2014.1でラプラシアン・フィルタ関数をaxi masterモジュールにする3(単体シミュレーション)”の続き。

前回はシミュレーションを行ったが、シミュレーションでは、Vivado HLS 2013.4 で出力したラプラシアンフィルタIPと総違いは無かった。今回はChipScope Proで実際のAXIバスの波形を観察した。

最初にカメラ・データのメモリReadトランザクションから下に示す。これは、Readの最初のトランザクションだ。(図1)
Vivado_HLS_2014_1_16_140425.png

多少のReadレイテンシはあるが、バースト転送中は、Waitが全くなく転送できている。Readレイテンシは一定のようなので、次のアドレスを先に投入することは無さそうだ。AXIバスのアドレス・チャネルを先行して投入されているので、少々勿体無い気がする。2番めと3番目のReadレイテンシは隠蔽することが可能だと思う。

最初のアドレス・チャネルを拡大した。(図2)
Vivado_HLS_2014_1_17_140425.png

最初のアドレスは 0x19907000 だった。次のアドレスは、0x19907400, 0x19907800 だ。3つのアクセスは256バーストだった。

次に、ラプラシアンフィルタ処理後のメモリWriteトランザクションを下に示す。(図3)
Vivado_HLS_2014_1_18_140425.png

最初のアドレス・チャネルを拡大した。(図4)
Vivado_HLS_2014_1_19_140425.png 

スタートのアドレスは、0x19ADC000 だった。

こちらは、Writeアクセスなので、アドレス・チャネルはオーバーラップしていないようだ。BVALIDのアサートががAWVALID、WVALIDのアサートの後に来ているので、リスポンス・チャネルとアドレス・チャネル、データ・チャネルはオーバーラップされている。面白いのが、WREADYのアサートだ。一旦アサートされて、すぐにディアサートされ、少し時間が立ってからアサートされている。2番めのトランザクションの始まりの部分を拡大してみよう。(図5)
Vivado_HLS_2014_1_22_140425.png

WLASTがアサートされてデータ・チャネルが終了後に、リスポンス・チャネルの完了を待たずにアドレス・チャネルのトランザクションがスタートしている。データ・チャネルのWVALIDも次のクロックでアサートされて、その2クロック後にWREADYもアサートされるが、2クロック後にWREADYがディアサートされる。その後、BVALIDがアサートされて、前の Writeトランザクションが完了したあとで、WREADYが一旦ディアサートされてから、18クロック後にまたアサートされている。たぶんバッファが2つしか無くてので、DDR3 SDRAMコントローラが受け入れ可能になるのを待っていのだろうと思う。(推測です)

さて、現在やることは、シミュレーションの様にVivado HLS 2014.1で作ったラプラシアンフィルタのIPが動作しているのかを確かめることだ。違う性能の検証をやっていてもしょうがないので、現在のRead, Writeトランザクションの後のトランザクションの前の間隔を見ることにした。”Vivado HLS 2014.1でラプラシアン・フィルタ関数をaxi masterモジュールにする3(単体シミュレーション)”によると、約 146usec となっている。ChiScopeで見られる現在の限界は約1000クロック x 10 nsec = 10 usec なので、前のトランザクションは見えないが、10 usec 以上離れているかどうか?は見える。

シミュレーション波形を下に示す。
Vivado_HLS_2014_1_15_140424.png

Readトランザクションのシミュレーション波形から、スタート・アドレスの 0x19907000 から 0xC80(1ライン分のアドレス増分)X 3 ライン分過ぎれば定常状態なので、0x19909580 のアドレスの時にAWVALIDがアサートされた時の前が定常状態となる。そこをトリガしてみてみた。トリガポイントは1000クロック後にしてある。
Vivado_HLS_2014_1_20_140425.png

1000 クロック前に、トランザクションがないので、前のトランザクションと 10 usec 以上離れている。

Writeトランザクションのシミュレーション波形から、スタート・アドレス 0x19ADC000 から 0xC80(1ライン分のアドレス増分)X 2 ライン分過ぎれば定常状態なので、0x19ADD900 のアドレスの時にAWVALIDがアサートされた時の前が定常状態となる。そこをトリガしてみてみた。トリガポイントは1000クロック後にしてある。
Vivado_HLS_2014_1_21_140425.png

1000 クロック前に、トランザクションがないので、前のトランザクションと 10 usec 以上離れている。
  1. 2014年04月25日 05:27 |
  2. Vivado HLS
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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