FC2カウンター FPGAの部屋 2009年11月28日
FC2ブログ

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

FPGAの部屋

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

YUV-RGB変換3(画像ボードやタイミングの再検討)

YUV-RGB変換2(画像ボードやタイミングの検討)”でタイミングを検討したが、どうやら、KBCR-M04VG(内蔵CMOS撮像素子、OV7725)は前のKBCR-M03VG(内蔵CMOS撮像素子、OV7640)と違っているようだ。リセットは逆で0でリセットのようだし、デフォルトではYUYVとデータが出てくるようだ。KBCR-M04VGの全体のフレームのタイミングを下に示す。データシートのタイミングチャートを基に作成した。
YUV_RGB_conv_2_091128.png
  図1 OV7725のフレーム・タイミングチャート

クロックはいい加減に書いてあるので、ご了承いただきたい。tp = 2 tPCLK となっている。これはYU, YVで一画素を表しているからだ。実際にはHSYNCはないはずなのだが、データシートに書いてあったので、付けくわえておいた。今度のボードは50MHzの水晶発振器が付いているので25MHzピクセルクロックのVGAとなる。Spartan3A Starter Kitのユーザーズマニュアルに書いてあるタイミングを下に示す。(表 6-2 を引用)
YUV_RGB_conv_3_091128.png

図1と表6-2を比べるとタイミングがだいぶ違う。今まではVGAはCMOSカメラのフレームの1/2としていたが、今回はCMOSカメラ、VGAともそれぞれのタイミングで入力、出力してもらうことにした。OV7725はVGAを60フレーム/secで出力することもできるようだが、とりあえず30フレーム/secとする。つまり、少なくとも1/15sec カメラを止めていれば、思い通りのVGA出力が出てくるだろう。

次に全体のタイミングチャートを示す。
YUV_RGB_conv_4_091128.png
 図3 YUV-RGB変換回路タイミングチャート

前のタイミグンチャートと同じようだけど、もう1つSRAMが増えているので、メモリのデータ入出力が2つある。MD1とMD2だ。MD1は以前同様に16ビット幅に2つのYを保存する。MD2は同じく16ビット幅の上位バイトにUを下位バイトにVを保存する。一度に1バイトをWriteするので、1クロック間では上位バイトか下位バイトだけをWriteする。例えばMD2のタイミングチャートの上に書いてある、”CAMERA U0, XX”はCMOSカメラからのUの0番目をSRAMの上位バイトだけに書き込み、下位バイトは書きこまないことを示す。”XX, CAMERA V0”はVの0番目を下位バイトだけに書き込み、上位バイトには書きこまないことを示す。
SRAMのRead/WriteがR/Wで、アドレスがMADDRになっている。アドレスは2つのSRAM共通とする。SRAM_WRは実際にSRAMに書き込むタイミングを示し、UBはUpper Byteの書き込み、LBはLower Byteの書き込みを示す。
CAM_Yはカメラから入力したデータのフォーマットを示す。上に書いてあるのがYUVの出力されるフォーマットである。UYVY...と出力される。Y_FFはそのCAM_Yをラッチした出力でYを保存しておくためのFFだ。
このような仕様でSRAMにCMOSカメラのYUVデータを格納しようと思っている。ちなみにY、UVとも最初はCMOSカメラからのデータの書き込みが間に合わないので、変なデータをディスプレイに表示してしまうが、1フレーム終われば正常な値を出力するので問題はない。
YUV422なのでYに対してUVは半分のデータ量しかないため、ディスプレイに表示するためにSRAMからUVはラッチされて2ピクセルの間、使う必要がある。その辺はタイミングチャートに表していない。
DISPLAY_DATAはVGA用のデータをSRAMからリードするタイミングで、これはCMOSのタイミングとは全く別にする。以前はmaster_syncでVGAのアドレスも同期していたが、これはやめることにする。VGAは521ライン、CMOSカメラは510ラインなので、VGAのフレーム2回はCMOSカメラのフレーム1回に入らなくなった。

  1. 2009年11月28日 20:10 |
  2. 画像処理
  3. | トラックバック:0
  4. | コメント:4