おいふぉりーのぶろぐ

きっと趣味のブログに違いないです!!

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

[GPB]カメレオンUSBロジック・アナライザでカメラのディジタル信号を読み込む

gpb_cusb_test.jpg

こんな感じに秋月のカメラをロジアナに接続して、デジタルビデオ信号を読み取ってみました。以上のことを、備忘録というか、ちょっとまとめてみたいと思います。
gpb_connector.jpg

さて、まず接続するには半田付けってことで、問題のFPCコネクタを変換基板に半田付けします。ここで、ちょっと問題発生というか、一発じゃうまくいきませんでした。最初は、FPCコネクタが動かないように両面テープで固定してから半田付けしようとしたのですが、結構両面テープによってピンが基板から浮いちゃうんですよね。それで、なかなか半田付けがうまくいきませんでした(写真右)。そこで、あきらめて二回目は両面テープを付けずにやったところ、うまくいきました(写真左)。ただ、やはり半田ブリッジが問題です。私は、半田ブリッジができてしまった場合は、半田吸い取り器で吸い取りやすいように、半田ブリッジに少し半田を追加してから、吸い取るという方法で何とかしました。あとからサークルの先輩に対処法を聞いてみたところ、加熱してから、基板ごと叩きつければ反動で半田が落ちるよって言ってたので、今度はそのようにやってみたいと思います。
これ以外は、特に問題なく半田付けを終えました。

お次は、早速カメレオンUSBロジアナでデータをサンプリングしてみましょう。カメラからは8ビットのデータとクロック(27MHz)が出力されています。サンプリング結果は次のような感じになりました。
itu656_sav.png

itu656_eav.png

実際は、この上の2つのスクリーンショットはかなり拡大した図です。ビデオ信号のフォーマットですが、このカメラからはITU-R BT.656という規格の信号が出力されています。大雑把に説明すると、全体的なタイミングは普通のテレビのビデオ信号と同じで、信号の伝達方法がディジタルになった感じです。つまり、NTSCで水平ブランクや垂直ブランクを含む信号が出力されてきます。ディジタル信号ですので、このような水平ブランクや垂直ブランクを判別するために、ビデオ・タイミング・リファレンス・コードという特殊な制御信号があります。ITU-R BT.656では通常の信号(輝度と色差信号)は0と255を除く1~254までの値で表わし、ビデオ・タイミング・リファレンス・コードのような制御千号は0と255を使って表します。ff(h)、00(h)、00(h)、xx(h)という4バイトのコードがビデオ・タイミング・リファレンス・コードと呼ばれるもので、4バイト目の情報で、フィールド0、1の判定、垂直ブランク信号の判定、SAV、EAVの判定を行います。フィールド0、1の判定とはNTSCの奇数列のフィールドであるか、偶数列のフィールドであるかを判定することです。SAVとEAVについてですが、SAV(Start of Active Video)とEAV(End of Active Video)の部分のデータが1列分のデータとなります。つまり、SAVとEAVの間にあるデータで、且つ垂直ブランクでない部分が画像データとなります。上の写真は、SAVとEAVの部分をズームしたものです。
残念なことに、カメレオンUSBロジアナは128Kbitしか容量がありませんので、80列ほどしかデータを記録することができませんでした。しかし、大方ビデオ信号のフォーマットは理解することができましたので、良しとしましょう。


最後に、ロジアナで取得したデータをビットマップに変換して、きちんと画像を構築できるかどうか確認しましょう。
gpb_cusb_test_res01.jpg

gpb_cusb_test_res02.jpg

私は、Borland C++ Builderに慣れているので、そのライブラリであるVCLを利用してプログラムを書きました。VCLを利用すると、ビットマップがTBitmapオブジェクトとしてカプセル化されるので、非常に扱いやすくなります。でも、ここで、また問題が発生しました。わたしは、ロジックアナライザのイメージ・ファイルの読み込みに、STLのifstreamを使ってコーディングしようとしていたんですが、どうもifstreamはVCLと干渉してしまうようです。具体的には、ifstreamでファイルを読み込むと、なぜかメインルーチン終了後に例外が発生するという現象が起こってしまいました。そこで、念のためプロジェクトのVCLを使用するというオプションを外してfstreamを使うと、問題なく動作しました。でも、VCLのTBitmapは絶対に使いたかったので、結局、仕方なくifstreamを使わずにVCLのTFileStreamを使うことにしました。そんなこんなで、簡単なはずのプログラムに妙に時間がかかってしまいました。上の写真についてですが、真ん中が黒くなっている理由は、ちょうどその部分が、垂直ブランクになっているからです。また、ロジアナのメモリの容量が足りない正で、NTSCの片方のフィールドのみしかサンプリングできていないので、偶数列(または奇数列)がかけてしまい、上の写真はちょうど縦に圧縮された感じになってしまっています。

参考資料
http://www.itu.int/
ITUのページです。ITU Electronic Bookshopから勧告書を年間3つまで無料で入手可能です。私は、今回ITU-R BT.656の勧告書を入手しました。
http://www.marumo.ne.jp/bt601/
茂木 和洋さんのページです。ITU-R BT.601に関して詳しく書かれています。ITU-R BT.601はアナログビデオ信号をデジタルデータに変換する際のデータ形式を規定した規格で、ITU-R BT.656はディジタルのバス仕様を規定した規格という位置づけになります。
http://vision.kuee.kyoto-u.ac.jp/~hiroaki/firewire/yuv.html
川嶋 宏彰さんのページです。ITU-R BT.601 規定YCbCrから8bitフルスケールRGBへの変換式はこれを参考にさせていただきました。
  1. 2006/02/26(日) 22:42:59|
  2. ハードウェア開発
  3. | トラックバック:0
  4. | コメント:0
<<お掃除♬~お掃除♬~お部屋の模様替え~ | ホーム | カメレオンUSBロジアナ、箱詰め>>

コメント

コメントの投稿


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

トラックバック

トラックバックURLはこちら
http://tm86eublog.blog42.fc2.com/tb.php/44-f7ffe812
この記事にトラックバックする(FC2ブログユーザー)

来客数

プロフィール

Euphorie

Author:Euphorie
"おいふぉりー"って呼んでくださいな☆
ハードウェアとかソフトウェアとかの開発に興味があったり。。。
連絡先は上の画像。

最近の記事

最近のコメント

最近のトラックバック

月別アーカイブ

カテゴリー

ブロとも申請フォーム

この人とブロともになる

ブログ内検索

RSSフィード

リンク

このブログをリンクに追加する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。