FC2カウンター FPGAの部屋 ZYBO Z7-20でのMNISTの実装にOV5642を使用する2
FC2ブログ

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

FPGAの部屋

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

ZYBO Z7-20でのMNISTの実装にOV5642を使用する2

ZYBO Z7-20でのMNISTの実装にOV5642を使用する1”の続き。

前回は、ZYBO Z7-20 のMNIST の実装で、OV5642 を使用してみたいということで、やってみたところ、うまく行かない。mt9d111_inf_axis_0 のAXI4-Stream のトランザクションもないので、mt9d111_inf_axis_0 がおかしいようだということが分かった。今回は、Vivado Analyzer を入れて2日ほど調査したが、原因が分からなかった。やっと今日、その原因が分かったのだった。原因は、アプリケーション・ソフトでのコマンド順によるものだった。

さて、2日間、Vivado Analyzer を入れたり削除したり、いろいろな配線を観察したりしていたのだが、1回だけカメラ画像を表示することができた。だが、その1回だけで、もう何度やってもカメラ画像は表示することができなかった。1回うまく表示できたときのVivado Analyzer の波形を示す。
最初は、AXI-Stream 波形だ。これは、camera-interface 内のカメラ画像のAXI4-Stream 波形をキャプチャしたものだ。 Slot_0 が mt9d111_inf_axis_0 のAXI4-Stream 波形だ。うまく行っているのが分かる。
ZYBO_Z7_OV5642_10_181229.png

うまく行っている時の mt9d111_inf_axis_0 の波形を示す。
ZYBO_Z7_OV5642_11_181229.png

HREF と VSYNC の波形を示す。
ZYBO_Z7_OV5642_12_181230.jpg

カメラ画像を示す。なお、上下は逆になっているが、レジスタでこれしか設定できなかったためで、これで正しい。
ZYBO_Z7_OV5642_13_181230.jpg

しかし、Ultra96 はほぼ同じ回路でカメラ画像を表示できているし、なぜカメラ画像が表示できないか悩んでいた。今朝、私の好きなテレビ東京の路線バスの旅を見終わったら、ひらめいた。アプリケーション・ソフトがまずいのでは?ということだった。
もしかして、MT9D111 よりも大幅に長くなったレジスタ設定ルーチンがだめなのでは?と思い、よく見直してみた。

//ov5642_axi_lites[0] = (volatile unsigned int)FRAME_BUFFER_ADDRESS; // Camera Interface start (Address is dummy)

// CMOS Camera initialize, MT9D111
cam_i2c_init(ov5642_i2c_axi_lites);

cam_reg_set(ov5642_i2c_axi_lites, 0x78); // OV5642 register set

ov5642_axi_lites[0] = (volatile unsigned int)FRAME_BUFFER_ADDRESS; // Camera Interface start (Address is dummy)
ov5642_axi_lites[1] = 0; // One_shot_mode is disabled


ov5642_axi_lites[0] = (volatile unsigned int)FRAME_BUFFER_ADDRESS; を実行すると、mt9d111_inf_axis のリセットが外れて動作するようになるのだが、最初のリセット解除は上に示す最初の行のコメントアウトされている部分にあった。ここで、リセットが外れて、カメラ画像のキャプチャが開始されるのだが、OV5642では、レジスタ設定を行わないとPCLK も出力されていない状況になっている。なので、非同期FIFO がおかしくなってしまっているのではないか?という仮定をした。そして、上のコードに差し替えるとカメラ画像が毎回表示されるようになった。やはり、クロックが出力されていない状態のため非同期FIFO が狂ってしまったようだ。ちなみにMT9D111 は最初からクロックも出力され、SVGA の設定になっているため、問題なかったようだ。
これで不具合は解消されたが、Ultra96 はなぜ大丈夫なのか?という疑問がある。多分今回と同じコードにしておいたほうが良いと思う。
動作も確認したので、”秋月電子カメラモジュールOV5642を使う15(完成)”のcam_cap_ov5642.cpp を修正した。
  1. 2018年12月30日 15:06 |
  2. ZYBO Z7
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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