FC2カウンター FPGAの部屋 Triple Frame Buffer Controller の追加5(インプリメント、実機検証)
FC2ブログ

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

FPGAの部屋

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

Triple Frame Buffer Controller の追加5(インプリメント、実機検証)

Triple Frame Buffer Controller の追加4(IPの追加)”で、トリプルバッファリングのIPをXPSプロジェクトに追加した。
今回は、インプリメントを行なって実機で試してみた。

・PlanAheadでのインプリメントは無事に終了した。
Triple_FBC_14_130511.png

・その後、SDKにハードウェアをエクスポートして、リコンパイルを行った。

・ZedBoardにビットストリームをダウンロードして、ソフトウェアをRunさせた。
Triple_FBC_15_130512.png

カメラの画像は表示されなかった。バグだ。
Triple_FBC_18_130513.jpg

ChipScope を入れて、いろいろとやってみたが、原因はわからなかった。camera_fb_start_addrも、bitmapd_fb_start_addrも正常のようだ。
原因を突き止めたのは、カメラ・インターフェイスIPとビットマップ・ディスプレイ・コントローラIPのアドレス処理回路にChipScope のプローブを付けた時だった。下に示す。
Triple_FBC_16_130512.png

上の図で、addr_count がビットマップ・ディスプレイ・コントローラIPのアドレス、paddr_reg がカメラ・インターフェイスIPのアドレスを示している。paddr_reg は、正しいアドレスだが、addr_count はアドレスが若すぎる。(addr_count のビットは、[31:3]なので、左に3ビットシフトする。つまり、1F040 は F8200 )

これはおかしいということで調査したところ、ビットマップ・ディスプレイ・コントローラIPの下位モジュールで、フレームバッファのアドレスを渡すのを忘れていた。下位モジュールのインスタンスの所で、フレームバッファアドレスを下位モジュールに接続する記述を忘れていた。
Triple_FBC_20_130513.png

これで、PlanAheadでインプリメント時に、エラーもワーニングも出ていなかったのだが、これは困る。エラーかワーニングを出してほしい。

ともかく、この行を追加して、もう一度、インプリメントを行った。今度は、ビットマップ・ディスプレイ・コントローラIPのアドレスも正常になった。
Triple_FBC_17_130512.png

見えているビットマップ・ディスプレイ・コントローラIPのアドレスは、0344B240 なので、左に3ビットシフトしたら、1A259200 だった。

ディスプレイに表示してみると、正常に表示された。手を画面上で動かしても横筋は見えない。
Triple_FBC_19_130513.jpg

SDKでBOOT.bin を作製してSDカードに書いたら正常に動作した。PS-RSTボタンを押さなくても画面が正常に表示されている。どうやら、以前のバージョンで作成したビットストリームをISE14.5のSDKでRun させたり、ブート用のvbinファイルを作成すると調子が悪いようだ。


最後に、カメラのクロックをオシロスコープで測定してみた。カメラに与えているクロックは、PS部のクロックを使用していて、35.714283MHzの設定だった。
実際にカメラに与えているXCLKを下に示す。周波数の実測値は 35.715MHz だった。
Triple_FBC_21_130513.jpg

カメラから出力されるPCLK は、17.857MHz だった。入力の約半分の周波数だ。これだとフレームレートは 15fps になる。
Triple_FBC_22_130513.jpg
  1. 2013年05月13日 05:08 |
  2. ZedBoard
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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