2つの画像センサを利用したアプリケーションと聞いて、まず思い浮かべるのは3Dカメラです。しかし、2台の画像センサからのデータを使用することで性能を向上させることができる製品は他にも数多くあります。その一例が、自動車のバックミラー近くに搭載され、カメラが2つ組み込まれているブラックボックス・ドライブレコーダ(CDR:Car Drive Recorder)です(図1)。カメラの1つはフロントガラスの前方を映し、もう1つはドライバーの方を向いています。カメラで撮影された映像はローカルメモリチップに保存され、事故や衝突が発生した際に回収できるようになっています。

図1 ドライブレコーダ

2つのカメラとそのデータを活用するアプリケーションには、他にも自動車の監視システムや歩行者検知システムにおける精密分析などがあります。こうした製品では、両カメラからの出力を深度認識を含むアルゴリズムの実現に使用します。両カメラからのデータをもとにプロセッサは非常に正確に画像を「視認」して、影やその他の物体と人間を識別します。

こうした製品のすべてに共通して必要なのが、画像信号プロセッサ(ISP:Image Signal Processor/Processing)です。しかし、1つのISPで2つのセンサをサポートすることは容易ではありません。一般にISP自体は2つの画像センサのスループットに対応できますが、ISPデバイスのほとんどは、未だに1つのセンサに対応するインタフェース・ポートしかありません。あるいは2ポートを備えるISPでも2つのセンサからの画像を結合・処理することができず、仮にできたとしても非常にコストがかかりがちです。

ISPインタフェースが1つのセンサ画像しか処理できないことに加え、高解像度画像センサが設計上さらに難しい課題となります。従来、解像度が720p30までの画像センサはすべて、CMOSパラレルバス(図2)によってISPに接続されていました。

図2 CMOSパラレル・インタフェースによるISPとの接続

解像度が720p60以上の場合、CMOSパラレルバスを介して画像センサから画像を伝送しても、満足できる画質は得られません。というのはパラレルバスでは、70MHzを超える速度が必要となり、スイッチングノイズのために画像センサの画像品質が損なわれるためです。この問題の克服のために、画像センサのサプライヤは、データ伝送の手段としてパラレルバスではなくシリアルバスを採用しています。しかしIPSデバイスの多くはパラレルバス用に設計されており、新しいセンサ用シリアルバスをパラレルバスに変換しなければなりません(図3)。

図3 パラレルバスへの変換

最後に、3Dアルゴリズムが必要なアプリケーションでは、2つの画像センサを同期する必要があります。各センサメーカーが独自の手法とフォーマットを採用しているため、これもまた簡単なことではありません。例えば、トリガにI/Oピンを使用している画像センサもあれば、I2CやSPI、またはこれらの組み合わせを用いているセンサもあります。多様なセンサの同期性を確保するために複数のモードに対応しなければならないという設計上の課題に、事実上すべてのISPが直面しています。

これまでに、2つの画像センサに対応するという問題を解決するために、2つの独立したインタフェースと2つの処理エンジンの搭載を試みたISPサプライヤもわずかながらありました。しかし結果としてISPデバイスが非常に高額になり、必要な画像処理能力を超えてしまうだけでなく、ソフトウェア開発者にとっても構成とプログラムが一層複雑になりました。

デュアル画像センサのこうした課題のすべては、2つのセンサを正しくフォーマットし、同期化し、そしてデータを適切な形式にマージしてからISPに送信するデザインにすることで克服できます。前述したように、現行ISPの多くは2つのセンサのスループットを処理可能です。重要なことは、画像を同期化して適切なバス上の適切なフォーマットで受信することです。その点でコスト効率がもっとも良いデザイン・ソリューションとして、小規模FPGAとフレームバッファメモリを使用する方法があります。

図4 FPGAデザイン・ソリューション

図4は、画像データを同期化し、マージし、正しいフォーマットでISPに出力するためのコスト効率の良いソリューションを示しています。「Lattice MachXO2」のような低コストFPGAと、廉価なLP SDRAMデバイスを活用して、2つの画像センサをISPにつなげます。FPGAデザインには、次の機能を組み込む必要があります。まず、ISPからセンサへのレジスタ・インタフェースとしてI2CまたはSPIが必要です。、次にFPGAは両センサにシリアル(I2CまたはSPI)で構成データを送信して、両センサに対して同じ設定をし、またこれらが適切になされていることを確認する必要があります。この時点で、両センサの構成は同じになりますが、さらに両方を同期化させなければなりません。MachXO2 FPGAは柔軟性が高いため、各センサメーカーが求める固有のコントロールを実装できます。各センサが同期動作するように、FPGAは両センサに対してクロックも出力します。両センサのセットアップと同期が完了すると、両センサは画像データの伝送を開始します。

FPGAは、センサのデータストリームをパラレル形式に変換できるように、I/Oセルと論理ファブリック内の高速シリアル画像データをパラレル化します。次いでMachXO2 FPGAは適切なコマンドの制御キャラクタまたはシーケンスを探し、各センサのフレームとラインの開始を認識します。センサ画像データが検出されると、FPGAは生画像データを抽出し、低消費電力SDRAMメモリを使用してフレームを格納します。FPGAで画像データを適切に読み書きするためには、もちろんLP SDRAMメモリコントローラが必要です。次にフレームを適切な出力フォーマットに並べ替えます。一般的なフォーマットとして、上下構成や左右構成があります(図5)。

図5 出力フォーマット

FPGA内のセンサデータは、伝送前にベイヤーパターンの画像形式に変換されます。これにより、正しいRGB色がISPに渡されます。正しい画像データに対して、出力フォーマットは判明しているため、MachXO2 FPGAはフォーマット化したデータをパラレルバスでISPに出力します。前のフレームを送出する間は、外部LP SDRAMが入力フレームのバッファとして使用されます。通常、LP SDRAMはISPへの出力クロックの2倍の速さで動作します。ISPが確実にデータを読み取って認識するように、FPGA出力はパラレル出力の画像センサを模擬するように設計されています。即ちFPGAは、クロックとフレーム有効、ライン有効、そして通常12ビットのデータバスを、ISPに対して生成します。

このデザインは既にLattice SemiconductorとAptinaによって実装済みです。Lattice MachXO2と2つのAptina 9MT024画像センサを用いることにより、このデザインは事実上どのISPにも対応できるコスト効率の良いソリューションとなり、センサの構成、センサ2つの同期化、出力画像データの適切なフォーマット化といった主要なすべての機能を実行します。

著者紹介

Ted Marena
Director of Business Development
Lattice Semiconductor