FC2カウンター FPGAの部屋 2009年12月15日
fc2ブログ

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

FPGAの部屋

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

SCCBインタフェース回路の実装1(タイミングチャート)

SCCB (Serial Camera Control Bus) のインターフェース回路を実装することにした。
第1段階は、SCCBプロトコルを調べることだ。SCCBプロトコルはI2Cバスに似ている。I2Cバスについては、”やまねこのマイコン実験室、I2Cバスを使ってみよう”や”I2C通信の使い方”に詳しく書かれている。
それによるとI2Cは、SCL, SDAともにオープンドレインで、スレーブ側からのビジー通知はスレーブがSCLをローにドライブすることによってマスタに通知するそうだ。SCCBはその使い方はできないので、SCCBはI2Cのサブセットということができると思う。SCCBプロトコル仕様はここにある。この仕様はほとんど3線式SCCBについて書かれているが、2線式はI2Cバスの仕様に沿う形で良いようだ。どうもいつもマニュアルが不完全だ。。。
仕様をタイミングチャートにしてみた。下図に示す。
SCCB_timing_chart_091215.png

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ページの最初の数行に書いてある。このID Address をアクセスすれば、OV7640、OV7725にアクセス出来るようだ。その時のタイミング制約がtSU:DAT、tDH:DATになる。
次に、マスタはSDAのドライブをOFFする。これはACKのはずなんだが、CMOSカメラ側がドライブするようだ。その次は、Sub-address でここにSCCBレジスタのアドレスを入れて、CMOSカメラに送る。このアドレスは”00010010”で16進で書くと12だ。次にWriteするデータ、”10000000”、16進で書くと80をマスタは出力する。
最後にストップのシーケンスがある。これはSCLが1の時にSDAを0から1に変化させる事によって、ストップとなる。その時のタイミング制約がtSU:STOとなる。次のSCCBのデータ転送が始まるまでの制約がtBUFになる。
だいたい、タイミングが分かったので、次はどのように実装するかを考える事にする。
  1. 2009年12月15日 06:02 |
  2. 画像処理
  3. | トラックバック:0
  4. | コメント:0