FC2カウンター FPGAの部屋 MT9D111のお勉強4

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

FPGAの部屋

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

MT9D111のお勉強4

・Sensor Core (116ページ)
・Pixel Array Structure
センサーコアのピクセルアレイは、1688x1256の領域があって、その一部を出力する。その指定は、R0x01:0、R0x02:0、R0x3:0、R0x4:0 で指定する。
・R0x01:0 Row Start  デフォルト値 0x001C (28)
・R0x02:0 Column Start デフォルト値 0x003C (60)
・R0x03:0 Row Width   デフォルト値 0x04B0 (1200)
・R0x04:0 Col Width  デフォルト値 0x640 (1600)

・Figure 15: Pixel Color Pattern Detail (Top Right Corner)
フレーム最初のベイヤーパターン。Figure 15を引用する。
MT9D111_1_121212.png

・Figure 18: Pixel Data Timing Exampleを引用する。
MT9D111_4_121214.png
LINE_VALIDが1の時に、ピクセルデータを出力する。

・Figure 19: Row Timing and FRAME_VALID/LINE_VALID Signalsを引用する。
MT9D111_5_121214.png
ピクセルクロック周波数の推奨値は36MHz

・Frame Time
・表示する画面は、Context AとContext B と2つあるようだ。どちらを表示するかは、R0xF2:0 の値で決まり、デフォルトではContext Bになる。
MT9D111_6_121217.png 

・Fame - Long Integration Time (シャッター幅の設定によって、Vertical Blankingが長くなってしまう)
フレーム内の行の積算時間よりもシャッター幅の方が長くなると(R0x09:0 > R0x03:0/S + BORDER + VBLANK_REG)、Vertical Blankingが長くなってしまう。その場合の V' と F' を下に示す。

V' : Vertical Blanking (long integration time) : (R0x09:0 – (R0x03:0)/S) * (A + Q) + (Q - 2*P)
F' : Total Frame Time (long integration time) : (R0x09:0) * (A + Q)

  1. 2012年12月14日 05:38 |
  2. CMOSイメージセンサ
  3. | トラックバック:0
  4. | コメント:6

コメント

Context切り替えに絡む話

このセンサICは、リセットから初期化完了(P.146 Start-Up and Usage)で内部のシーケンサにcmd=0(Run)が発行されて、シーケンサが勝手に走ります。
 この状態だと、P.68 Driver Variables-Sequencer Driver Offs.2 mode のDefaultで示されるように
 Auto exposure(自動の明るさ調整=シャッター時間)
 Flicker detection(照明などのフリッカー検出で50Hz/60Hzを認識)
 Auto white balance(自動のホワイトバランス)
 Histogram driver(画像調整のためだったかな)
が、走るため関連するSenser Registerがフレームごとに書き換わります。
(これが曲者で、目的の画がなかなか出てこない原因となりやすい)
 また、ContextレジスタもP.138 Figure 31: Sequencer DriverでEnter Previewに入った時点で、ContextがB→Aに切り替わるため通常出力される画像はContext.Aで設定された内容になります。
  1. 2012/12/18(火) 10:35:48 |
  2. URL |
  3. おる #qbIq4rIg
  4. [ 編集 ]

おるさん、こんにちは。
教えていただいてありがとうございます。
質門なのですが、この状態から、R9(0x9):1 = 0x0000, [1:0] = 00 = 10-bit sensor. と設定すると、内部シーケンサが止まって、Bayer出力になりますか?そこから、R0xF2:0を書き換えて、Contex.Bに戻せば、Bayer出力になりますか?
また、Bayer 10bit切り替えと、8bit+2bit切り替えはどのビットにあるでしょうか?
よろしければ教えて下さい。よろしくお願いします。
  1. 2012/12/18(火) 19:53:33 |
  2. URL |
  3. marsee #f1oWVgn2
  4. [ 編集 ]

出力データに関する設定は内部シーケンサに関係なく、IFPレジスタの設定でデータが出力された(はず)です。Contextにも影響しなかったと思います。基本は、R151(0x97):1だけでデータの出力形式が選択できます。

>また、Bayer 10bit切り替えと、8bit+2bit切り替えはどのビットにあるでしょうか?
Byer 10bitは、R152(0x98):1 [6]=1でBayer出力できると思います。
センサの読み取った生データは、R9(0x9):1[1:0]=1,10-bit senserを選択すればいいですが、かなりノイズだらけだったような。SOCを通した場合は、ゲインとか基本の画像処理が入ります。

10bitをダイレクトに出力するには、GPIO関連の設定を変えないといけないのですが、このセンサ基板でも私が使った時も、FLASH以外は取り出していなかったので使ったことがないです。
GPIO9/DOUT_LSB IFP operation or data bit 1 in 10-bit sensor bypass mode.
GPIO8DOUT_LSB0 IFP operation or data bit 0 in 10-bit sensor bypass mode.
ただGPIOをデータ出力モードにしても、DOUTにはD9-D2,D1-D0の順で出てくると思います。
Page.110 Uncompressed 10-Bit Bypass Output Table 26(D9-D2のときにGPIOにD1,D0が出力)
  1. 2012/12/19(水) 17:10:42 |
  2. URL |
  3. おる #qbIq4rIg
  4. [ 編集 ]

おるさん、ありがとうございます。了解しました。
そうですか。Bayer出力はノイズが多いんですか。
MT9D031をBayerで使っているので、そのIPを使えるかな?と思って質問しました。
http://marsee101.blog19.fc2.com/blog-entry-1833.html
とりあえず、RGB565で使おうと思っています。
  1. 2012/12/19(水) 20:03:55 |
  2. URL |
  3. marsee #f1oWVgn2
  4. [ 編集 ]

>そうですか。Bayer出力はノイズが多いんですか。
センサ直からの生データは撮像条件の厳しいとき(暗い場面)などでノイズだらけで使えませんでした。
SOCを通したBayer出力はノイズリダクションとかゲイン調整が効いているので問題は少ないです。
中の画像処理がかなり頑張っている印象がありました。
  1. 2012/12/20(木) 12:01:14 |
  2. URL |
  3. おる #qbIq4rIg
  4. [ 編集 ]

了解しました。CMOSカメラ内部処理回路を動かした状態で使おうと思います。ありがとうございました。
  1. 2012/12/20(木) 20:48:41 |
  2. URL |
  3. marsee #f1oWVgn2
  4. [ 編集 ]

コメントの投稿


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

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