FPGAの部屋FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。インターフェース回路を実装することにした。第1段階は、SCCBプロトコルを調べることだ。SCCBプロトコルはI2Cバスに似ている。I2Cバスについては、”やまねこのマイコン実験室、I2Cバスを使ってみよう”や”I2C通信の使い方”に詳しく書かれている。SDAともにオープンドレインで、スレーブ側からのビジー通知はスレーブがSCLをローにドライブすることによってマスタに通知するそうだ。SCCBはその使い方はできないので、SCCBはI2Cのサブセットということができると思う。SCCBプロトコル仕様はここにある。この仕様はほとんど3線式SCCBについて書かれているが、2線式はI2Cバスの仕様に沿う形で良いようだ。いつもマニュアルが不完全だ。仕様をタイミングチャートにしてみた。FPGAのSCCBインターフェース回路がマスタで、CMOSカメラ側がスレーブになる。上の例はSCCBレジスタ12番地に80、つまりレジスタのオールリセットを行うコマンドだ。最初にスタートビットがある。それは、I2Cと一緒でSCLが1の時にSDAを0にドライブする。その時のタイミング制約がtSU:STAとtHD:STA。次に”01000010"と出力する。この場合、必ず、SDAはSCLが0の時に変化させる。SCLが1の時にSDAのデータが確定される。ちなみに最後の0は0がWrite、1がReadを表す。16進で書くと、42がWrite、43がReadとなる。そのデータはOV7640のマニュアルの10ページの最初の数行に書いてある。アクセスすれば、OV7640、OV7725にアクセス出来るようだ。その時のタイミング制約がtSU:DAT、tDH:DATになる。次に、マスタはSDAのドライブをOFFする。これはACKのはずなんだが、CMOSカメラ側がドライブするようだ。ここにSCCBレジスタのアドレスを入れて、CMOSカメラに送る。このアドレスは”00010010”で16進で書くと12だ。次にWriteするデータ、”10000000”、16進で書くと80をマスタは出力する。最後にストップのシーケンスがある。これはSCLが1の時にSDAを0から1に変化させる事によって、ストップとなる。その時のタイミング制約がtSU:STOとなる。次のSCCBのデータ転送が始まるまでの制約がtBUFになる。だいたい、タイミングが分かったので、次はどのように実装するかを考える事にする。コメント:0プロフィールAuthor:marseeFPGAの部屋へようこそ!FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。WEBブログデザイナ。