FPGAの部屋FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。基板とシキノハイテックのCMOSカメラKBCR-M03VG。このCMOSカメラはCMOSイメージセンサにOmniVision社のOV7640を使用している。OV7640の使用するモードは、VGAモード(30フレーム/秒)、YUV422モード、YUVフォーマットはUYVYUYVYモードを使用する。YUVなどの画像データは8ビット幅で、Uが8ビット、Yが8ビット、Vが8ビット、Yが8ビットというように出力される。これはデフォルトの設定なので、I2Cでレジスタを設定する必要はとりあえずない。予定は白黒なので、YUVのうち輝度成分のYだけ取り出せばOKだ。画像データはUYVYと41.6ns(24MHz)ごとに出力される。それが640ドット分続く。実際のタイミングチャートは下にデータシートから引用する。HERFのが1の間Y[7:0]にはUYVYの順に出力されるはず。全体のタイミングチャートもデータシートから引用させていただく。ここでRowが640tpclkと書いてあるが、UYかUYで1画素なので、CMOSカメラから出力されるPCLKを基準とすると640X2=1280PCLKで1つのRowとなる。少なくともRGB出力した時はそうだった)これで30フレーム/秒という出力フレームの規格にも計算が合うことになる。2Mバイト高速SRAMは、アクセスタイム10ns、16ビット幅のSRAM(IS61LV25616AL)を使用している。アクセスタイムは10nsだが、非同期動作なので、周期が10nsクロックで動作は出来ない。現実的にはSpartan3Eボードの48MHzクロックを1/2分周した24MHzで使用する。Write用のパルスはDDRレジスタで出力する。Yデータを格納する際には、SRAMのデータは16ビット幅なので、最初に上位8ビットにYデータを書き込む。次のYデータは下位8ビットに書き込む。24MHzクロック2クロックに1回、8ビットずつ書き込みを行う。下にSRAMをアクセスするタイミングチャートを示す。CMOSカメラに24MHzクロックを供給し、カメラから帰ってくるのがPCLKである。これも24MHzのクロックだ。MDはメモリに読み書きするデータで、上の文字がDISPLAY_DATAの時が、表示用のデータをリードしているときだ。この時は8ビットのYデータ2つ分、2バイトを読み出してディスプレイに表示する。2クロックに1回の読み出しなので、2バイトのデータをもらう必要がある。VOIDは書き込みのタイミングだけど、書き込むデータがそろっていないので書き込めないことを示す。来たら上位8ビットに書き込む。LB信号を用いて上位8ビット、下位8ビットだけに書き込むことができる。下のR/WはRead/Writeを表す。MADDRは、SRAMのアドレスを示す。なんでも良いときは3FFFFと書いた。Y0...はCMOSカメラから出てくるYUV422のデータを示している。その下がHREFの信号となる。大体このようなタイミングでやって行こうかと思っている。出力の時にIOBのFFを使うために、もう1クロック後ろずれする可能性はある。ディスプレイに表示するために読み出すのは、1秒間に60フレーム必要だが、CMOSカメラからの書き込みは1秒間に30フレームなので、表示2フレームで正常な画像が出力できることになる。URLhttps://marsee101.blog.fc2.com/tb.php/1232-6ab79f54この記事にトラックバックする(FC2ブログユーザー)プロフィールAuthor:marseeFPGAの部屋へようこそ!FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。WEBブログデザイナ。