FC2カウンター FPGAの部屋 2020年02月07日
FC2ブログ

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

FPGAの部屋

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

Vitis 2019.2 で自作カーネルを使用してストーミング接続を試す5(ChipScope で波形を確認する2)

Vitis 2019.2 で自作カーネルを使用してストーミング接続を試す4(ChipScope で波形を確認する1)”の続き。

前回は、Vitis 2019.2 の streaming_lap_filter プロジェクトの Run Configuration を作成して、実機動作を行ったが、成功しなかった原因を探るために、ChipScope を入れて波形を確認しようということで、--dk オプションを使用した ILA IP コアの挿入を行った。今回は引き続き、設定を行ってChipScope 波形を観察してみよう。

前回までで、ビルドは終了している。ChipScope とVitis の制御がかち合ってしまうとまずいと思ったので、gtkterm から作業した。しかし、今やってみたが、Vitis からやっても何ら問題なかった。今度からVitis GUI でやろうと思う。
さて、gtkterm からの作業ということで、scp コマンドで BOOT.BIN, streaming_lap_filter.exe, streaming_lap_filter.xclbin を SFTP で Ultra96-V2 の PetaLinux にアップロードした。
scp BOOT.BIN 192.168.3.23:/run/media/mmcblk0p1
scp streaming_lap_filter.exe 192.168.3.23:/mnt
scp streaming_lap_filter.xclbin 192.168.3.23:/mnt

streaming_lap_filter_24_200206.png

streaming_lap_filter_25_200206.png

Ultra96-V2 の PetaLinux 上で zocl ドライバをロードして、XRT のパスを設定して、/mnt ディレクトリに入った。
insmod /lib/modules/4.19.0-xilinx-v2019.2/extra/zocl.ko
export XILINX_XRT=/usr
cd /mnt

streaming_lap_filter_26_200206.png

Vivado を立ち上げて、Tasks から Open Hardware Manager をクリックした。
streaming_lap_filter_27_200206.png

HARDWARE MANAGER が立ち上がる。
Open Target をクリックして、Auto Connect を選択した。
streaming_lap_filter_28_200206.png

hw_ila_1 が開いた。まだ波形が表示されていない。
Trigger_Setup ウインドウにある Specify the probe file and refresh the device をクリックする。
streaming_lap_filter_29_200206.png

streaming_lap_filter/Hardware/streaming_lap_filter.ltx ファイルを選択して Refresh ボタンをクリックする。
streaming_lap_filter_30_200206.png

すると波形が表示された。
streaming_lap_filter_31_200206.png

波形ウインドウをフロートして、設定を行う。
Settings ウインドウの Trigger position in window を 10 に設定した。
Trigger Setup ウインドウでは、dma_read の ARVALID = 1 でトリガをかけるように設定した。
streaming_lap_filter_32_200206.png

gtkterm で streaming_lap_filter.exe を実行した。
./streaming_lap_filter.exe streaming_lap_filter.xclbin
streaming_lap_filter_33_200206.png

すると、ChipScope のトリガがかかった。
streaming_lap_filter_34_200206.png

dma_read の AXI4 Master のトランザクションが 4 個見える。
16 バースト 4 個なので、64 ピクセルをRead していることになる。ちょうど 1 行分のピクセルだ。
AXI4 Stream インターフェースも少し動作しているのが見える。krnl_lap_filter の入力はかなり入ってるが、出力は少ししか出て行っていない。
streaming_lap_filter_35_200206.png

次に、AXI4 Lite インターフェースを見てみると、dma_read と krnl_lap_filter は AXI4 Lite の Read トランザクションが見えるが、dma_write はRead トランザクションが見えない。
streaming_lap_filter_36_200206.png

dma_read のトランザクションはアドレス・オフセット 0 番地をRead しているので、終了を判定していると思われる。
streaming_lap_filter_37_200206.png

krnl_lap_filter の Read トランザクションも同様だ。
streaming_lap_filter_38_200206.png

dma_write の AXI4 Lite インターフェースのARVALID でトリガかけてみたが、引っかからない。
streaming_lap_filter_39_200207.png

dma_write が起動していないんじゃないか?少なくともケアされていない疑惑が生じている。
なお、ひでみさんに起動できるカーネルは 2 個じゃないか?ということを聞いたので、カーネルを 2 個にして確かめてみよう。

ChipScope を使う際にエラーが出る場合はケーブルドライバをインストールしてあるかどうか?を確認したほうが良い。
ケーブルドライバのインストール方法はここを参照ください。

ホスト・アプリケーションソフトを一時停止するための関数として wait_for_enter() 関数が”UG1393 (v2019.2) 2019 年 11 月 11 日Vitis アプリケーション アクセラレーション開発”の 238 ページの”ハードウェア デバッグでの ILA トリガーのイネーブル”、”カーネル開始前に ILA トリガーを追加”に書かれている。
  1. 2020年02月07日 04:56 |
  2. Vitis
  3. | トラックバック:0
  4. | コメント:0