2014年04月28日

SVI-06用イメージセンサ接続ケーブルを作る

SVI-06とオムニビジョン社製カメラOV7670を接続基板を作成して接続を行う「OV7670とSVI-06をつなぐ中継基盤をつくろう」を掲載しました。
この記事では、カメラモジュールとSVI-06をつなぐ中継基盤を手はんだにより作成する内容でした。

今回は中継基盤を作成するのではなく、もう少しお手軽にフラットケーブルを使用してカメラモジュールとSVI-06をつなぐ方法をご紹介します。
※ご注意:全てのカメラモジュールと接続できる保証はありません。この内容をもとにケーブルを作成される場合にはカメラモジュール等の仕様も検討のうえご判断ください。


今回作成するケーブルの特徴は次のようなものになります。
・8ビットデータ出力のカメラモジュールを使用し、SVI-06ボード1枚に対して2つ接続可能
・カメラモジュールが1つでも使用可能
・カメラとの通信はI2Cにて行う
・カメラ電源は1電源および2電源タイプに対応


カメラ接続ケーブルを作るために準備するものはこちらです。
1.60芯フラットケーブル×1本(今回作成に使用したのは2mリンク先は参考)
2.圧着用コネクタ×1
3.QIコネクタ信号伝達コネクタ(黒)1×1 ×64個
4.QIコネクタ用信号伝達コネクタ用ピン メス×64個
5.ピンヘッダ
6.ラベルシール
7.配線図(2ch_to_1ch_配線図.xlsx


今回作成するケーブルのSVI-06につながる側については、SVI-06のピンヘッダにそのまま差し込めるように、2の圧着用コネクタを接続します。
圧着コネクタを取り付けると下記のようになります。


SVI側圧着コネクタ接続.jpg


次に、カメラ側に接続する方に4. QIコネクタ用信号伝達コネクタ用ピンを取り付けていきます。60芯ケーブルですが、1芯ずつはがしてピンを取り付けます。


圧着コネクタ取り付け時.jpg


取り付け終わるとこのような形になります。このコネクタは圧着ペンチ等の圧着専用の工具を使用して接続を行います。ちなみに今回使用した圧着工具は「大西 圧着工具コネクターピン用(ワイヤーストリッパー付)」です。

このコネクタの取り付けは慣れると2分くらいでできましたが、慣れるまでが大変で、圧着したと思い引っ張ったら、抜けてしまうという失敗を何回かしました。ですので、初めての方はいきなりコネクタに圧着せずに数本練習用のケーブルで試してから本番のコネクタの圧着にうつるほうがよいと思います。

コネクタピンをつけたら、この上に3. QIコネクタ信号伝達コネクタを取り付けます。


圧着コネクタに被せる.jpg


取り付けるとこのようになります。先ほどのコネクターピンの金属がすべて見えなくなります。

これを60芯すべてに適用してできたものがこちらです。


コネクタを取り付けたフラットケーブル.jpg


なかなかの力作です。この状態のケーブルを作るのに半日以上かかりました。

これで事前の準備が完了しました。
次からは配線図をもとにいくつかのケーブルをつなぎ合わせていきます。

まず、配線図を見てください。


配線図概要.jpg


詳細な配線図は(2ch_to_1ch_配線図.xlsx)をダウンロードしてみていただければと思いもますが、SVI-06のピンヘッダはCN4とCN5に分かれています。
CN4が50ピン、CN5が10ピンの計60ピンとなります。データ長が16ビットのカメラを1台接続するのであればCN4の50ピンの接続で対応できるのですが、今回はSVI-06ボード1枚に2つの8ビットデータ長のカメラを接続するのでCN5の10ピンも使用しています。(CN5は拡張ピンヘッダになっており必要がある場合にのみ付属しています。通常はCN5にピンヘッダは付属していません。)

※この配線図は2チャネルカメラを接続するための配線図になっています。SVI-06側のピン配置は変更ありませんが、対象となるカメラのピン配置が異なる場合にはカメラ側の配置を適宜修正してから配線をしてください。


2チャネルカメラで共通の配線になっている、VDDLVDDHSDASCLを分岐させます。
まず、分岐させる芯線を真ん中付近で切断します。そして、分岐させるためにもう一本フリーの芯線を接続してはんだ付けします。(はんだづけは素人です。上手にできていません。)

ケーブルはんだづけ1.jpg


はんだづけしたケーブルを、先ほど切断した残りの片側にはんだ付けします。


ケーブルはんだづけ2.jpg

最後に保護のために収縮チューブなどで覆って完了です。


ケーブルはんだづけ3.jpg


これを4本のケーブルすべてに行います。なお、今回は4つを分岐させましたが必要があればほかのケーブルも同様に分岐させます。

次に、配線図を見ながら芯線1本1本にラベルを張っていきます。ラベルを貼るのは人が見てわかりやすくするためだけですので、特に必要ない場合は行う必要はありません。
最後に4.QIコネクタ用信号伝達コネクタ用ピンの先端にピンヘッダを差し込んでおきます。
最後まで終了すると次のようになります。これで完成です。


ケーブルにラベル添付.jpg


さて、最後に作ったケーブルがちゃんと使えるかどうか、2つのカメラモジュールをつなげて
テストしています。
(今回はカメラにいきなり接続していますが、ケーブルの作成が終わったら念のため、テスターを使って導通チェックを行うとよいと思います。)

ケーブルとカメラ接続.jpg

SVI-06とカメラを繋げました。
つなげるときは配線図を見ながら1ピンずつピンヘッダに挿していきます。
くれぐれも間違えないようにしましょう。

では、つなぎ終わったらカメラからの映像をSVI-06に取り込んでPCの画像に映してみましょう。


接続テスト結果.jpg


2chカメラ接続なので、右と左のカメラで異なる対象物を映しています。その映像がSVI-06に取り込まれて、PC画面上にあるアプリケーションで表示されているのがわかるかと思います。
(※SVI-06は2チャンネルカメラ接続用のFPGAを使用しています。)

今回は、SVI-06ボードとカメラをつなぐケーブルを作成しました。
このようにカメラ側が1ピン1ピン接続可能な状態になっていれば、カメラが変わってもケーブルを作り直すことなく、ピンの配置を変更することで流用することが可能です。
カメラモジュールによってピン配置が異なりますので、いろいろなカメラモジュールを扱う場合には便利だと思います。
ただし、ケーブルにはノイズが乗りやすいのでご使用に際してはカメラ等の状況を確認の上ご判断ください。


ネットビジョンは、5/14〜16に東京ビックサイトで行われます組込みシステム開発技術展に出展します。このケーブルを使用した展示も展示予定です。展示会にお越しの際には是非弊社ブースへもお越しください。
【名 称】第17回組込みシステム開発技術展
【会 場】東京ビッグサイト西展示 
【ブース】西3-62
【会 期】2014年 5月14日(水)〜5月16日(金) 10:00〜18:00
posted by デベマネ at 14:03| Comment(0) | SVシリーズ

2014年04月24日

車載カメラ開発にイメージセンサ信号発生ボードSVO-02を!!

最近では、自動車にカメラを複数台搭載してバックの際に自動車後部の画像を映し出したり、ステレオカメラを用いて車の前方の障害物を監視して安全に走行を支援する、システムなどが開発されてきています。EyeSightエマージェンシーブレーキ等の名称で使用されています。
また、エアコンなどにもカメラを搭載し人のいるところだけに風を送るなどの仕組みにも利用されています。

カメラモジュール(イメージセンサ)といえば以前は携帯電話への搭載される以外の活用はほとんどありませんでしたが、最近ではいろいろなところで活用されて始めています。
それに応じてイメージセンサ信号発生ボードSVO-02も活用される場所が増えてきています。

そこで今回は車載カメラシステム開発に弊社製品であるSVO-02を活用する方法ついてご紹介します。


自動車にカメラを搭載して前方の障害物を監視する場合、障害物を監視するシステムを作るには、やはり実際の走行中のカメラ画像を使用して開発を行うのが一番有効だと思います。


車載カメラによる障害物検知概要.jpg

ただし、これを行うにはカメラを実際に自動車に搭載してリアルタイムでアルゴリズムを検証する必要があります。開発者の人も毎回自動車に乗っての試験を繰り返す必要が出てきます。それではさすがに効率が悪いですね!!

そこで、イメージセンサ信号発生ボードSVO-02の出番というわけです。

事前準備としてSVI-06を自動車に積み込み、実際の車載からの映像を撮影して保存します。SVI-06で撮影したデータを会社に持ち帰り、開発者の机上にあるSVO-02から出力します。これにより、車載カメラで撮影したのとまったく同じ映像信号を出力することができます。


SVO-02を活用した車載カメラシステム開発概要.jpg


この仕組みを活用すれば、検証のために毎回車に乗り込んでの検証を行う必要がなくなりアルゴリズム開発を効率的に進めることができるようになります。
また、SVO-02がカメラモジュールの代わりとなりますので、既存のシステムをそのまま使用することができます。

SVO-02を活用いただいている方からは、「カメラで撮影した映像を繰り返し使えるので、ひとつのロジックを何回も机上で検証することができて便利だ」という声も伺っています。

このように、開発のやり方を根本から変えることができるSVO-02ご興味ある方は是非弊社までお問い合わせください。
posted by デベマネ at 11:18| Comment(0) | SVシリーズ

2014年04月21日

FPGA動的再配置ってどんなもの?〜動的再配置の裏側〜

前回は動的再配置を使っての機能追加の方法について、カメラからのデータ信号の反転という例をもとに説明をしました。
動的再配置を活用すれば、SVI-06基本機能部分を開発しなくて済み、ボードのデバッグも不要なので大幅な作業工数の削減が行えます。とても簡単にユーザロジックを組み込むことができる動的再配置を使わない手はないですね。そこで今回は動的再配置の特徴などを説明します。

FPGAのプラグイン的な機構ともいえる動的再配置ですが、この機能を活用する最大のメリットは、SVI-06の基本機能である“ボード上のメモリへ画像を取り込み、その画像データをホストPCへ転送する処理”などの大がかりで煩雑な機能を、開発することなくそのまま活用することができる点にあります。
SVIシリーズは2004年から販売を開始し、イメージセンサを活用する国内外の多くの企業に導入されています。そのため、カメラモジュールやイメージセンサの信号への対応やPCへの画像転送など多くの実績を積み重ねてきております。
そのため、動的再配置を活用したユーザは、ユーザ固有の追加機能開発に集中することができ、短期間でかつ効率的な追加機能の設計、開発、検証、評価を行うことができます。
また、カメラのデータ信号をもとにユーザ固有の機能を自由に追加できますので、データ信号の形式が変更になった場合や、カメラモジュールに限定することなく、様々なデータ入力に対応することができます。


動的再配置利用イメージ.jpg


また、ユーザが作成したFPGAソースコードは弊社を含めて公開することなくSVI-06のFPGAに組み込むことが可能です。これにより、ソースコード共有による知的資産の流出も防ぐことができます。また、FPGAソースコードの自社開発が容易になり委託開発をせずに済むため、開発コストを低く抑えることができます。


動的再配置のメリット.jpg


動的再配置領域で複数のモジュールに対応すれば、SVI-06ボードの汎用性が高まるため新規のボードを開発することなく、SVI-06ボードを多くのモジュールで活用していただくことができます。
動的再配置領域でできることは次のようなものを想定しています。
・カメラI/F変換
・画像の拡大、縮小、圧縮
・色変換
・ホワイトバランス等の画質調整、補正
・画像の解析
・2ch入力(ステレオ・カメラ)
・カメラ以外のセンサやターゲットからのデータ取り込み
・その他カメラの付加機能



便利な機能ではあるものの、デメリットもあると考えています。こちらの仕様に則って追加機能の開発を行っていただくため、ある程度の仕様を把握していただく必要があります。この部分のラーニングコストが発生してしまいます。
また、現時点ではカメラからSVI-06Coreの間のPre-process(前処理)部分のみの追加開発しかできないという点です。実は、このデメリットについては、弊社にて機能開発を進めていけば解決することができます。具体的にはFrame Memoryを処理できる動的再配置領域(Intermediate Process(中間処理))とFrame MemoryとUSB3.0 I/Fに渡す間に動的再配置領域(Post-process(後処理))を追加することを行います。


動的再配置の全体構成.jpg


詳細につきましては弊社サイトの動的再配置ページをご確認ください。



3回に分けて動的再配置の説明を行ってきました。メリット・デメリットをご理解いただいた上でご活用を検討いただければ幸いです。またこの機構自体を自社の仕組みとして組み込みたいといった場合のコンサルティングも可能です。
弊社の製品紹介の色が濃い内容となってしまいましたが、このような技術開発にも取り組んでおります。
ぜひ、興味ありましたら弊社までお問い合わせください。
posted by デベマネ at 10:35| Comment(0) | SVシリーズ

2014年04月14日

FPGA動的再配置ってどんなもの? 〜実際に作ってみよう〜

前回はFPGAプラグイン的な機能である動的再配置の概念について説明をしました。今回は、実際どのようなことができるのか実例を挙げて説明していきます。

FPGAプラグイン的な機能ということからわかる通り、機能を追加するための場所や記述の方法があらかじめ決められています。
そこで今回は、イメージセンサからの入力を受けて、Video Capture Blockへ信号を渡す間の部分に、追加ロジックを記述したいと思います。イメージとしては下図のようになります。


ロジック追加イメージ.jpg


追加するのは、イメージセンサから出力されるデータ信号を反転させて取り込むロジックです。
追加ロジックを組み込むための方法が決まっていると説明してきました。これはつまり具体的に言えば、追加ロジックを開発するために必要になる、ISE用プロジェクト一式を弊社から提供してことを意味しています。
この弊社から提供しているプロジェクトに追加したいロジックを追加記述していけば良いわけです。ただし、SVI-06Coreとの接続のためのインターフェイスの名称と役割が仕様として決まっておりますので、仕様を守りつつ追加ロジックを記述する必要があります。インターフェイス名称は下記の通りです。


SVI前処理ブロック名称.jpg


簡単にインターフェイスの説明をします。インターフェイスは大きく6個のポートグループから構成されています。ポートグループそれぞれの役割は次の表のとおりとなります。


ポートグループと機能概要.jpg


なお、ポートグループの詳細等につきましては弊社サイトにある「FPGA動的再配置/SVI-06 《FPGA動的再配置の検討・実装方法》」の説明をご覧ください。


では実際にHDL上で設定をしていきましょう。

1.弊社から提供するCDイメージの中に、動的再配置用のISEプロジェクトが格納されているので、ISEプロジェクト一式をPCのハードディスクにコピーします。

<コピー対象フォルダ>
SVI-source\FPGA\SVI06-TOP_DPRPRExxxxxxPub_Vvvv
(xxxxxx:リリース年月日6桁、vvv:リリースしたFPGAバージョン番号)

2. ISE Project Navigatorを起動。

3.File →Open Projectから、「SVI06_TOP.xise」を開きます。(「SVI06_TOP.xise」は1でコピーしたフォルダ直下に格納されています。)下記画面が表示されます。


ISE画面.jpg

4.開いたプロジェクトの中に、「MSviPreprocessBlock_06Stdvvv.v」(vvv:バージョン番号)がありますので、このファイルをこのプロジェクトから削除します。

5. SVI-source\FPGA\SVI06-TOP_DPRPRExxxxxxPub_Vvvv\src\dprpreフォルダ内に「MSviPreprocessBlock_06Empvvv.v」があるのでこれをプロジェクトに読み込みます。

4.5で読み込んだファイルを開きます。

5.ファイルの184行目の「wCamDtS」の前にチルダを追加して保存をおこないます。(反転ロジック追加部分)
修正前:rCamDtI <= wCamDtS;
修正後:rCamDtI <= ~wCamDtS;


反転ロジック追加の様子.jpg

6.DesignウィンドウのProcessツリーで「Synthesize-XST」をダブルクリックし論理合成を行います。

7.DesignウィンドウのProcessツリーで「Implement Design」をダブルクリックして、回路合成を開始します

8.DesignウィンドウのProcessツリーで「Generate Programming File」をダブルクリックすることで、ビットストリームファイルを作成します。

9.作成したビットストリームファイルを「m_s6dpfpgavvv.bat」フォルダにコピーしバッチファイルをダブルクリックします。

10.SVIUpdateアプリケーションを使用し、9で作成したファイルでSVI-06のFPGAの回路を更新します。


FPGAアップデート画面.jpg
このようにして、画像反転のロジックを組み込むことができました。最後にロジック組み込み前と組み込み後の違いをご覧ください。


反転ロジック追加前後の比較.jpg


このように、SVI-06が持っている機能をフル活用して、簡単にカメラからの信号を変換することができました。このFPGAのプラグイン的な機構ともいえる動的再配置を利用して多くの機能が開発されるといいなと思います。
動的再配置で開発したHDLは弊社に公開する必要はありませんし、自由に販売等されても問題ございません。この詳細につきましては弊社Webサイトにある動的再配置のページをご覧ください。
ぜひ、動的再配置の機構や活用の仕方に興味ありましたら弊社までご連絡ください。

次回はこの動的再配置を利用してどのようなことができるのか、どのようなメリット・デメリットなどご紹介いたします。
posted by デベマネ at 11:58| Comment(0) | SVシリーズ

2014年04月08日

FPGA動的再配置ってどんなもの?〜FPGAにもプラグイン機能を〜

イメージレコーダーSVI-06には、「FPGA動的再配置」という機能が搭載されています。実はすごい便利な仕組むなのですが、それを含めて今回から3回ほどこの機能について説明をしていければと思います。

この機能は誤解を恐れずに端的に言ってしまえば、“FPGA版プラグイン機能”といえます。
プラグインとしてわかりやすい例を挙げるとすれば、Webブラウザである、FirefoxやGoogle Chromeに搭載されています。現時点でこれらのプラグインは無数に存在し様々な機能を提供しています。プラグイン作成のための仕様が公開されており、仕様に準拠した形でプラグイン製作者は自由に開発を行うことができます。

FPGA動的再配置もWebブラウザのプラグインの概念をイメージしていただけるとわかりやすいと思います。イメージレコーダーSVI-06は、FPGAにおいてイメージセンサ信号の解釈や、PCへのデータ転送等のロジック(回路機能)を提供しています。この回路機能群をここでは便宜上、「SVI-06Core」と呼びます。SVI-06のユーザはSVI-06ボードを使用することでこの基本機能であるSVI-06Coreを活用し他カメラ開発を行うことができます。

今回のFPGA動的再配置とは、このSVI-06Coreを活用しつつユーザー独自の追加ロジックをプラグインを開発するかの如く開発をすることができるようになります。


動的再配置イメージ .jpg


FPGA動的再配置とは、「FPGAにプラグイン的な機構を導入することにより、ユーザ独自の機能拡張が行いやすくなる機能」といえます。つまり、FPGAのプログラマブルな部分をさらに柔軟に運用できるようになります。この技術は東京農工大学関根研究室の研究を発展させたネットビジョン独自の技術となります。

この技術を使用することのメリットとしては次の2点があります
1.ユーザはSVI-06Core機能がそのまま活用できるため、基本機能開発が不要
2.ユーザが独自に開発したロジック部分のFPGAソースコードを公開しなくてよい

まさに、Webブラウザのプラグインのごとく使用することができるのです。

とはいえ、本当にそんなことができるのかと思われる方も多いと思いますので次回では、動的再配置を使った簡単なサンプルを例として手順をご紹介していきます。
posted by デベマネ at 10:22| Comment(0) | SVシリーズ