Cypress社のCX3を初めて検討する際の留意点

弊社はCypress社のUSB3.0デバイスコントローラFX3及びCX3のUVC対応ファームウェア開発の経験が豊富です。CX3に関して言えば、2014年から携わっています。

弊社開発の事例

2021年現在、CX3に関する情報はCypress社のWebサイトから十分に得られますが、お客様からご相談をお受けした際に勘違いされていることや認識されていないことがあるため、それらを簡単に纏めてみました。

最大転送レート

CX3の仕様としてMIPIデータレーン数は4で、1レーンあたり1Gbpsとなっています。このことからCX3の最大転送レート(理論値)を4Gbpsと勘違いされることがありますが、そうではありません。CX3は内部的には同社のFX3にMIPIパラレル変換が24bitバス(最大100MHz)で接続されたものになり、ここがボトルネックになっています。

ISP処理

イメージセンサの出力フォーマットは大半がRAWです。CX3はISP(Image Signal Processing)機能を持っていません。Bayer RGBを標準RGBにデモザイクしたり、 標準RGB をYUVに変換したり、JPEGにエンコードする機能はありません。ファームウェアでソフトウェア的にISP処理を行うにはCPUがあまりに非力です。そのため、ホストにはRAWのまま転送し、ホストでISP処理をする必要があります。Windows等の一般的なホストOSはRAWをネイティブでサポートしていません。ホストで使用するアプリケーションがお客様独自のものであればそのアプリケーション内でISP処理を行うことで対処できます。しかし、標準的なアプリケーション(Skype、Teams、Zoom等)で使用することは困難になります。カメラ側でのISP処理を望まれる場合は単体ISPチップとの組み合わせになります。

フレームバッファ

CX3はフレームバッファを持っていません。CX3は512もしくは256KBのRAMを持っており、ファームウェアアプリケーションはデータ転送に使うDMAバッファをこの中から割り当てます。例えば、SDKのCX3サンプルファームウェアでは約192KBを割り当てています。DMAバッファに蓄えられたデータはホストからの読み出し要求によってホストに転送されますが、ホストの負荷状況によっては読み出し要求が遅れることがあります。他方、イメージセンサはCX3のDMAバッファの空き具合に関係なくデータを出力します。そのため、DMAバッファがオーバーフローすることが稀にあり、これはフレーム落ちを意味します。CX3はフレーム落ちが許されないシステムには不向きで、そのようなシステムではFX3とFPGAの組み合わせでFPGAにフレームバッファを持たせる構成の方が良いでしょう。

MIPIレシーバ設定

SDKに含まれる「MIPI Receiver configuration tool」というツールを用いてCX3のMIPIレシーバを設定する必要があります。このツール上でイメージセンサとCX3のパラメータを入力しますが、入力結果がCX3の MIPIパラレル変換の能力を超えるとエラーになるため、エラーが出ないように調整する必要があります。CX3側の調整だけでは対応しきれないため、イメージセンサ側を調整する必要も出てきます。イメージセンサの設定をお客様が把握している場合は問題ありませんが、メーカーからリファレンス設定しか提供されておらず内容も把握していないといったような場合にメーカーの協力が必要になります。