FC2カウンター FPGAの部屋 ZYBO_0_2のビットマップ・ディスプレイ・コントローラのバグフィックス

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

FPGAの部屋

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

ZYBO_0_2のビットマップ・ディスプレイ・コントローラのバグフィックス

ZYBO_0_2 のビットマップ・ディスプレイ・コントローラのワードレーンがおかしいようなので修正を行った。

ZYBO_0_2 については、
ZYBO_0 を変更1(ブロックデザインの修正)
ZYBO_0 を変更2(インプリメント)
ZYBO_0 を変更3(Ubuntu 14.04 LTSのBOOT.binを変更)
を参照のこと。

ZynqのPSのユニットはすべてリトル・エンディアンだったが、ビットマップ・ディスプレイ・コントローラで使用している入力64ビット幅、出力32ビット幅の非同期FIFOはXilinx社の仕様からビック・エンディアンだった。つまり、ワード(32ビット)単位でレーンがひっくり返る訳である。以前はカメラ・インターフェース・モジュールも64ビット幅でカメラ・データを転送していたので、ワード・レーンはビック・エンディアンだったが、問題が無かった。その時は、ARMプロセッサから画像データを読む際には、4 と排他的論理和を取ったアドレスから読んでいた。つまりワード・レーンをひっくり返していた(32ビット単位で隣のアドレスとひっくり返した)わけだ。
カメラ・インターフェース・モジュールが32ビット幅のAXI4 Stream インターフェースになってからは、今回のワード・レーンの問題が出てきたと思う。なお、出力幅の異なる非同期FIFOのデータ出力順については、
Write側とRead側のデータ幅の異なるFIFOのシミュレーション
Write側とRead側のデータ幅の異なるFIFOのシミュレーション2
Write側とRead側のデータ幅の異なるFIFOのシミュレーション3
を参照のこと。

それでは、ZYBO_0_154_2 フォルダにある ZYBO_0_153 プロジェクトのビットマップ・ディスプレイ・コントローラを変更していこう。
ZYBO_0_153 プロジェクトをVivado 2015.4 で立ち上げて、bitmap_display_cntrler_axi_master を右クリックし、右クリックメニューから Edit in IP Packager を選択して、IP を修正する。

bitmap_display_cntrler_axi_master_v1_0_project で、bitmap_afifo の din のデータの上位32ビットと下位32ビットをひっくり返した。
BMDC_bugfix_1_160229.png

IPを再パッケージして、 ZYBO_0_153 プロジェクトに戻りIP を更新した。
BMDC_bugfix_2_160229.png

論理合成、インプリメント、ビットストリームの生成を行い、成功した。
BMDC_bugfix_3_160301.png

ハードウェアをエクスポートして、SDKを立ち上げ、BOOT.bin を再生成した。
BMDC_bugfix_4_160301.png

出来上がったBOOT.bin を ZYBO 用MicroSDカードにコピーして、ZYBO に実装した。
BMDC_bugfix_5_160301.png

OpenCV 2.4.10 の stereo_match.cpp を自分のカメラ画像でやってみた1”と同様に左目カメラ画像、右目カメラ画像をBMPファイルに変換した。
stereo_calib_44_160301.png

左目カメラ画像を拡大。
stereo_calib_45_160301.jpg

右目カメラ画像を拡大しても、境界は問題ないようだ。
stereo_calib_46_160301.jpg
  1. 2016年03月01日 04:25 |
  2. ZYBO
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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