FC2カウンター FPGAの部屋 ZYBO用カメラ表示回路の作製6(デバック2、完成)
FC2ブログ

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

FPGAの部屋

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

ZYBO用カメラ表示回路の作製6(デバック2、完成)

ZYBO用カメラ表示回路の作製5(デバック1)”の続き。

前回、ビットマップ・ディスプレイ・コントローラのAXI4 Read トランザクションとカメラ・インターフェースのAXI4 Write トランザクションがどちらもDecode Error(RRESP, BRESPが 3)となってしまった。この原因を追求する。

問題だと思ったのは、IPを作製するときにIPのアドレス範囲をHD解像度の画像で良いので、8Mバイトとしたことだ。
ZYBO_Cam_Disp_66_140819.png

bitmap_disp_cntrler_axi_master_0 と mt9d111_inf_axi_master_0 のアドレス範囲が23ビット長になっている。これは、0番地から2の23乗-1番地までのアドレスのみのアクセス範囲になっているじゃないだろうか?と言うことだ。スレーブならば、必要なアドレス領域を指定して、オフセットアドレスを設定できるが、マスタは違うんじゃないだろうか?
Zynqは0番地から0x3FFFFFFFまでの1Gバイトのメモリを持つことができるので、この範囲を指定する必要があるんじゃないだろうか?つまり0番地から2の30乗-1までアクセスできる必要があるので、1Gバイトをアクセス範囲として指定する必要があるんじゃないか?と思った。これが0x80000000~0xBFFFFFFFまでのアドレス領域にアクセスする必要があれば、2の32乗のアドレスをアクセス範囲とする必要がある。
それで、それぞれのIPを呼び出して修正を試みた。

・bitmap_disp_cntrler_axi_master_0 を右クリックして右クリックメニューから、Edit in IP Packager を選択した。
ZYBO_Cam_Disp_118_140823.png

・Edit in IP Packager ダイアログが表示された。これで問題ないのでOKボタンをクリックした。
ZYBO_Cam_Disp_120_140823.png

・IPの編集プロジェクトが開いた。IP Addressing and Memory のRange はpow(2, 23) となっている。
ZYBO_Cam_Disp_121_140823.png

・Range を pow(2, 30) に変更した。
ZYBO_Cam_Disp_122_140823.png

・Review and Package をクリックして、Re-Package IP ボタンをクリックした。
ZYBO_Cam_Disp_123_140823.png

・同様に、mt9d111_inf_axi_master_0 も Range を pow(2, 30) に変更した。
ZYBO_Cam_Disp_124_140823.png

・V_ZYBO_CAMD142 プロジェクトに戻って、Address Editor を見てみると、bitmap_disp_cntrler_axi_master_0 と mt9d111_inf_axi_master_0 のアドレスは0x00000000からの512Mバイトとなっていた。ZYBOは512MバイトのDDR3 SDRAMを搭載しているので、それで制限されてしまっていると思う。
ZYBO_Cam_Disp_125_140823.png

これで、論理合成、インプリメント、ビットストリームの生成を行い、ハードウェアをSDKにエクスポートして、FPGAをコンフィギュレーションし、ソフトウェアを起動したところ、YUVの画面が写るが、再書き換えが無く、静止画の様になってしまった。ちゃんとした画像ではなく、YUVをRGBとして表示した時の画像だ。

もう一度、Vivado Analyzer で見ると、bitmap_disp_cntrler_axi_master_0 は問題ないが、mt9d111_inf_axi_master_0 のアドレスが0xf0000000 番地台にも行ってしまっていた。
またデバックを行ったが、原因は、カメラ・インターフェースIP (mt9d111_inf_axi_master_0) の pixel_fifo のData Counts タブの More Accurate Data Counts のチェックボックスをチェックしていなかったことだ。このチェックを忘れると、Data Count と empty, almost_empty の間で齟齬が生じてしまう。(”ZYBO用カメラ・インターフェースIPの作製1(シミュレーション)”を参照)
ZYBO_Cam_Disp_7_140816.png

これをチェックして、IPを作り直して、再度試したところカメラ画像が表示された。完成~~~。
かなり躓いてしまったが、良かった。。。やった。。。

ZYBOにカメラ(MT9D111)をつけている様子を写真に示す。
ZYBO_Cam_Disp_126_140825.jpg

ZYBO_Cam_Disp_130_140825.jpg

ZYBOのカメラ画像を示す。
ZYBO_Cam_Disp_127_140825.jpg

ビットマップ・ディスプレイ・コントローラIP(bitmap_disp_cntrler_axi_master_0)のAXI4 Read トランザクションを下に示す。RRESPは 0 で、正常だ。
ZYBO_Cam_Disp_128_140825.png

カメラ・インターフェースIP(mt9d111_inf_axi_master_0)のAXI4 Write トランザクションを下に示す。BRESPも 0 で正常だ。
ZYBO_Cam_Disp_129_140825.png
  1. 2014年08月25日 04:49 |
  2. ZYBO
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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