FC2カウンター FPGAの部屋 ZYBO Linux (Ubuntu 14.04 LTS) 上でMakefile を作ってラプラシアンフィルタIPの制御ソフトをコンパイル3

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

FPGAの部屋

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

ZYBO Linux (Ubuntu 14.04 LTS) 上でMakefile を作ってラプラシアンフィルタIPの制御ソフトをコンパイル3

Vivado HLS 2014.1 でラプラシアンフィルタIPを作って、Vivado 2014.4 のプロジェクトを新規作成し、ブロック・デザインを構築していく過程で、ラプラシアンフィルタ IP のAXI4 Master バスは、カメラ・コントローラー IPとビットマップ・ディスプレイ・コントローラー IP のAXI4 Master が入っている AXI Interconnect に入っている。これをラプラシアンフィルタ IP 独自の AXI Interconnect にして、Zynq PS の AXI HP2 ポートに入れたらどうだろう?と考えた。
とりあえず、これを Vivado HLS 2014.1 で作ったラプラシアンフィルタ IP を試す前にやってみることにした。
なお、”ZYBO Linux (Ubuntu 14.04 LTS) 上でMakefile を作ってラプラシアンフィルタIPの制御ソフトをコンパイル2”の続きということになる。

以前のブロック・デザインの V_ZYBO_CAMDfL を下に示す。
Vivado_HLS_lap_filter_35_150208.png

今回、ラプラシアンフィルタ IP 独自の AXI Interconnect にして、Zynq PS の AXI HP2 ポートに入れた時のブロック・デザインを下に示す。
Vivado_HLS_lap_filter_67_150301.png

これで、論理合成、インプリメント、ビットストリームの生成を行い、ハードウェアをエクスポートして、SDKを立ちあげて、BOOT.bin を生成した。そのBOOT.bin を MicroSDカードの BOOT.bin と入れ替えて ZYBO に挿入した。
電源ON で Ubuntu 14.04 LTS が立ち上がる。
SSHでログインして、Apps/lap_fil_hls_1shot ディレクトリに cd する。
./cam_disp_uio を起動する。これでカメラの表示がONとなる。
./lap_fil_hls_1shot でラプラシアンフィルタ IP を起動してラプラシアンフィルタ処理を行った所、変換処理には約 27 秒かかるもののラプラシアンフィルタの変換を行っている間にディスプレイの画面が乱れなくなった。
Vivado_HLS_lap_filter_68_150302.png

画面の乱れは、ビットマップ・ディスプレイ・コントローラー IP のDMA が間に合ってなくて、表示ピクセルを溜めておく非同期FIFO が Empty になってしまったのだと思う。
カメラ・コントローラー IP の AXI4 バスの使用率は 800 x 600 ピクセル画像の 15 fps なので、800 x 600 x 15 fps x 4 byte = 28.8 Mbyte/sec (Write Only)
ビットマップ・ディスプレイ・コントローラー IP のAXI4 バスの使用率は、800 x 600 ピクセル画像の 60 fps なので、800 x 600 x 60 fps x 4byte = 115.2 Mbyte/sec (Read Only)
ラプラシアンフィルタ IP のAXI4 バス幅は32ビットで、どの位、バスを専有してるか未知数だが、フルにメモリ帯域を使ったとして計算してみると、100 MHz x 4 byte (32ビット幅) = 400Mbyte/sec (Read/Write 同じ)

3つの合計で Write は、28.8 + 400 = 428.8 Mbyte/sec、Read は 115.2 + 400 = 515.2 Mbyte/sec となった。

Zynq の AXI_HP0, AXI_HP2 のデータ・バス幅は64ビット幅で 100MHz なので、1ポートあたりのバス帯域は、100 MHz x 8 byte (64ビット幅) = 800 Mbyte/sec (Read/Write 同じ)

Write のバス帯域使用率は、428.8 / 800 x 100 = 53.6 %
Read のバス帯域使用率は、512.2 / 800 x 100 = 64.0 %

Read のバス帯域使用率は 64 % となった。割と使用率が高いが、ビットマップ・ディスプレイ・コントローラー IP のDMA が間に合わないのはおかしい気もする。ラプラシアンフィルタ IP のバス帯域使用率は、最大値を見込んでいるのであるし、64 % よりも低いと思われる。
局所的にバス帯域が使われてしまったのだろうか?非常に興味深い。

(追記) Vivado HLS で合成したラプラシアンフィルタの処理時間が27秒かかるバグの原因は、古いバグありラプラシアンフィルタのCソースコードを使用したためでした。正しいラプラシアンフィルタのCソースコードについては、”Vivado HLS 2014.4で生成したラプラシアンフィルタIPをシミュレーション3(原因が分かった)”をご覧ください。

とりあえず、バグ無しのラプラシアンフィルタ処理を実行した経過については、”ZYBO Linux (Ubuntu 14.04 LTS) 上でMakefile を作ってラプラシアンフィルタIPの制御ソフトをコンパイル4(うまく行った)”をご覧ください。
  1. 2015年03月02日 04:28 |
  2. AXI4バス
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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