FC2カウンター FPGAの部屋 AXI4 Master IP にAXI4 Lite Slave を追加8(ChipScopeデバッグ)
FC2ブログ

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

FPGAの部屋

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

AXI4 Master IP にAXI4 Lite Slave を追加8(ChipScopeデバッグ)

このブログ記事のトップは、”AXI4 Master IP にAXI4 Lite Slave を追加1(インプリメント)”
前の記事は、”AXI4 Master IP にAXI4 Lite Slave を追加7(SDKリモートデバッグ)

前回、カメラ・インターフェイスIPとビットマップ・ディスプレイ・コントローラIPのAXI4 Lite Slave バスに接続されたレジスタにRead/Write を行った。Readで読めた値は 0x1A000000 のはずが 0x00000000 だった。Writeで値を書き込むとZedBoardのLinux が死んでしまった。今回は、ChipScope AXI Monitor IP を入れて、AXI4バスに何が怒っているかを検証する。

前回までは、Linuxを使用していたが、WebPACKライセンスなので、Windows7 のISEを使用する。そのためという訳でもないが、Linux のプロジェクトとWindows のプロジェクトを同じ状態に維持してきている。

・XPSを立ちあげて、chipscope axi monitor IP を2つ Add IP した。カメラ・インターフェイスIPのAXI4 Lite Slave に chipscope_axi_monitor_CamC_Slave を接続した。ビットマップ・ディスプレイ・コントローラIPのAXI4 Lite Slave に chipscope_axi_monitor_DispC_Slave を接続した。
AXI4M_and_Lite_Slave_67_130416.png

・Ports タブで、4つにポートを増やしたchipscope_icon_0 の control2 と control3 に、chipscope_axi_monitor_DispC_Slave と chipscope_axi_monitor_CamC_Slave のCONTROL ポートを接続した。
AXI4M_and_Lite_Slave_68_130416.png

・ISEに戻って、インプリメントを行った。インプリメント後に、EDKプロジェクトをクリックして、Expoort Hardware Design to SDK with Bitstream をダブルクリックし、SDKを立ち上げた。

・”AXI4 Master IP にAXI4 Lite Slave を追加6(Cテストプログラム)”の通りに、 AXI_Lite_test_linux プロジェクトとAXI_Lite_test_linux.c を生成した。
AXI4M_and_Lite_Slave_69_130417.png

BOOT.bin を生成して、SDカードに書き込み、ZedBoard に挿入して、電源ON でLinuxを立ち上げた。
AXI4M_and_Lite_Slave_71_130417.png

・起動メッセージのフレームバッファのアドレスを下に示す。

[ 0.960000] fbi->fix.smem_start = 0x19000000


Sysfs を確認した
/sys/devices/axi.0 ディレクトリを ls してみたところ、”46000000.mt9d111-inf-axi-master”と”47000000.bitmap-disp-cntrler-axi-master”が表示されていた。2つのIP の AXI4 Lite Slave インターフェースは、正常に認識されているようだ。
AXI4M_and_Lite_Slave_70_130417.png

・Linuxの起動毎に、フレームバッファのアドレスが変わることがあるので、AXI_Lite_test_linux.c にFB_PHYSICAL_ADDRESS を追加した。FB_PHYSICAL_ADDRESS にフレームバッファのアドレスを定義する。
AXI4M_and_Lite_Slave_72_130417.png

・ISEからChipScope Analyzer を起動した。
AXI4M_and_Lite_Slave_73_130417.png

・このままではポートの情報が無いので、CDCファイルをインポートする。ZedBoard_OOB_Design2\hw\xps_proj\implementation フォルダの chipscope_axi_monitor_dispc_wrapper, chipscope_axi_monitor_camc_wrapper, chipscope_axi_monitor_dispc_slave_wrapper, chipscope_axi_monitor_camc_slave_wrapper フォルダの下に .cdc ファイルがあるので、Importする。下に示すのは、最後の UNIT: 3 の chipscope_axi_monitor_camc_slave.cdc をインポートしているところだ。やり方については、”ZedBoard Linux のフレームバッファにカメラ画像を表示3(ChipScopeで観察3)”を参照のこと。
AXI4M_and_Lite_Slave_74_130417.png

・これで、ポートの情報がChipScope Analyzer に入った。
AXI4M_and_Lite_Slave_75_130417.png

・ビットマップ・ディスプレイ・コントローラIPのAXI4 Lite Slave バスのRead を観察するために、ARVALID = '1' でトリガを掛けた。カメラ・インターフェイスIPのAXI4 Lite Slave バスも同様にRead トランザクションを見るためにトリガを掛けた。
AXI4M_and_Lite_Slave_76_130417.png

・SDKでAXI_Lite_test_linux のDebug Configuration を作成した。”AXI4 Master IP にAXI4 Lite Slave を追加7(SDKリモートデバッグ)”を参照。
AXI4M_and_Lite_Slave_77_130417.png

・前の画面でDebug ボタンをクリックして、SDKのデバックモードに移行した。
AXI4M_and_Lite_Slave_78_130417.png

・カメラ・インターフェイスIPとビットマップ・ディスプレイ・コントローラIPのAXI4 Lite Slave バスに接続されているフレームバッファ・アドレス・レジスタのメモリマップを行ったところだ。
AXI4M_and_Lite_Slave_79_130417.png

・デバックを進めて、カメラ・インターフェイスIPとビットマップ・ディスプレイ・コントローラIPのAXI4 Lite Slave バスに接続されているフレームバッファ・アドレス・レジスタのRead を行った。
下の図に、ビットマップ・ディスプレイ・コントローラIPのAXI4 Lite Slave バスのRead トランザクションを示す。
AXI4M_and_Lite_Slave_80_130417.png

プロトコルに問題は無いが、RDATAが 0x00000000 になってしまっている。

・下の図に、カメラ・インターフェイスIPのAXI4 Lite Slave バスのRead トランザクションを示す。
AXI4M_and_Lite_Slave_81_130417.png

同様にプロトコルに問題は無いが、RDATAが 0x00000000 になってしまっている。

・デバックを進めて、カメラ・インターフェイスIPとビットマップ・ディスプレイ・コントローラIPのAXI4 Lite Slave バスに接続されているフレームバッファ・アドレス・レジスタのWrite を行った。
デバックモードのSDKは、次のブレークポイントまで行かずに、途中で止まってしまった。
AXI4M_and_Lite_Slave_82_130417.png

・下の図に、カメラ・インターフェイスIPのAXI4 Lite Slave バスのWrite トランザクションを示す。次の、ビットマップ・ディスプレイ・コントローラIPのAXI4 Lite Slave バスのWrite トランザクションは波形がキャプチャできずに、画面が真っ白のままだった。
AXI4M_and_Lite_Slave_83_130417.png

この波形を見て、Write トランザクションのバグがわかった。
さて、それでは問題です。このChipScope 波形のどこがまずいでしょうか?正解(たぶん)は明日発表します。

1つWrite トランザクションの画像を追加します。
AXI4M_and_Lite_Slave_84_130417.png

次のブログ記事は、”AXI4 Master IP にAXI4 Lite Slave を追加9(バグフィックス)
  1. 2013年04月18日 05:25 |
  2. 複数のAXI4 バスを持つIPの作製
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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