今更ながら,aitendoで購入できるOV7670をexStickに接続しましたー,という話のラストです.
2012年10月にカメラはじめますとブログに書いた後,結局2013年8月くらいにexStickへの接続に着手し,FPGAマガジン No.3(なんと2013年11月1日発行)に記事を書かせていただいた内容です.
…本当に今更で,ごめんなさい.
ちなみに,イーツリーズが現在抱えているexStickの残り在庫は数個で,それらを購入していただいた後は,追加製造の都合上,納品が数ヶ月後になってしまうようです.ご利用を計画されている方がいらっしゃいましたら,お早めにご連絡ください.
これは何?
これは,OV7670で撮像されたイメージをexStickでキャプチャしながらライン毎にPCにUDPパケットにして飛ばすシステムの実装です.100Mbpsのイーサネット帯域を贅沢に使って非圧縮でVGA画像をホストPCに送りつけています.
リソース一式
アップデート版があります→をご参照ください.
- HDLコードおよびISE用のプロジェクト一式 exstick_ov7670.zip
- 合成済みのbitファイル top.bit
- コンフィギュレーション用のRubyスクリプト registers.rb
- カメラ動画像表示ソフトウェア OV7670Client.java
HDLコードを手元で合成するためには,exStick用のe7UDP/IP IPコアが必要です.IPコアはexStickをご購入いただいた方向けのサポートサイトよりダウンロードしていただけます.
使い方
手順は次の通りです.
- exStickとカメラを用意する.接続については下記を参照
- bitファイルをFPGAに書き込む
- 画像を受信/表示するPC(以下ホストPC)のIPアドレスを10.0.0.3にする
- exStickとホストPCをイーサネットで接続し,ping 10.0.0.1とかして到達を確認する.
- ruby registers.rb と実行してカメラのレジスタを設定する
- javac OV7670Client.java && java OV7670Client でクライアントソフトを起動
準備
exStickとカメラを用意します.
次の表のように接続しました.
PCLKとの接続が二つあるのは間違いではなくて,ページ先頭のようにexStick拡張基板を使う都合上,物理的にPCLKがJ2-8(XC6SLX16CSG225のD13)に接続されてしまうものですが,このピンがDedicated Inputでないため,ジャンパでH1に飛ばしているから,です.HDLコードでD13には’Z’を出力します.
概略を図示すると,こんな感じ.
謝辞
OV7670から動画像を取得するまでには,多数の先達のWebサイトや雑誌記事を参考にさせていただきました.以下は,参考にさせていただいた主なソースです.ありがとうございます.
- トランジスタ技術 2012年 3月号 特集: 「色/明るさ/形/速度…撮影感覚でなんでも楽ちん検出 始めよう! チョコッとカメラ」
- OV7670/OV7171 CMOS VGA (640×480) CAMERACHIP(TM) Sensor with OmniPixel(R) Technology
- A V4L2 driver for OmniVision OV7670 cameras
- OV7670 camera – Hamsterworks Wiki!
- FPGAの部屋 Spartan-3A Starter KitでCMOSカメラ・ディスプレイ回路28(プロジェクトの公開
コメント