以下、本技術を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。
<通信システムの構成例>
図1は、本技術を適用した通信システムの第1の実施の形態の構成例を示すブロック図である。
図1に示すように、通信システム11は、イメージセンサ21およびアプリケーションプロセッサ22がバス23を介して接続されて構成される。例えば、通信システム11は、いわゆるスマートフォンなどのような既存のモバイル機器の内部におけるCSI-2接続に用いられる。
イメージセンサ21は、例えば、レンズや撮像素子(いずれも図示せず)などとともに、拡張モード対応CSI-2送信回路31が組み込まれて構成される。例えば、イメージセンサ21は、撮像素子が撮像することで取得した画像の画像データを、拡張モード対応CSI-2送信回路31によりアプリケーションプロセッサ22へ送信する。
アプリケーションプロセッサ22は、通信システム11を備えるモバイル機器で実行される各種のアプリケーションに応じた処理を行うLSI(Large Scale Integration)とともに、拡張モード対応CSI-2受信回路32が組み込まれて構成される。例えば、アプリケーションプロセッサ22は、イメージセンサ21から送信されてくる画像データを、拡張モード対応CSI-2受信回路32により受信し、その画像データに対して、アプリケーションに応じた処理をLSIにより行うことができる。
バス23は、CSI-2の規格に準拠して信号を伝送する通信経路であり、例えば、信号を伝送することが可能な伝送距離は30cm程度となっている。また、バス23は、図示するように複数本の信号線(I2C,CLKP/N,D0P/N,D1P/N,D2P/N,D3P/N)によって、イメージセンサ21およびアプリケーションプロセッサ22を接続する。
拡張モード対応CSI-2送信回路31および拡張モード対応CSI-2受信回路32は、CSI-2の規格を拡張させた拡張モードでの通信に対応しており、互いに信号の送信および受信を行うことができる。なお、拡張モード対応CSI-2送信回路31および拡張モード対応CSI-2受信回路32の詳細な構成については、図9および10を参照して後述する。
図2は、本技術を適用した通信システムの第2の実施の形態の構成例を示すブロック図である。
図2に示すように、通信システム11Aは、イメージセンサ21およびSerDes装置25がバス24-1を介して接続されるとともに、アプリケーションプロセッサ22およびSerDes装置26がバス24-2を介して接続されており、SerDes装置25およびSerDes装置26がバス27を介して接続されて構成される。例えば、通信システム11Aは、既存の車載カメラにおける接続に用いられる。
ここで、イメージセンサ21およびアプリケーションプロセッサ22は、図1のイメージセンサ21およびアプリケーションプロセッサ22と同様に構成されており、その詳細な説明は省略する。
バス24-1および24-2は、図1のバス23と同様に、CSI-2の規格に準拠して信号を伝送する通信経路であり、図示するように複数本の信号線(HS-GPIO,I2C/I3C,CLKP/N,D0P/N,D1P/N,D2P/N,D3P/N)を備えて構成される。
SerDes装置25は、CSI-2受信回路33およびSerDes(Serializer Deserializer)送信回路34を備えて構成される。例えば、SerDes装置25は、CSI-2受信回路33が、拡張モード対応CSI-2送信回路31との間で通常のCSI-2の規格に準拠した通信を行うことにより、イメージセンサ21から送信されてくるビット並列の信号を取得する。そして、SerDes装置25は、その取得した信号をビット直列に変換して、SerDes送信回路34がSerDes受信回路35との間で1レーンでの通信を行うことにより、その信号をSerDes装置26へ送信する。
SerDes装置26は、SerDes受信回路35およびCSI-2送信回路36を備えて構成される。例えば、SerDes装置26は、SerDes受信回路35が、SerDes送信回路34との間で1レーンでの通信を行うことにより送信されてくるビット直列の信号を取得する。そして、SerDes装置26は、その取得した信号をビット並列に変換して、CSI-2送信回路36が、拡張モード対応CSI-2受信回路32との間で通常のCSI-2の規格に準拠した通信を行うことにより、アプリケーションプロセッサ22へ送信する。
バス27は、A-PHYや、FPD(Flat Panel Display)-LINK IIIなどのような規格に準拠して信号を伝送する通信経路であり、例えば、信号を伝送することが可能な伝送距離は15m程度の長距離となっている。
これらの長距離伝送可能な物理層インタフェースによって、自動車業界が高度な運転支援システム(ADAS)、自動運転システム(ADS)、およびカメラや車載インフォテインメント(IVI)ディスプレイを含むその他のサラウンドセンサーアプリケーションを利用することが可能となる。MIPI A-PHYは、ポイントツーポイントトポロジの非対称データリンク層(非対称上位層)を有し、同一の物理配線を、高速データ伝送、制御データ、電力でシェアすることを可能としており、カメラ、センサー、ディスプレイの統合を簡素化するように設計されたエンドツーエンドシステムの基盤として機能すると同時に、機能的な安全性とセキュリティも組み込むことも可能としている。
このように構成される通信システム11および11Aは、拡張モード対応CSI-2送信回路31および拡張モード対応CSI-2受信回路32により、後述するように拡張されたパケット構造のパケットでデータを送受信することができる。これにより、より多様な用途、例えば、後述するようなRAW24や、SmartROI(Region of Interest)、GLD(Graceful Link Degradation)などに対応することができる。
<パケット構造の第1の構造例>
図3乃至図8を参照して、拡張モード対応CSI-2送信回路31および拡張モード対応CSI-2受信回路32の間の通信で用いられるパケットのパケット構造の第1の構造例について説明する。
図3には、物理層がD-PHYである場合にCSI-2の拡張モードで用いられるパケット(以下、D-PHY用の拡張パケットと称する)の全体的なパケット構造が示されている。
図3に示すように、D-PHY用の拡張パケットは、パケットヘッダおよびパケットフッタが既存のCSI-2規格と同一のパケット構造となっている。例えば、パケットヘッダには、仮想チャネルの回線数を示すVC(VirtualChannel)、データの種類を示すデータタイプ(DataType)、ペイロードのデータ長を示すWC(Word Count)、VCX/ECCが格納される。また、パケットフッタには、CRC(Cyclic Redundancy Check)が格納される。
ここで、既存のCSI-2規格では、パケットヘッダで送信されるデータタイプは、0x38~0x3Fがリザーブと定義されている。そこで、D-PHY用の拡張パケットでは、既存ではリザーブとなっているデータタイプを利用して、受信側で拡張モードを識別するための設定情報が新たに定義される。
例えば、データタイプとして、
・DataType[5:3]=3’b111の場合、拡張モード
・DataType[2]=Reserve(RES:将来の拡張のための予約)
・DataType[1:0]=extension mode type(4つの拡張モードを用意)
を定義する。
即ち、既存のCSI-2規格ではリザーブと定義されているデータタイプの0x38~0x3Fのうち、例えば、DataType[5:3]が拡張モード設定情報として定義され、DataType[1:0]が拡張タイプ設定情報として定義される。拡張モード設定情報は、拡張モードであるか否かを示し、例えば、DataType[5:3]が3’b111である場合には拡張モードであることを示す。また、拡張モードのタイプとして、拡張モード0、拡張モード1、拡張モード2、および拡張モード3の4つのタイプが用意されるとき、拡張タイプ設定情報は、それらのうちの、いずれのタイプであるかを示す。例えば、DataType[1:0]が2’b00である場合には、拡張モードのタイプが拡張モード0であることを示す。
そして、拡張モード0(DataType[1:0]=2’b00)では、例えば、ペイロードが4つに分離されたパケット構造が定義される。即ち、拡張モード0におけるペイロードは、図3に示すように、拡張パケットヘッダ(ePH:extended Packet Header)、オプショナル拡張パケットヘッダ(OePH:Optional extended Packet Header)、レガシーペイロード(Legacy Payload)、および、オプショナル拡張パケットフッタ(OePF:Optional extended Packet Footer)に分離される。なお、拡張パケットヘッダは、繰り返し送信してもよい。
拡張パケットヘッダは、既存のCSI-2規格のペイロードに相当する先頭に配置され、拡張モードでは必ず送信する必要がある。例えば、拡張パケットヘッダは、図示するように、SROIの識別フラグ、拡張VC(VirtualChannel)、拡張DataType、OePHの選択フラグ、およびOePFの選択フラグなどの設定情報で構成される。ここで、拡張VCにより、既存のCSI-2規格では4ビットであったVCが8ビットに拡張され、拡張DataTypeにより、既存のCSI-2規格では4ビットであったDataTypeが8ビットに拡張される。
例えば、D-PHY用のパケットでは、既存のパケットヘッダのVCが既に4ビット存在しており、拡張パケットヘッダの拡張VCを4ビットと定義することにより、合計で8ビットとすることができる。具体的には、OePH[7:0] = {5’h00,RSID,XY_POS,MC}、OePF[3:0] = {3’h0,pCRC}と定義することができ、それぞれの用途に必要なパケット送信のON/OFFを制御することができる。
オプショナル拡張パケットヘッダおよびオプショナル拡張パケットフッタは、用途に応じて選択的に伝送される。
レガシーペイロードは、既存のCSI-2の規格と同一のペイロードに相当する。
このように、拡張パケットヘッダ、オプショナル拡張パケットヘッダ、およびオプショナル拡張パケットフッタを必要に応じて設定することで、様々な用途に対応したデータを送信することができるようになる。また、拡張パケットヘッダ、オプショナル拡張パケットヘッダ、およびオプショナル拡張パケットフッタで伝送されるデータは、26bit+6bitのECC(Error Correction Code)とする。これにより、既存のパケットヘッダの回路を流用して回路規模の増大を抑制し、かつ、エラー耐性の向上を図ることができる。
このようなD-PHY用の拡張パケットの具体的な適用例として、図4には、物理層がD-PHYである場合にCSI-2の拡張モードで用いられるショートパケット(以下、D-PHY用の拡張ショートパケットと称する)のパケット構造が示されている。同様に、図5には、物理層がD-PHYである場合にCSI-2の拡張モードで用いられるロングパケット(以下、D-PHY用の拡張ロングパケットと称する)のパケット構造が示されている。
図4に示すようなD-PHY用の拡張ショートパケットにおいて、パケットヘッダに格納されているデータタイプの拡張タイプ設定情報は、拡張モードのタイプが拡張モード0であること(DT[5:0]=0x1C(5’b111_0_0))を示している。また、拡張パケットヘッダに格納されているデータタイプのショートパケット設定情報は、ショートパケットであること(DT[7:0]=0x00 (Frame Start Code(Short Packet)))を示している。
このように、拡張モードであり、かつ、拡張パケットヘッダに格納されているデータタイプがDT[7:0]=0x00~0x0Fである場合、拡張ショートパケットとし、オプショナル拡張パケットヘッダには必ず、拡張ショートパケットのShort Packet Data Fieldを含むデータが伝送される。このShort Packet Data Fieldは、既存のCSI-2の規格で定義されたものと同一である。
なお、拡張ショートパケットの送信時には、オプショナル拡張パケットヘッダのうち、MC(GLD用MessageCount)とRSID(車載用行番号とSourceID)は送信しても良いが、レガシーペイロードとpCRCは不要であるため、送信禁止である。仮に、それらを誤って送信した場合には、受信側で無視される。
そして、図4に示すようなパケット構造の拡張ショートパケットは、既存のCSI-2の規格に従った拡張ショートパケットと比較して、データタイプおよび仮想チャネルのビット幅を拡張することができ、オプショナル拡張パケットヘッダで定義される様々な用途に対応することができる。また、これらの機能が必要でない場合は、既存のCSI-2の規格に従った拡張ショートパケットを、拡張ロングパケットと一緒に送信するようにしてもよい。
図5に示すようなD-PHY用の拡張ロングパケットにおいて、パケットヘッダに格納されているデータタイプの拡張タイプ設定情報は、拡張モードのタイプが拡張モード0であること(DT[5:0]=0x1C(5’b111_0_0))を示している。また、拡張パケットヘッダに格納されているデータタイプのショートパケット設定情報は、ショートパケット以外であること(DT[7:0]は0x00~0x0F以外(=拡張LongPackt))を示している。従って、拡張ロングパケットでは、Short Packet Data Fieldを含むデータは送信されない。
また、拡張パケットヘッダの設定に従い、オプショナル拡張パケットヘッダ、レガシーペイロード、およびオプショナル拡張パケットフッタが、既存のCSI-2の規格でのペイロードに格納して伝送される。このように、既存のペイロードに格納して伝送されるため、既存のSerDes送信回路34およびSerDes受信回路35(図2)には、既存のペイロードで伝送される画像データと同様に認識され、そのまま後段に伝送される。
そして、最後段のアプリケーションプロセッサ22は、パケットヘッダのデータタイプDT[5:0]によって、拡張モードと判定することができる。従って、アプリケーションプロセッサ22は、ペイロードの中身を、拡張パケットヘッダから順に解釈し、所望の拡張モードのデータを取り出すことができる。
図6には、物理層がC-PHYである場合にCSI-2の拡張モードで用いられるパケット(以下、C-PHY用の拡張パケットと称する)の全体的なパケット構造が示されている。なお、図6に示すC-PHY用の拡張パケットにおいて、図3のD-PHY用の拡張パケットと共通する構成については説明を省略し、異なる構成について説明を行う。
例えば、C-PHY用の拡張パケットでは、図3のD-PHY用の拡張パケットと同様に、データタイプで拡張モードを識別し、アプリケーションプロセッサ22で実行される各アプリケーションに応じたデータは、すべてペイロードに埋め込まれて伝送される。
図6に示すように、C-PHY用の拡張パケットは、既存のCSI-2規格に従ったC-PHY用のパケットと同様に、パケットヘッダを2回伝送し、C-PHYが16bitを7symbolに変換する都合上、16bit単位でデータを並べる。また、ペイロードの先頭には拡張パケットヘッダが配置されるが、仮想チャネルに関しては、C-PHYの場合、既存のパケットヘッダの先頭がその為にReserveとなっていたため、拡張パケットヘッダには仮想チャネルは格納されない。もちろん、D-PHY用の拡張パケットと同様に、拡張パケットヘッダに仮想チャネルを格納してもよい。
また、オプショナル拡張パケットヘッダおよびオプショナル拡張パケットフッタはビット数が多いため、OePHFというフラグを準備し、このフラグが1の場合、OePH/OePF情報が次に伝送される。そして、ePH情報およびOePH情報の後、拡張パケットヘッダとしてCRCを伝送し、同様に構成されるパケットヘッダを2回繰り返して伝送する。このように、既存のパケットヘッダが2回伝送される仕組みと構造を同じにすることで、回路再利用性およびエラー耐性を両立することができる。
このようなC-PHY用の拡張パケットの具体的な適用例として、図7には、物理層がC-PHYである場合にCSI-2の拡張モードで用いられるショートパケット(以下、C-PHY用の拡張ショートパケットと称する)のパケット構造が示されている。同様に、図8には、物理層がC-PHYである場合にCSI-2の拡張モードで用いられるロングパケット(以下、C-PHY用の拡張ロングパケットと称する)のパケット構造が示されている。
なお、図7に示すC-PHY用の拡張ショートパケットは、図4に示したD-PHY用の拡張ショートパケットとパケット構造に大きな差異はなく、図8に示すC-PHY用の拡張ロングパケットは、図5に示したD-PHY用の拡張ロングパケットとパケット構造に大きな差異はない。
<イメージセンサおよびアプリケーションプロセッサの構成例>
図9は、拡張モード対応CSI-2送信回路31を備えるイメージセンサ21の構成例を示すブロック図である。
図9に示すように、イメージセンサ21は、拡張モード対応CSI-2送信回路31の他に、画素41、AD変換器42、画像処理部43、画素CRC演算部44、物理層処理部45、I2C/I3Cスレーブ46、およびレジスタ47を備えて構成される。また、拡張モード対応CSI-2送信回路31は、パッキング部51、パケットヘッダ生成部52、拡張パケットヘッダ生成部53、拡張パケットフッタ生成部54、選択部55および56、CRC演算部57、レーン分配部58、CCIスレーブ59、並びに、コントローラ60を備えて構成される。
画素41は、受光した光の光量に応じたアナログの画素信号を出力し、AD変換器(ADC:Analog-to-Digital Converter)42は、画素41から出力される画素信号をデジタル変換して画像処理部43に供給する。画像処理部(ISP:Image Signal Processor)43は、画素信号に基づく画像に対する各種の画像処理を施して得られる画像データを画素CRC演算部44およびパッキング部51に供給する。また、画像処理部43は、画像データが有効であるか否かを示すデータイネーブル信号data_enをパッキング部51およびコントローラ60に供給する。
画素CRC演算部44は、画像処理部43から供給される画像データにおける画素ごとのCRCを演算して求め、そのCRCを拡張パケットフッタ生成部54に供給する。
物理層処理部45は、C-PHYおよびD-PHYの両方の物理層処理を実行することができる。例えば、物理層処理部45は、コントローラ60から供給されるC層イネーブル信号cphy_enが有効である場合にはC-PHYの物理層処理を実行し、C層イネーブル信号cphy_enが無効である場合にはD-PHYの物理層処理を実行する。そして、物理層処理部45は、レーン分配部58により4レーンに分割されたパケットを、アプリケーションプロセッサ22へ送信する。
I2C/I3Cスレーブ46は、I2C(Inter-Integrated Circuit)またはI3C(Improved Inter Integrated Circuits)の規格に基づき、アプリケーションプロセッサ22のI2C/I3Cマスタ72(図10)による主導に従って通信を行う。
レジスタ47には、アプリケーションプロセッサ22から送信されてくる各種の設定が、I2C/I3Cスレーブ46およびCCIスレーブ59を介して書き込まれる。ここで、レジスタ47に書き込まれる設定としては、例えば、CSI-2規格に従った通信設定や、拡張モードの使用の有無を示す拡張モード設定、拡張モードでの通信で必要となる固定の通信設定などがある。
パッキング部51は、画像処理部43から供給される画像データを、パケットのペイロードに格納するパッキング処理を行い、そのペイロードを選択部55およびレーン分配部58に供給する。
パケットヘッダ生成部52は、コントローラ60から供給されるパケットヘッダ生成指示信号ph_goに従って、パケットヘッダの生成が指示されると、パケットヘッダを生成して選択部55およびレーン分配部58に供給する。
即ち、パケットヘッダ生成部52は、パケットで伝送されるデータについて設定された条件を示す設定情報、例えば、データのタイプを示すデータタイプを格納するパケットヘッダを、既存のCSI-2規格に従って生成する。また、パケットヘッダ生成部52は、パケットで伝送されるデータのタイプを示す設定情報であるデータタイプにおいて、既存のCSI-2規格では未使用と定義されている未使用領域に、拡張ヘッダを使用する拡張モードであるか否かを示す拡張モード設定情報を格納する。さらに、パケットヘッダ生成部52は、未使用領域に、拡張モードとして用意される複数のタイプの拡張モードのうちの、いずれのタイプであるかを示す拡張タイプ設定情報を格納する。
拡張パケットヘッダ生成部53は、コントローラ60から供給される拡張パケットヘッダ生成指示信号eph_goおよび拡張パケットヘッダイネーブル信号ePH_enに従って、拡張パケットヘッダおよびオプショナル拡張パケットヘッダそれぞれを生成し、選択部56およびレーン分配部58に供給する。また、拡張パケットヘッダ生成部53には、イメージセンサ21の用途に応じて、車載用行番号やソースID(identification)などが供給され、必要に応じて、それらを拡張パケットヘッダまたはオプショナル拡張パケットヘッダに格納する。
即ち、拡張パケットヘッダ生成部53は、パケットヘッダ生成部52により生成されるパケットヘッダとは別に、例えば、図3に示したような設定情報を格納する拡張パケットヘッダを生成する。さらに、拡張パケットヘッダ生成部53は、オプショナル拡張パケットヘッダを送信する場合、オプショナル拡張パケットヘッダを送信するか否かを示すオプショナル拡張パケットヘッダ設定情報(OePH[7:0])として、オプショナル拡張パケットヘッダを送信することを示すオプショナル拡張パケットヘッダ設定情報を拡張パケットヘッダに格納し、拡張パケットヘッダに続けてオプショナル拡張パケットヘッダを生成する。
拡張パケットフッタ生成部54は、コントローラ60から供給される拡張パケットフッタ生成指示信号epf_goおよび拡張パケットヘッダイネーブル信号ePF_enに従って、オプショナル拡張パケットフッタを生成し、選択部56およびレーン分配部58に供給する。
即ち、拡張パケットフッタ生成部54は、拡張モードにおいて伝送されるパケットが、既存のCSI-2規格においてペイロードとして伝送されるデータを格納する拡張ロングパケットである場合に、データが格納されるレガシーペイロードに続けて配置されるオプショナル拡張パケットフッタを生成する。
また、パケットヘッダ生成部52、拡張パケットヘッダ生成部53、および拡張パケットフッタ生成部54には、コントローラ60からC層イネーブル信号cphy_enが供給される。そして、C層イネーブル信号cphy_enが有効を示している場合、パケットヘッダ生成部52はC-PHY用のパケットヘッダを生成し、拡張パケットヘッダ生成部53はC-PHY用の拡張パケットヘッダおよびオプショナル拡張パケットヘッダを生成し、拡張パケットフッタ生成部54はC-PHY用のオプショナル拡張パケットフッタを生成する。一方、C層イネーブル信号cphy_enが無効を示している場合、パケットヘッダ生成部52はD-PHY用のパケットヘッダを生成し、拡張パケットヘッダ生成部53はD-PHY用の拡張パケットヘッダおよびオプショナル拡張パケットヘッダを生成し、拡張パケットフッタ生成部54はD-PHY用のオプショナル拡張パケットフッタを生成する。
選択部55は、コントローラ60から供給されるC層イネーブル信号cphy_enに従って、C層イネーブル信号cphy_enが有効である場合、パケットヘッダ生成部52から供給されるパケットヘッダを選択し、選択部56へ供給する。一方、選択部55は、C層イネーブル信号cphy_enが無効である場合、パッキング部51から供給されるペイロードを選択し、選択部56へ供給する。
選択部56は、コントローラ60から供給されるデータ選択信号data_selに従って、選択部55を介して選択的に供給されるパケットヘッダまたはペイロード、拡張パケットヘッダ生成部53から供給される拡張パケットヘッダおよびオプショナル拡張パケットヘッダ、拡張パケットフッタ生成部54から供給されるオプショナル拡張パケットフッタのうち、いずれかを選択してCRC演算部57に供給する。
CRC演算部57は、選択部56を介して選択的に供給されるパケットヘッダ、ペイロード、拡張パケットヘッダ、オプショナル拡張パケットヘッダ、またはオプショナル拡張パケットフッタのCRCを演算して求め、そのCRCをレーン分配部58に供給する。
レーン分配部58は、コントローラ60の制御に従って、パッキング部51から供給されるペイロード、パケットヘッダ生成部52から供給されるパケットヘッダ、拡張パケットヘッダ生成部53から供給される拡張パケットヘッダおよびオプショナル拡張パケットヘッダ、拡張パケットフッタ生成部54から供給されるオプショナル拡張パケットフッタ、並びに、CRC演算部57から供給されるCRCを、CSI-2の規格に従った4レーンに分配して、物理層処理部45に供給する。
CCI(Camera Control Interface)スレーブ59は、CSI-2の規格に基づき、アプリケーションプロセッサ22のCCIマスタ88(図10)による主導に従って通信を行う。
コントローラ60は、レジスタ47に記憶されている各種の設定を読み出して、それらの設定に従って、拡張モード対応CSI-2送信回路31を構成する各ブロックに対する制御を行う。例えば、コントローラ60は、送信対象のデータの内容に応じて、既存のCSI-2規格に従ったパケット構造のパケットの送信と、拡張モード時におけるパケット構造のパケットの送信との切り替えを制御する。
このようにイメージセンサ21は構成されており、図3乃至図8を参照して説明したようなパケット構造の拡張パケットを生成して、アプリケーションプロセッサ22へ送信することができる。
図10は、拡張モード対応CSI-2受信回路32を備えるアプリケーションプロセッサ22の構成例を示すブロック図である。
図10に示すように、アプリケーションプロセッサ22は、拡張モード対応CSI-2受信回路32の他に、物理層処理部71、I2C/I3Cマスタ72、レジスタ73、およびコントローラ74を備えて構成される。また、拡張モード対応CSI-2受信回路32は、パケットヘッダ検出部81、レーン併合部82、解釈部83、選択部84および85、CRC演算部86、アンパッキング部87、並びに、CCIマスタ88を備えて構成される。
物理層処理部71は、C-PHYおよびD-PHYの両方の物理層処理を実行することができる。上述したように、イメージセンサ21の物理層処理部45では、C-PHYおよびD-PHYのうちの、いずれか一方の物理層処理が行われ、物理層処理部71は、物理層処理部45において実行されたのと同一の物理層処理を実行する。
I2C/I3Cマスタ72は、I2CまたはI3Cの規格に基づき、イメージセンサ21のI2C/I3Cスレーブ46(図9)との通信を主導して行う。
レジスタ73には、コントローラ74により、イメージセンサ21のレジスタ47に書き込むべき各種の設定が記録される。
コントローラ74は、アプリケーションプロセッサ22を構成する各ブロックに対する制御を行う。
パケットヘッダ検出部81は、物理層処理部71から供給されるパケットからパケットヘッダを検出し、パケットヘッダに格納されているデータタイプを確認する。そして、パケットヘッダ検出部81は、パケットヘッダのデータタイプにおいて、拡張モード設定情報が拡張モードであることを示す場合(DataType[5:3]=3’b111)、拡張モードを示す拡張モード検出フラグを、解釈部83、選択部84、および選択部85に供給する。また、パケットヘッダ検出部81は、パケットヘッダに基づいて、分割されている4レーンの併合を有効とするか否かを示す併合イネーブル信号mrg_enをレーン併合部82に供給する。
即ち、パケットヘッダ検出部81は、既存のCSI-2規格に従って、パケットで伝送されるデータについて設定された条件を示す設定情報(データタイプなど)が格納されるパケットヘッダを検出する。このとき、パケットヘッダ検出部81は、パケットで伝送されるデータのタイプを示す設定情報であるデータタイプにおいて、既存のCSI-2規格では未使用と定義されている未使用領域に格納されている、拡張ヘッダを使用する拡張モードであるか否かを示す拡張モード設定情報に従って、拡張モード検出フラグを出力することで、既存のCSI-2規格に従ったパケット構造のパケットの受信と、拡張モード時におけるパケット構造のパケットの受信との切り替えを行わせる。また、パケットヘッダ検出部81は、既存のCSI-2規格では未使用と定義されているデータタイプの未使用領域に格納されている拡張モードタイプ情報に従って、拡張モードとして用意される複数のタイプの拡張モードのうちの、いずれのタイプの拡張モードであるかを認識する。
レーン併合部82は、パケットヘッダ検出部81から供給される併合イネーブル信号mrg_enが有効である場合、物理層処理部71から供給される4レーンに分割されたパケットを併合する。そして、レーン併合部82は、1レーンのパケットを解釈部83、選択部84、および選択部85に供給する。
解釈部83は、パケットヘッダ検出部81から供給される拡張モード検出フラグが、拡張モードであることを示している場合、拡張モードのパケット構造に基づいて、レーン併合部82から供給されるパケットから、拡張パケットヘッダ、オプショナル拡張パケットヘッダ、およびオプショナル拡張パケットフッタを読み出す。そして、解釈部83は、拡張パケットヘッダ、オプショナル拡張パケットヘッダ、およびオプショナル拡張パケットフッタに格納されている設定情報を解釈する。
即ち、解釈部83は、拡張ヘッダとして、既存のCSI-2規格に従ったペイロードの先頭に配置される拡張パケットヘッダを受信し、拡張パケットヘッダに格納されている設定情報を解釈する。また、解釈部83は、拡張パケットヘッダに格納されているオプショナル拡張パケットヘッダ設定情報が、用途に応じて選択的に伝送されるオプショナル拡張パケットヘッダを送信することを示している場合、拡張パケットヘッダに続けてオプショナル拡張パケットヘッダを受信し、オプショナル拡張パケットヘッダに格納されている設定情報を解釈する。さらに、解釈部83は、拡張モードにおいて伝送されるパケットが、既存のCSI-2規格においてペイロードとして伝送されるデータを格納する拡張ロングパケットである場合に、データが格納されるレガシーペイロードに続けて配置されるオプショナル拡張パケットフッタを受信し、オプショナル拡張パケットフッタを解釈する。
そして、解釈部83は、例えば、オプショナル拡張パケットヘッダに格納されている車載用行番号やソースIDなどを読み出して、後段のLSI(図示せず)へ出力する。
なお、解釈部83は、パケットヘッダ検出部81から供給される拡張モード検出フラグが、拡張モードであることを示していない場合には、即ち、既存のパケット構造のパケットが供給されている場合には、上述したような処理を行わずに停止する。
選択部84は、パケットヘッダ検出部81から供給される拡張モード検出フラグに従い、既存パケットのパケット構造または拡張パケットのパケット構造に基づいて、選択的に、アンパッキング部87へデータを供給する。
選択部85は、パケットヘッダ検出部81から供給される拡張モード検出フラグに従い、既存パケットのパケット構造または拡張パケットのパケット構造に基づいて、選択的に、CRC演算部86へデータを供給する。
CRC演算部86は、選択部85を介して選択的に供給されるパケットヘッダ、ペイロード、拡張パケットヘッダ、オプショナル拡張パケットヘッダ、またはオプショナル拡張パケットフッタのCRCを演算する。そして、CRC演算部86は、CRCエラーが検出された場合、その旨を示すcrcエラー検出信号を後段のLSI(図示せず)へ出力する。
アンパッキング部87は、選択部84を介して選択的に供給されるペイロードに格納されている画像データを取り出すアンパッキング処理を行い、取得した画像データを後段のLSI(図示せず)へ出力する。
CCIマスタ88は、CSI-2の規格に基づき、イメージセンサ21のCCIスレーブ59(図9)との通信を主導して行う。
このようにアプリケーションプロセッサ22は構成されており、イメージセンサ21から送信されてくる拡張パケットを受信して、拡張パケットヘッダ、オプショナル拡張パケットヘッダ、およびオプショナル拡張パケットフッタに格納されている設定情報を解釈して、画像データを取得することができる。
<通信処理>
図11乃至図14を参照して、イメージセンサ21およびアプリケーションプロセッサ22で行われる通信処理について説明する。
図11は、イメージセンサ21がパケットを送信する処理を説明するフローチャートである。
例えば、バス23を介して、イメージセンサ21がアプリケーションプロセッサ22に接続されると処理が開始される。ステップS11において、コントローラ60は、アプリケーションプロセッサ22と通信を開始するにあたって、拡張モードを使用するか否かを判定する。例えば、コントローラ60は、レジスタ47に記憶されている拡張モード設定を確認し、拡張モードを使用することを示す拡張モード設定がアプリケーションプロセッサ22により書き込まれている場合、拡張モードを使用すると判定する。
ステップS11において、コントローラ60が、拡張モードを使用しないと判定した場合、処理はステップS12に進む。
ステップS12において、I2C/I3Cスレーブ46は、アプリケーションプロセッサ22から(後述する図13のステップS54で)送信されてくる画像データの送信開始命令を受信する。さらに、I2C/I3Cスレーブ46は、その送信開始命令とともに送信されてくるCSI-2規格に従った通信設定を受信して、CCIスレーブ59を介してレジスタ47に書き込む。
ステップS13において、イメージセンサ21では、レジスタ47に記憶されている通信設定に基づいて、既存のCSI-2規格に従ったパケット構造のパケットをアプリケーションプロセッサ22へ送信する、従来のパケット送信処理が実行される。
一方、ステップS11において、コントローラ60が、拡張モードを使用すると判定した場合、処理はステップS14に進む。
ステップS14において、I2C/I3Cスレーブ46は、拡張モードでの通信で必要となる固定の通信設定(例えば、GLD時のPH/PFのレーンごとのコピーなど)を受信して、CCIスレーブ59を介してレジスタ47に書き込む。
ステップS15において、I2C/I3Cスレーブ46は、アプリケーションプロセッサ22から(後述する図13のステップS57で)送信されてくる画像データの送信開始命令を受信する。さらに、I2C/I3Cスレーブ46は、その送信開始命令とともに送信されてくるCSI-2規格に従った通信設定を受信して、CCIスレーブ59を介してレジスタ47に書き込む。
ステップS16において、コントローラ60は、パケットの送信を開始するか否かを判定し、パケットの送信を開始すると判定するまで処理を待機する。
そして、ステップS16において、パケットの送信を開始すると判定された場合、処理はステップS17に進み、コントローラ60は、拡張モードで送信すべきデータであるか否かを判定する。ここで、コントローラ60は、送信対象のデータの内容に応じて、例えば、後述するような適用例のユースケースで送信されるようなデータである場合、拡張モードで送信すべきデータであると判定する。
ステップS17において、コントローラ60が、拡張モードで送信すべきデータであると判定した場合、処理はステップS18に進み、拡張モードに対応した拡張パケットを送信する拡張モード送信処理(図12参照)が行われる。
一方、ステップS17において、コントローラ60が、拡張モードで送信すべきデータでないと判定した場合、処理はステップS19に進む。
ステップS19において、コントローラ60は、ショートパケットを送信するか否かを判定する。例えば、コントローラ60は、フレーム開始時およびフレーム終了時にショートパケットを送信すると判定する。
ステップS19において、コントローラ60がショートパケットを送信すると判定した場合、処理はステップS20に進む。ステップS20において、パケットヘッダ生成部52がパケットヘッダを生成して、従来のパケット構造のショートパケットをアプリケーションプロセッサ22へ送信する。
一方、ステップS19において、コントローラ60がショートパケットを送信しない(即ち、ロングパケットを送信する)と判定した場合、処理はステップS21に進む。ステップS21において、パッキング部51が画像データをペイロードに格納し、CRC演算部57がCRCを求めることにより、従来のパケット構造のロングパケットを生成して、アプリケーションプロセッサ22へ送信する。
ステップS18、ステップS20、またはステップS21の処理後、処理はステップS22に進み、コントローラ60は、パケット送信処理を終了する。その後、処理はステップS16に戻り、以下、次のパケットを対象として、同様にパケットを送信する処理が繰り返して行われる。
図12は、図11のステップS18の処理で行われる拡張モード送信処理を説明するフローチャートである。
ステップS31において、パケットヘッダ生成部52は、VCやデータタイプ、WCなどを格納したパケットヘッダを生成し、アプリケーションプロセッサ22へ送信する。このとき、パケットヘッダ生成部52は、パケットヘッダのデータタイプに、拡張モードであることを示す拡張モード設定情報(DataType[5:3]=3’b111)、および、拡張モードのモード設定が拡張モード0であることを識別する拡張タイプ設定情報(DataType[1:0] =2’b00)を書き込む。
ステップS32において、アプリケーションプロセッサ22は、拡張ショートパケットを送信するか否かを判定する。例えば、コントローラ60は、フレーム開始時およびフレーム終了時に拡張ショートパケットを送信すると判定する。
ステップS32において、アプリケーションプロセッサ22が、拡張ショートパケットを送信すると判定した場合、処理はステップS33に進む。
ステップS33において、拡張パケットヘッダ生成部53は、ペイロードの1バイト目で、データタイプ(DataType[7:0])をショートパケットと設定した拡張パケットヘッダを送信する。このとき、拡張パケットヘッダ生成部53は、拡張パケットヘッダに格納される各種の設定(例えば、OePH[7:0]やOePF[3:0]など)を行う。
ステップS34において、拡張パケットヘッダ生成部53は、ペイロードの2バイト目に、フレームナンバー(FN:FrameNumber)を格納して送信する。
ステップS35において、拡張パケットヘッダ生成部53は、ステップS33で行われた設定(OePH[7:0])に従って、図4に示したようなオプショナル拡張パケットヘッダを生成して送信する。
ステップS36において、CRC演算部57は、CRCを求めて、パケットフッタとして送信する。
一方、ステップS32において、アプリケーションプロセッサ22が、拡張ショートパケットを送信しない(即ち、ロングパケットを送信する)と判定した場合、処理はステップS37に進む。
ステップS37において、拡張パケットヘッダ生成部53は、ペイロードの1バイト目で、データタイプ(DataType[7:0])をショートパケット以外と設定した拡張パケットヘッダを送信する。このとき、拡張パケットヘッダ生成部53は、拡張パケットヘッダに格納される各種の設定(例えば、OePH[7:0]やOePF[3:0]など)を行う。
ステップS38において、拡張パケットヘッダ生成部53は、ステップS37で行われた設定(OePH[7:0])に従って、図5に示したようなオプショナル拡張パケットヘッダを生成して送信する。
ステップS39において、パッキング部51は、画像処理部43から供給される画像データをパッキングし、レガシーペイロードを生成して送信する。
ステップS40において、拡張パケットフッタ生成部54は、ステップS37で行われた設定(OePF[3:0])に従って、図4に示したようなオプショナル拡張パケットフッタを生成して送信する。
ステップS41において、CRC演算部57は、CRCを求めて、パケットフッタとして送信する。
そして、ステップS36またはS41の処理後、拡張モード送信処理は終了される。
以上のように、イメージセンサ21は、拡張ショートパケットまたは拡張ロングパケットを生成して送信することができる。
図13は、アプリケーションプロセッサ22がパケットを受信する処理を説明するフローチャートである。
例えば、バス23を介して、イメージセンサ21がアプリケーションプロセッサ22に接続されると処理が開始される。ステップS51において、コントローラ74は、イメージセンサ21の初期設定(例えば、物理層としてC-PHYおよびD-PHYのどちらを使用するかなど)をレジスタ73に書き込み、CCIマスタ88を介してI2C/I3Cマスタ72によりイメージセンサ21へ送信する。これにより、その初期設定が、イメージセンサ21のレジスタ47に書き込まれる。
ステップS52において、コントローラ74は、イメージセンサ21が拡張モードに対応しているか否かを認識する。例えば、コントローラ74は、I2C/I3Cマスタ72によりイメージセンサ21のレジスタ47に記憶されている設定値(例えば、拡張PH/PF対応capability)を取得することで、イメージセンサ21が拡張モードに対応しているか否かを認識することができる。または、コントローラ74は、例えば、マニュアルなどによる入力に基づいて、事前に、イメージセンサ21が拡張モードに対応しているか否かを認識することができる。
ステップS53において、コントローラ74は、イメージセンサ21が拡張モードに対応しており、かつ、アプリケーションプロセッサ22が実行するアプリケーションによって拡張モードの使用が求められているか否かを判定する。
ステップS53において、コントローラ74が、イメージセンサ21が拡張モードに対応していない、または、拡張モードの使用が求められていないと判定した場合、処理はステップS54に進む。
ステップS54において、コントローラ74は、I2C/I3Cマスタ72により画像データの送信開始命令をイメージセンサ21へ送信する。このとき、コントローラ74は、CSI-2規格に従った通信設定も送信させる。
ステップS55において、アプリケーションプロセッサ22では、ステップS54で送信した通信設定に基づいて、既存のCSI-2規格に従ったパケット構造のパケットを受信する、従来のパケット受信処理が行われる。
一方、ステップS53において、コントローラ74が、イメージセンサ21が拡張モードに対応しており、かつ、アプリケーションプロセッサ22が実行するアプリケーションによって拡張モードの使用が求められていると判定した場合、処理はステップS56に進む。
ステップS56において、I2C/I3Cマスタ72は、拡張モードでの通信が開始される前に、拡張モードでの通信に必要となる固定の通信設定を送信する。これにより、その固定の通信設定が、イメージセンサ21のレジスタ47に書き込まれる(図11のステップS14)。
ステップS57において、コントローラ74は、I2C/I3Cマスタ72により画像データの送信開始命令をイメージセンサ21へ送信する。このとき、コントローラ74は、CSI-2規格に従った通信設定も送信させる。
ステップS58において、パケットヘッダ検出部81は、物理層処理部71から供給されるデータを確認することによりパケットの受信を開始したか否かを判定し、パケットの受信を開始したと判定するまで処理を待機する。例えば、パケットヘッダ検出部81は、物理層処理部71から供給されるデータからパケットヘッダを検出した場合、パケットの受信を開始したと判定する。
ステップS58において、パケットヘッダ検出部81が、パケットの受信を開始したと判定した場合、処理はステップS59に進む。
ステップS59において、パケットヘッダ検出部81は、ステップS58で検出したパケットヘッダのデータタイプを確認して、受信を開始したパケットが拡張モードに対応した拡張パケットであるか否かを判定する。例えば、パケットヘッダ検出部81は、パケットヘッダのデータタイプにおいて、拡張モード設定情報が拡張モードであることを示す場合(DataType[5:3]=3’b111)、受信を開始したパケットが拡張パケットであると判定する。
ステップS59において、パケットヘッダ検出部81が、受信を開始したパケットが拡張パケットであると判定した場合、処理はステップS60に進み、拡張パケットを受信する拡張モード受信処理(図14参照)が行われる。
一方、ステップS59において、パケットヘッダ検出部81が、受信を開始したパケットが拡張パケットでないと判定した場合、処理はステップS61に進む。
ステップS61において、パケットヘッダ検出部81は、ステップS58で検出したパケットヘッダのデータタイプ(DataType[5:0])を確認して、受信を開始したパケットがショートパケットであるか否かを判定する。
ステップS61において、パケットヘッダ検出部81が、受信を開始したパケットがショートパケットであると判定した場合、処理はステップS62に進む。ステップS62において、パケットヘッダ検出部81は、イメージセンサ21から送信されてくる従来のパケット構造のショートパケットを受信する。
一方、ステップS61において、パケットヘッダ検出部81が、受信を開始したパケットがショートパケットでない(即ち、ロングパケットの受信を開始している)と判定した場合、処理はステップS63に進む。ステップS63において、アンパッキング部87は、イメージセンサ21から送信されてくる従来のパケット構造のロングパケットのペイロードを受信して画像データを取り出し、CRC演算部86は、パケットヘッダに続けて送信されてくるWC+1バイト目をCRCとして受信する。
ステップS60、ステップS62、またはステップS63の処理後、処理はステップS64に進み、コントローラ74は、パケット受信処理を終了する。その後、処理はステップS58に戻り、以下、次のパケットを対象として、同様にパケットを受信する処理が繰り返して行われる。
図14は、図13のステップS60の処理で行われる拡張モード受信処理を説明するフローチャートである。
ステップS71において、パケットヘッダ検出部81は、拡張モードのモード設定が拡張モード0であるか否かを判定する。例えば、パケットヘッダ検出部81は、パケットヘッダのデータタイプにおいて、拡張タイプ設定情報が拡張モード0であることを示す場合(DataType[1:0] =2’b00)、拡張モードのモード設定が拡張モード0であると判定する。
ステップS71において、パケットヘッダ検出部81が、拡張モードのモード設定が拡張モード0であると判定した場合、処理はステップS72に進む。ステップS72において、解釈部83は、ペイロードの1バイト目を拡張パケットヘッダとして受信する。
ステップS73において、解釈部83は、ステップS72で受信した拡張パケットヘッダのデータタイプ(DataType[7:0])を確認して、受信を開始したパケットが拡張ショートパケットであるか否かを判定する。
ステップS73において、解釈部83が、拡張ショートパケットであると判定した場合、処理はステップS74に進む。ステップS74において、解釈部83は、ステップS72で受信した拡張パケットヘッダに格納されている設定(OePH[7:0])に従って、オプショナル拡張パケットヘッダを受信する。
ステップS75において、CRC演算部86は、オプショナル拡張パケットヘッダに続けて送信されてくるWC+1バイト目をCRCとして受信する。
一方、ステップS73において、解釈部83が、拡張ショートパケットでない(即ち、拡張ロングパケットの受信を開始している)と判定した場合、処理はステップS76に進む。ステップS76において、解釈部83は、ステップS72で受信した拡張パケットヘッダに格納されている設定(OePH[7:0])に従って、オプショナル拡張パケットヘッダを受信する。
ステップS77において、アンパッキング部87は、イメージセンサ21から送信されてくる拡張ロングパケットのレガシーペイロードを受信して画像データを取り出す。
ステップS78において、解釈部83は、ステップS72で受信した拡張パケットヘッダに格納されている設定(OePF[3:0])に従って、オプショナル拡張パケットフッタを受信する。
ステップS79において、CRC演算部86は、オプショナル拡張パケットフッタに続けて送信されてくるWC+1バイト目をCRCとして受信する。
そして、ステップS71で拡張モードのモード設定が拡張モード0でないと判定した場合、ステップS75の処理後、またはステップS79の処理後、拡張モード受信処理は終了される。
以上のように、アプリケーションプロセッサ22は、拡張ショートパケットまたは拡張ロングパケットを受信して、データを取得することができる。
<パケット構造の第2の構造例>
図15乃至図18を参照して、拡張モード対応CSI-2送信回路31および拡張モード対応CSI-2受信回路32の間の通信で用いられるパケットのパケット構造の第2の構造例について説明する。
上述の図3乃至図8に示した第1の構造例では、既存のCSI-2規格の互換性を維持することを重視して、パケットヘッダおよびパケットフッタが既存のCSI-2規格と同一のパケット構造とし、拡張パケットヘッダ、オプショナル拡張パケットヘッダ、およびオプショナル拡張パケットフッタによりパケット構造の拡張が図られている。これに対し、以下で説明する第2の構造例では、パケットヘッダおよびパケットフッタを既存のCSI-2規格と異なるものとし、拡張パケットヘッダおよび拡張パケットフッタによりパケット構造の拡張が図られる。
図15には、物理層がD-PHYである場合にCSI-2の拡張モードで用いられるショートパケット(以下、D-PHY用の拡張ショートパケット)のパケット構造が示されている。
図15に示すD-PHY用の拡張ショートパケットは、図4に示した第1の構造例のD-PHY用の拡張ショートパケットと同様に、既存のCSI-2規格と同一のパケットヘッダに格納されるデータタイプによって拡張モードが識別される。
一方、図15に示すD-PHY用の拡張ショートパケットでは、パケットヘッダのデータタイプの次の16ビットに、既存のCSI-2規格に従ったショートパケットと同様に、ショートパケットデータフィールドにフレームナンバーが格納される。そして、パケットヘッダに続いて、図4に示した拡張パケットヘッダと同様に構成される拡張パケットヘッダが送信される。
従って、受信側となるアプリケーションプロセッサ22は、拡張パケットヘッダに格納されているデータタイプを解釈して、拡張ショートパケットである場合に、パケットヘッダのデータフィールドにフレームナンバーが格納されていることを判別することができる。
なお、図15に示すD-PHY用の拡張ショートパケットにおけるオプショナル拡張パケットヘッダは、図4に示した第1の構造例のD-PHY用の拡張ショートパケットにおけるオプショナル拡張パケットヘッダと同様に構成される。しかしながら、オプショナル拡張パケットヘッダは、ペイロードに埋め込まれないパケット構造となっていることより、最後にCRCを付与する必要はない。
図16には、物理層がD-PHYである場合にCSI-2の拡張モードで用いられるロングパケット(以下、D-PHY用の拡張ロングパケット)のパケット構造が示されている。
図16に示すD-PHY用の拡張ロングパケットでは、拡張データはペイロードに埋め込まず、パケットヘッダまたはパケットフッタの一部として伝送される。従って、先頭のパケットヘッダのWCは既存規格と同様に、あくまでペイロードのバイト長を示す。
図17には、物理層がC-PHYである場合にCSI-2の拡張モードで用いられるショートパケット(以下、C-PHY用の拡張ショートパケット)のパケット構造が示されている。
図17に示すC-PHY用の拡張ショートパケットにおける拡張部分は、あくまで既存のCSI-2規格に従ったパケットヘッダの拡張として伝送されるため、フレームナンバーの後に拡張パケットヘッダなど拡張部分が挿入される。そして、既存のCSI-2規格と同様に、パケットヘッダはCRCで終了する。さらに、これらを、SYNCを挟んで2回伝送するパケット構造は、既存のCSI-2規格に従ったショートパケットと同様である。
図18には、物理層がC-PHYである場合にCSI-2の拡張モードで用いられるロングパケット(以下、C-PHY用の拡張ロングパケット)のパケット構造が示されている。
図18に示すC-PHY用の拡張ロングパケットは、上述したように、先頭のパケットヘッダのWCは既存規格と同様に、あくまでペイロードのバイト長を示す点で、図8に示した第1の構造例のC-PHY用の拡張ロングパケットと差異がある。
以上のように図15乃至図18に示す第2の構造例の拡張パケットのパケット構造により、第1の構造例の拡張パケットのパケット構造(図3乃至図8)と同様に、従来よりも多様な用途に対応することが可能となる。
ただし、第2の構造例の拡張パケットは、既存のペイロードに拡張データが埋め込まれずに、既存のパケットヘッダやフッタが拡張されるパケット構造となっている。このため、第2の構造例の拡張パケットのパケット構造を採用する場合には、第1の構造例の拡張パケットのパケット構造を採用する場合と比較して、従来から用いられている通信システムから変更が必要となるような影響を最小限とすることができない。即ち、例えば、既存のSerDes送信回路34がSerDes受信回路35(図2)に対する変更が必要となる。
以上のように、第1の構造例の拡張パケットを採用することで、車載など多彩な用途への対応することができ、かつ、従来から用いられている通信システムから変更が必要となるような影響を最小限として、車載システムを構築することができる。
また、第2の構造例の拡張パケットを採用することで、従来から用いられている通信システムから変更が必要となるものの、車載など多彩な用途への対応することができる。
<イメージセンサおよびアプリケーションプロセッサの変形例>
図19を参照して、イメージセンサおよびアプリケーションプロセッサの変形例について説明する。
上述した図9のイメージセンサ21および図10のアプリケーションプロセッサ22を構成する各ブロックは、D-PHY用およびC-PHY用のパケットの両方に対応して処理を行えるように構成されていた。これに対し、例えば、D-PHY用のパケットを専用に処理を行うブロックと、C-PHY用のパケットを専用に処理を行うブロックとの両方を備え、それぞれで処理を切り替えるようにしてもよい。
図19のAに示すイメージセンサ21Aは、D層処理ブロック部101、C層処理ブロック部102、切り替え部103、およびコントローラ60を備えて構成される。
D層処理ブロック部101は、図9のイメージセンサ21を構成するブロックのうち、D-PHY用のパケットを専用に処理を行うブロックを有している。C層処理ブロック部102は、図9のイメージセンサ21を構成するブロックのうち、C-PHY用のパケットを専用に処理を行うブロックを有している。切り替え部103は、コントローラ60による制御に従って、物理層にD-PHYを用いる場合には、D層処理ブロック部101において生成されるD-PHY用のパケットを出力し、物理層にC-PHYを用いる場合には、C層処理ブロック部102において生成されるC-PHY用のパケットを出力するように切り替えを行う。
図19のBに示すアプリケーションプロセッサ22Aは、切り替え部111、D層処理ブロック部112、C層処理ブロック部113、およびコントローラ74を備えて構成される。
切り替え部111は、コントローラ74による制御に従って、イメージセンサ21Aから送信されてくるパケットを、D層処理ブロック部112およびC層処理ブロック部113の一方に供給するように切り替えを行う。D層処理ブロック部112は、図10のアプリケーションプロセッサ22を構成するブロックのうち、D-PHY用のパケットを専用に処理を行うブロックを有している。C層処理ブロック部113は、図10のアプリケーションプロセッサ22を構成するブロックのうち、C-PHY用のパケットを専用に処理を行うブロックを有している。
このように構成されるイメージセンサ21Aおよびアプリケーションプロセッサ22Aでは、通信を開始する前に、コントローラ60およびコントローラ74の間で、使用する物理層を設定することができる。そして、例えば、物理層にD-PHYが用いられる場合には、D層処理ブロック部101において生成されるD-PHY用のパケットが切り替え部103を介して送信され、切り替え部111を介してD層処理ブロック部112に供給されて処理される。また、例えば、物理層にC-PHYが用いられる場合には、C層処理ブロック部102において生成されるC-PHY用のパケットが切り替え部103を介して送信され、切り替え部111を介してC層処理ブロック部113に供給されて処理される。
<拡張パケットの適用例>
上述した拡張パケットは、例えば、以下のようなユースケースに適用することが検討されている。
例えば、拡張パケットは、より高精細な画像(RAW24)を伝送するようなユースケースに適用することが検討される。
例えば、画像データをRAW形式で送信する際に、既存のCSI-2規格に従ってパケットヘッダに格納されるデータタイプとして、RAW6,RAW7,RAW8,RAW10,RAW12,RAW14,RAW16、およびRAW20が定義されている。これに対し、近年、車載カメラを用いた自動運転に対応するため、より高精細な画像の伝送が期待されている。そこで、拡張パケットを適用してデータタイプのビット数を拡張することで、例えば、拡張パケットヘッダのデータタイプに、より高精細なRAW24を定義することが可能となる。
また、拡張パケットは、画面上の注目画像領域のみを伝送する技術であるSmartROIに適用することが検討される。
例えば、現在、スタジアムや空港などには多数のカメラが設置されている。これらのカメラで撮像した画像の全体が、カメラからインターネットなどのネットワークを経由してクラウドサーバに伝送される場合、インターネットの帯域不足や、クラウド側の計算量またはデータ量の増大などが発生することが想定される。そのため、エッジ(カメラ側)で注目画像領域のみを切り出し、その注目画像領域を伝送することで、インターネットの帯域不足や、クラウド側の計算量またはデータ量の増大などを抑制することが期待される。
このようなSROIを伝送する場合、注目画像領域が画面全体のどこに相当するか受信側に伝えるため、矩形領域(ROI)の左上の座標を一緒に伝送する必要がある。また、受信側からの命令で、所定のタイミングで、撮像画面全体のデータを送る必要がある。従って、例えばフレーム単位でSROI画像と、画像全体(既存のパケットヘッダ)のデータが混在することになる。
そこで、拡張パケットを適用することで、例えば、X座標およびY座標それぞれ16bit以上の座標データを伝送することが可能となる。
さらに、拡張パケットは、チャネル劣化した場合においても帯域やレーン数を減らして通信を継続するGLDに適用するユースケースが検討される。なお、GLDは、CSI-2 ver3.0で検討されている提案である。
例えば、自動運転では、衝突時にカメラを繋ぐケーブルの一部が断線したとしても、断線していないケーブルを使用して通信を継続し、自動的に、安全帯に退避した後に車両を停止することが求められる。そのため、車載用カメラインタフェースが断線検出機能を少なくとも備え、画面上の何行目の情報か示す行番号(16bit)や、どのカメラから送られたことかを示すSourceID(8bit)、伝送番号を示すメッセージカウンタ(16bit)などの情報が必要になる。さらに、上述したようなSROIと組み合わせて使用される場合には、フレーム単位で、これらの情報が伝送されることが考えられる。
そこで、拡張パケットを適用することで、これらの情報を伝送することが可能となる。
<E2E protectionに適応した第1の構成例>
図20乃至図26を参照して、伝送経路上におけるパケット改変等を禁止する規定に適応した構成例について説明する。
例えば、上述の図2を参照して説明したような構成の通信システム11Aにおいて、イメージセンサ21とアプリケーションプロセッサ22とでインタフェースが異なっている場合、伝送経路上においてパケットを変換することが必要となる。つまり、イメージセンサ21の物理層がD-PHYであって、アプリケーションプロセッサ22の物理層がC-PHYである構成の場合、例えば、SerDes装置26においてD-PHY用からC-PHY用にパケットを変換することが必要となる。
このように、SerDes装置26においてパケット変換が行われてしまう構成では、例えば、ISO26262(Functional Safety)が定める規定、即ち、伝送経路上におけるパケット改変等を禁止する規定(以下、E2E(End-toEnd) protectionと称する)に違反することになる。
図20は、本技術を適用した通信システムの第3の実施の形態として、E2E protectionに適応した通信システム201の構成例を示すブロック図である。
図20に示すように、通信システム201は、イメージセンサ211、SerDes装置212、SerDes装置213、およびアプリケーションプロセッサ214が接続されて構成される。なお、図20は、SERDESがA-PHYの場合を例として記載しているが、FPD-LINK3等のような他のSERDES規格を用いて接続される場合も含まれる。その他、SERDES規格においては、CIS-2のフォーマット(少なくともApplication Specific payload)を保ったまま、当該SERDES規格に基づいて通信が行われてもよい。また、SERDESにおいては、物理層処理部237および247はA-PHY以外にも他のSERDES規格の物理層処理部を複数含んでいてもよく、アプリケーションに応じて、物理層処理部を切り替えることができる。
イメージセンサ211は、拡張モード対応CSI-2送信回路221、C-PHYあるいはD-PHY、またはその両方に対応した物理層処理部(以下、C/D-PHY物理層処理部と称する)222、I2CあるいはI3C、またはその両方に対応したスレーブ(以下、I2C/I3Cスレーブと称する)223、並びに、CCIスレーブ224を少なくとも有している。
SerDes装置212は、CSI-2受信回路231、C/D-PHY物理層処理部232、I2C/I3Cマスタ233、CCIマスタ234、CSI-2用A-PHYパケット生成部235、CCI用A-PHYパケット送受信部236、並びに、A-PHYに対応した物理層処理部237を少なくとも有している。例えば、SerDes装置212では、C-PHY用またはD-PHY用のパケットがA-PHY用のパケットに変換され、この変換は、レジスタ設定などに基づいて決められる。
SerDes装置213は、CSI-2送信回路241、C/D-PHY物理層処理部242、I2C/I3Cスレーブ243、CCIスレーブ244、CSI-2用A-PHYパケット受信部245、CCI用A-PHYパケット送受信部246、A-PHYに対応した物理層処理部247を少なくとも有している。例えば、SerDes装置213では、A-PHY用のパケットがC-PHY用またはD-PHY用のパケットに変換され、この変換は、レジスタ設定などに基づいて決められる。
アプリケーションプロセッサ214は、拡張モード対応CSI-2受信回路251、C/D-PHY物理層処理部252、I2C/I3Cマスタ253、並びに、CCIマスタ254を少なくとも有している。
このように通信システム201は構成されており、上述したような構造の拡張パケットがイメージセンサ211から送信されて、アプリケーションプロセッサ214で受信される。ここで、イメージセンサ211の物理層処理部222がD-PHYに対応し、アプリケーションプロセッサ22の物理層処理部252がC-PHYに対応するように通信システム201が構成されていても、E2E protectionに違反しないようにすることが必要となる。
そこで、通信システム201は、E2E protectionに適応することができるように、E2E protectionの保護範囲を、アプリケーションに特有のペイロードであるApplication Specific payload(以下、ASペイロードと称する)に限定する。即ち、ASペイロードは、A-PHY用のパケットからC-PHY用またはD-PHY用のパケットへの変換時や、C-PHY用またはD-PHY用のパケットからA-PHY用のパケットへの変換時に変更を加えることが禁止される。
図21には、E2E protectionに対応するように拡張されたD-PHY用の拡張パケットの構造例が示されている。
図示するように、D-PHY用の拡張パケットは、拡張パケットヘッダ(ePH)、パケットデータ、および拡張パケットフッタ(ePF)からなるASペイロードが、E2E protectionの保護範囲として限定される。
そして、拡張パケットヘッダには、E2E protectionの保護範囲をASペイロードに限定した場合に必要となる所定情報が記載される。例えば、拡張パケットヘッダに記載される所定情報として、パケットデータのデータ長を同定することができるようにするために、ASペイロードに格納されるデータのデータ長を示すパケットカウントPC(Packet Count)が追加される。即ち、パケットデータは、パケットカウントPCで定められたバイト数となる。また、拡張パケットヘッダに記載される所定情報として、仮想チャネルの回線数を示すバーチャルチャネルVC(Virtual Channel)が、既存のパケットヘッダへコピーされる。
図22には、E2E protectionに対応するように拡張されたC-PHY用の拡張パケットの構造例が示されている。
図示するように、C-PHY用の拡張パケットは、D-PHY用の拡張パケットと同様に、拡張パケットヘッダ(ePH)、パケットデータ、および拡張パケットフッタ(ePF)からなるASペイロードが、E2E protectionの保護範囲として限定される。そして、拡張パケットヘッダには、D-PHY用の拡張パケットと同様に、E2E protectionの保護範囲をASペイロードに限定した場合に必要となる所定情報として、パケットカウントPCおよびバーチャルチャネルVCが記載される。
図23には、E2E protectionに対応するように拡張されたA-PHY用の拡張パケットの構造例が示されている。
図示するように、A-PHY用の拡張パケットにおいても、拡張パケットヘッダ(ePH)、パケットデータ、および拡張パケットフッタ(ePF)からなるASペイロードが、E2E protectionの保護範囲として限定される。
ここで、通信システム201は、図20を参照して説明したように、イメージセンサ211からSerDes装置212に送信されたD-PHY用またはC-PHY用の拡張パケットからA-PHY用の拡張パケットが生成される。従って、A-PHY用の拡張パケットの拡張パケットヘッダには、パケットカウントPCおよびバーチャルチャネルVCが既に記載されている。
このようなパケット構造を採用することで、通信システム201は、伝送経路上においてASペイロードが改変されることを回避して、E2E protectionを順守することが可能となる。なお、図21乃至図23に示したパケット構造は、図3乃至図8および図15乃至図18に示したようなパケット構造の該当するパケットと部分的に置き換えて用いることができ、パケット生成の一部が置き換えられる。
図24は、E2E protectionに適応したパケット送受信処理を説明するフローチャートである。
例えば、パケットデータに格納するデータ(例えば、画像データなど)が拡張モード対応CSI-2送信回路221に供給されると処理が開始される。そして、ステップS101において、イメージセンサ211では、拡張モード対応CSI-2送信回路221が、供給されたデータをパケットデータに格納する。さらに、拡張モード対応CSI-2送信回路221は、上述の図21または図22に示したようにバーチャルチャネルVCおよびパケットカウントPCを記載した拡張パケットヘッダを生成する。そして、拡張モード対応CSI-2送信回路221は、パケットデータに対して、拡張パケットヘッダを付加するとともに、拡張パケットフッタを付加することにより、ASペイロードを生成する。
ステップS102において、拡張モード対応CSI-2送信回路221は、ステップS101で生成したASペイロードに対して、C-PHY用またはD-PHY用のパケットヘッダとC-PHY用またはD-PHY用のパケットフッタとを付加することにより、C-PHY用またはD-PHY用の拡張パケットを生成する。そして、拡張モード対応CSI-2送信回路221は、C/D-PHY物理層処理部222を介して、C-PHY用またはD-PHY用の拡張パケットをSerDes装置212に送信する。
ステップS103において、SerDes装置212では、CSI-2受信回路231が、C/D-PHY物理層処理部232を介して、ステップS102でイメージセンサ211から送信されてくるC-PHY用またはD-PHY用の拡張パケットを受信する。そして、CSI-2受信回路231は、受信した拡張パケットからパケットヘッダおよびパケットフッタを除いたASペイロードを取得し、ASペイロードをそのままCSI-2用A-PHYパケット生成部235に供給する。
ステップS104において、SerDes装置212では、CSI-2用A-PHYパケット生成部235が、CSI-2受信回路231から供給されたASペイロードに対して、A-PHY用のパケットヘッダとA-PHY用のパケットフッタを付加することにより、A-PHY用の拡張パケットを生成する。そして、CSI-2用A-PHYパケット生成部235は、A-PHYに対応した物理層処理部237を介して、A-PHY用の拡張パケットをSerDes装置213に送信する。
ステップS105において、SerDes装置213では、CSI-2用A-PHYパケット受信部245が、A-PHYに対応した物理層処理部247を介して、ステップS104でSerDes装置212から送信されてくるA-PHY用の拡張パケットを受信する。そして、CSI-2用A-PHYパケット受信部245は、受信した拡張パケットからパケットヘッダおよびパケットフッタを除いたASペイロードを取得し、ASペイロードをそのままCSI-2送信回路241に供給する。
ステップS106において、CSI-2送信回路241は、ステップS105でCSI-2用A-PHYパケット受信部245から供給されたASペイロードに対して、C-PHY用またはD-PHY用のパケットヘッダとC-PHY用またはD-PHY用のパケットフッタとを付加することにより、C-PHY用またはD-PHY用の拡張パケットを生成する。そして、CSI-2送信回路241は、C/D-PHY物理層処理部242を介して、C-PHY用またはD-PHY用の拡張パケットをアプリケーションプロセッサ214に送信する。
ステップS107において、アプリケーションプロセッサ214では、拡張モード対応CSI-2受信回路251が、C/D-PHY物理層処理部252を介して、ステップS106でSerDes装置213から送信されてくるC-PHY用またはD-PHY用の拡張パケットを受信する。そして、拡張モード対応CSI-2受信回路251は、受信した拡張パケットからパケットヘッダおよびパケットフッタを除いたASペイロードを取得して、ASペイロードのパケットデータに格納されている各種のデータを、後段のLSI(図示せず)へ出力する。その後、E2E protectionに適応したパケット送受信処理は終了され、次の拡張パケットを対象として、同様の処理が繰り返して行われる。
以上のように、通信システム201は、E2E protectionに適応したパケット送受信処理を実行することによって、伝送経路上でASペイロードを改変することなく、拡張パケットを送受信することができる。このとき、例えば、イメージセンサ211の物理層がD-PHYであって、アプリケーションプロセッサ214の物理層がC-PHYである場合であっても、即ち、それぞれのインタフェースが異なっている場合であっても、E2E protectionを順守することができる。
図25は、イメージセンサ211の詳細な構成例を示すブロック図である。なお、図25に示すイメージセンサ211において、図9のイメージセンサ21と共通する構成には、同一の符号を付し、その詳細な説明は省略する。
即ち、イメージセンサ211は、図9のイメージセンサ21と同様に、画素41、AD変換器42、画像処理部43、レジスタ47、およびコントローラ60を備えて構成される。また、イメージセンサ211が備えるI2C/I3Cスレーブ223およびCCIスレーブ224は、図9のI2C/I3Cスレーブ46およびCCIスレーブ59にそれぞれ対応する。
そして、イメージセンサ211は、拡張モード対応CSI-2送信回路221および物理層処理部222を備えており、物理層処理部222は、A-PHY、C-PHY、およびD-PHYに対応している。
拡張モード対応CSI-2送信回路221は、コントローラ60およびCCIスレーブ224の他、ASペイロード生成部301、セレクタ302、A-PHYパケット生成部303、C-PHYパケット生成部304、D-PHYパケット生成部305、およびセレクタ306を備えて構成される。
ASペイロード生成部301は、E2E protectionの保護範囲として限定されるASペイロードを生成して、セレクタ302に出力する。例えば、ASペイロード生成部301は、パッキング部311、拡張パケットヘッダ生成部312、および拡張パケットフッタ生成部313を有している。
パッキング部311は、送信対象のデータとして画像処理部43から供給される画像データをパッキングし、パケットカウントPCで定められたバイト数のパケットデータを生成する。例えば、コントローラ60が、レジスタ47に記憶されている設定値(例えば、画像サイズなど)に従って、パッキング部311が生成するパケットデータのバイト数を制御することができる。
拡張パケットヘッダ生成部312は、例えば、図21乃至図23を参照して説明したように、パケットカウントPCおよびバーチャルチャネルVCを記載した拡張パケットヘッダを生成して、パケットデータに付加する。拡張パケットフッタ生成部313は、拡張パケットフッタを生成してパケットデータに付加する。
セレクタ302は、コントローラ60の制御に従って、ASペイロード生成部301から供給されるASペイロードの出力先として、並列に設けられるA-PHYパケット生成部303、C-PHYパケット生成部304、およびD-PHYパケット生成部305のうちの1つを選択する。
A-PHYパケット生成部303は、セレクタ302を介して供給されるASペイロードからA-PHY用の拡張パケットを生成して、セレクタ306に出力する。例えば、A-PHYパケット生成部303は、AAL生成部321、A-PHY用パケットヘッダ生成部322、およびA-PHY用パケットフッタ生成部323を有している。
例えば、AAL(A-PHY Adaptation Layer)生成部321は、ASペイロード生成部301で生成されたASペイロードを、Adaptation Layerと称される階層で380byteごとに分割する。そして、分割後のASペイロードに対して、A-PHY用パケットヘッダ生成部322がA-PHY用のパケットヘッダを付加し、A-PHY用パケットフッタ生成部323がA-PHY用のパケットフッタを付加する。
C-PHYパケット生成部304は、セレクタ302を介して供給されるASペイロードからC-PHY用の拡張パケットを生成して、セレクタ306に出力する。例えば、C-PHYパケット生成部304は、C-PHY用パケットヘッダ生成部331、C-PHY用パケットフッタ生成部332、およびC-PHY用レーン分配部333を有している。
例えば、ASペイロード生成部301で生成されたASペイロードに対して、C-PHY用パケットヘッダ生成部331がC-PHY用のパケットヘッダを付加し、C-PHY用パケットフッタ生成部332がC-PHY用のパケットフッタを付加する。そして、C-PHY用レーン分配部333は、C-PHY用の拡張パケットを、CSI-2の規格に従った3レーンに分配する。
D-PHYパケット生成部305は、セレクタ302を介して供給されるASペイロードからD-PHY用の拡張パケットを生成して、セレクタ306に出力する。例えば、D-PHYパケット生成部305は、D-PHY用パケットヘッダ生成部341、D-PHY用パケットフッタ生成部342、およびD-PHY用レーン分配部343を有している。
例えば、ASペイロード生成部301で生成されたASペイロードに対して、D-PHY用パケットヘッダ生成部341がD-PHY用のパケットヘッダを付加し、D-PHY用パケットフッタ生成部342がD-PHY用のパケットフッタを付加する。そして、D-PHY用レーン分配部343は、D-PHYの拡張パケットを、CSI-2の規格に従った4レーンに分配する。
セレクタ306は、コントローラ60の制御に従って、物理層処理部222に供給される拡張パケットの出力元として、並列に設けられるA-PHYパケット生成部303、C-PHYパケット生成部304、およびD-PHYパケット生成部305のうちの1つを選択する。
そして、物理層処理部222は、A-PHYパケット生成部303からA-PHY用の拡張パケットが供給された場合には、1レーンでA-PHY用の拡張パケットを送信する。また、物理層処理部222は、C-PHYパケット生成部304からC-PHY用の拡張パケットが供給された場合には、3レーンでC-PHY用の拡張パケットを送信する。また、物理層処理部222は、D-PHYパケット生成部305からD-PHY用の拡張パケットが供給された場合には、4レーンでD-PHY用の拡張パケットを送信する。
以上のように構成されるイメージセンサ211は、ASペイロード生成部301が、セレクタ302を介して、A-PHYパケット生成部303、C-PHYパケット生成部304、およびD-PHYパケット生成部305に接続されるように拡張モード対応CSI-2送信回路221が構成される。これにより、イメージセンサ211は、A-PHY用の拡張パケット、C-PHY用の拡張パケット、およびD-PHY用の拡張パケットで共通するASペイロードを、1つのASペイロード生成部301で生成することができる。即ち、A-PHYパケット生成部303、C-PHYパケット生成部304、およびD-PHYパケット生成部305でASペイロード生成部301を共有することができ、これにより回路規模の縮小を図ることができる。従って、イメージセンサ211の小型化を実現することができる。
図26は、アプリケーションプロセッサ214の詳細な構成例を示すブロック図である。なお、図26に示すアプリケーションプロセッサ214において、図10のアプリケーションプロセッサ22と共通する構成には、同一の符号を付し、その詳細な説明は省略する。
即ち、アプリケーションプロセッサ214は、図10のアプリケーションプロセッサ22と同様に、レジスタ73、およびコントローラ74を備えて構成される。なお、コントローラ74は、ソフトウェアにより実現してもよい。また、アプリケーションプロセッサ214が備えるI2C/I3Cマスタ253およびCCIマスタ254は、図10のI2C/I3Cマスタ72およびCCIマスタ88にそれぞれ対応する。
そして、アプリケーションプロセッサ214は、拡張モード対応CSI-2受信回路251および物理層処理部252を備えており、物理層処理部252は、A-PHY、C-PHY、およびD-PHYに対応している。
拡張モード対応CSI-2受信回路251は、CCIマスタ254の他、セレクタ401、A-PHYパケット受信部402、C-PHYパケット受信部403、D-PHYパケット受信部404、セレクタ405、およびASペイロード受信部406を備えて構成される。
セレクタ401は、物理層処理部252から供給される拡張パケットの出力先として、並列に設けられるA-PHYパケット受信部402、C-PHYパケット受信部403、およびD-PHYパケット受信部404のうちの1つを選択する。
A-PHYパケット受信部402は、セレクタ401を介して供給されるA-PHY用の拡張パケットを受信して、セレクタ405に出力する。例えば、A-PHYパケット受信部402は、A-PHY用パケットヘッダ解釈部411、A-PHY用パケットフッタ検証部412、およびAAL処理部413を有している。
例えば、A-PHY用パケットヘッダ解釈部411は、A-PHY用のパケットヘッダに記載されている内容を解釈して、A-PHY用の拡張パケットの受信に必要な処理を行い、A-PHY用パケットフッタ検証部412は、A-PHY用のパケットフッタを用いてエラーの有無を検証する。そして、AAL処理部413は、図25のAAL生成部321において分割されたAdaptation Layerを結合する処理を行う。
C-PHYパケット受信部403は、セレクタ401を介して供給されるC-PHY用の拡張パケットを受信して、セレクタ405に出力する。例えば、C-PHYパケット受信部403は、C-PHY用レーン併合部421、C-PHY用パケットヘッダ解釈部422、およびC-PHY用パケットフッタ検証部423を有している。
例えば、C-PHY用レーン併合部421は、CSI-2の規格に従って3レーンに分配されて物理層処理部252を介して供給されるC-PHY用の拡張パケットを併合する。そして、C-PHY用パケットヘッダ解釈部422は、C-PHY用のパケットヘッダに記載されている内容を解釈して、C-PHY用の拡張パケットの受信に必要な処理を行い、C-PHY用パケットフッタ検証部423は、C-PHY用のパケットフッタを用いてエラーの有無を検証する。
D-PHYパケット受信部404は、セレクタ401を介して供給されるD-PHY用の拡張パケットを受信して、セレクタ405に出力する。例えば、D-PHYパケット受信部404は、D-PHY用レーン併合部431、D-PHY用パケットヘッダ解釈部432、およびD-PHY用パケットフッタ検証部433を有している。
例えば、D-PHY用レーン併合部431は、CSI-2の規格に従って4レーンに分配されて物理層処理部252を介して供給されるD-PHY用の拡張パケットを併合する。そして、D-PHY用パケットヘッダ解釈部432は、D-PHY用のパケットヘッダに記載されている内容を解釈して、D-PHY用の拡張パケットの受信に必要な処理を行い、D-PHY用パケットフッタ検証部433は、D-PHY用のパケットフッタを用いてエラーの有無を検証する。
セレクタ405は、ASペイロード受信部406に供給される拡張パケットの出力元として、並列に設けられるA-PHYパケット受信部402、C-PHYパケット受信部403、およびD-PHYパケット受信部404のうちの1つを選択する。
ASペイロード受信部406は、図25のASペイロード生成部301に対応して、アンパッキング部441、拡張パケットヘッダ解釈部442、および拡張パケットフッタ検証部443を有している。アンパッキング部441は、パッキング部311によりパッキングされた画像データをアンパッキングする。拡張パケットヘッダ解釈部442は、拡張パケットヘッダ生成部312において生成された拡張パケットヘッダを解釈し、例えば、パケットカウントPCおよびバーチャルチャネルVCを読み出す。拡張パケットフッタ検証部443は、拡張パケットフッタ生成部313により付加された拡張パケットフッタを用いてエラーの有無を検証する。そして、ASペイロード受信部406は、セレクタ405を介して供給されるパケットデータに格納されている各種のデータ、例えば、画像データ、車載用行番号やSourceIDなど、CRCエラーなどを、後段のLSI(図示せず)へ出力する。
以上のように構成されるアプリケーションプロセッサ214は、ASペイロード受信部406が、セレクタ405を介して、A-PHYパケット受信部402、C-PHYパケット受信部403、およびD-PHYパケット受信部404に接続されるように拡張モード対応CSI-2受信回路251が構成される。これにより、アプリケーションプロセッサ214は、A-PHY用の拡張パケット、C-PHY用の拡張パケット、およびD-PHY用の拡張パケットで共通するASペイロードを、1つのASペイロード受信部406で受信することができる。即ち、A-PHYパケット受信部402、C-PHYパケット受信部403、およびD-PHYパケット受信部404でASペイロード受信部406を共有することができ、これにより回路規模の縮小を図ることができる。従って、アプリケーションプロセッサ214の小型化を実現することができる。
<E2E Protectionに適応した第2の構成例>
図27乃至図74を参照して、E2E Protectionに適応した第2の構成例について説明する。
<A-PHY直結構成の構成例>
図27に示す通信システム501は、イメージセンサ511およびアプリケーションプロセッサ512がA-PHYにより直接的に(後述する図40を参照して説明するようなSerDes装置を介さずに)接続される直結構成となっている。
イメージセンサ511は、A-PHY処理部521、CSIA処理部522、CSI2処理部523、CSI2-FS処理部524、CCI処理部525、CCI-FS処理部526、およびレジスタ527を備えて構成される。
A-PHY処理部521は、CCI処理部525が上位層として実装され、アプリケーションプロセッサ512のA-PHY処理部531と、MIPI A-PHY接続して拡張パケットヘッダePHおよび拡張パケットフッタePFを含むデータを送受信する。
CCI-FS処理部526は、例えば、拡張パケットヘッダePHに含まれるDesination IDとイメージセンサ511が有するID(Source ID)とを比較し、イメージセンサ511へのアクセスか否かの判別を行う。
アプリケーションプロセッサ512は、A-PHY処理部531、CSIA処理部532、CSI2処理部533、CSI2-FS処理部534、CCI処理部535、CCI-FS処理部536、レジスタ537、およびCCI-FSスイッチ538を備えて構成される。
A-PHY処理部531は、CCI処理部535が上位層として実装され、イメージセンサ511のA-PHY処理部521と、MIPI A-PHY接続して拡張パケットヘッダePHおよび拡張パケットフッタePFを含むデータを送受信する。
CCI-FS処理部536は、例えば、拡張パケットヘッダePHに含まれるDesination IDとアプリケーションプロセッサ512が有するID(Source ID)とを比較し、アプリケーションプロセッサ512へのアクセスか否かの判別を行う。
CCI-FSスイッチ538は、CCI-FS処理部536が有効である場合にはCCI-FS処理部536を介してデータが送受信され、CCI-FS処理部536が無効である場合にはCCI-FS処理部536を介さずにデータが送受信されるような切り替えを行う。
図28乃至図32を参照して、通信システム501におけるリードコマンドおよびリードデータの転送について説明する。
図28には、リードアクセス時に、アプリケーションプロセッサ512のCCI-FS処理部536において生成されるリードコマンドのパケット構成の一例が示されている。
図28に示すように、リードコマンドは、拡張パケットヘッダePH*(*=n)、AP(CCI)ペイロード、拡張パケットフッタePF1、および拡張パケットフッタePF0から構成される。
拡張パケットヘッダePH*(*=n)は、図示するように、拡張パケットヘッダePH0乃至ePH3からなる。
拡張パケットヘッダePH0には、拡張VC、拡張DT、拡張PFEN、および拡張PHENが格納される。例えば、拡張DTは、CCIプロトコル(I2C)を示す情報であって、拡張DTを用いてルーティングの処理が行われる。
拡張パケットヘッダePH1には、Source ID[7:1]、およびPacket Lengthが格納される。例えば、Source IDは、CCIプロトコル(I2C)の送信元を示す情報であって、Source IDに基づいて応答処理が行われる。Packet Lengthは、データ長を示す情報である。
拡張パケットヘッダePH2には、Security Descriptor、およびMessage Counterが格納される。Security Descriptorは、セキュリティを使用するか否かを示し、セキュリティを使用しない場合には「8'h0」を示す。Message Counterは、バケット順番を示す情報であって、メッセージをカウントしたカウント値を示し、メッセージが5番目のときには「16'h5」を示す。
拡張パケットヘッダePH3には、Destination ID[7:1]、Read/Write、およびDestination Addressが格納される。Destination ID[7:1]は、イメージセンサ511のCCI処理部525のスレーブアドレスを示し、図示する例では「7'h0D」となっている。例えば、Destination IDは、CCIプロトコル(I2C)の送信先を示す情報であって、Destination IDに基づいてルーティングが行われるとともに、通信経路の参照が行われる。Read/Writeは、データの読み出しまたは書き込みを示し、リードの場合には「1'b1」を示す。Destination Addressは、最終目的地となるイメージセンサ511のレジスタ527のアドレスを示し、図示する例では「0x0200」となっている。
AP(CCI)ペイロードには、例えば、各種のデータ(Data0[7:0])が格納される。AP(CCI)ペイロードは、セキュリティがオフのときには送信されず、セキュリティがオンのとき、ダミーデータを格納して送信してもよい。
拡張パケットフッタePF1は、セキュリティがオフのときには送信されない。
拡張パケットフッタePF0には、CRC計算値が格納される。
アプリケーションプロセッサ512では、このようなパケット構造のリードコマンドが、CCI-FS処理部536において生成されてA-PHY処理部531に供給される。
図29には、リードアクセス時に、アプリケーションプロセッサ512のA-PHY処理部531から出力されるリードコマンドのパケット構成の一例が示されている。
図29に示すように、A-PHY処理部531は、CCI-FS処理部536から供給されたリードコマンドをE2E Protectionの保護範囲として、A-PHYヘッダおよびA-PHYフッタを付加する。
このようなパケット構造のリードコマンドが、アプリケーションプロセッサ512のA-PHY処理部531によってA-PHY転送される。そして、イメージセンサ511では、A-PHY処理部521が、リードコマンドからA-PHYヘッダおよびA-PHYフッタを除去する。その後、リードコマンドは、Destination IDにより示されるスレーブアドレス「7'h0D」のCCI処理部525を介して、CCI-FS処理部526に供給される。
図30には、リードアクセス時に、CCI-FS処理部526に供給されるリードコマンドと、CCI-FS処理部526において生成されるリードデータのパケット構造の一例が示されている。
図30に示すように、図28に示したパケット構造のままのリードコマンド、即ち、A-PHY転送においてE2E Protectionの保護範囲とされたリードコマンドが、CCI-FS処理部526に供給される。
リードデータは、図示するように、拡張パケットヘッダePH*(*=n)、AP(CCI)ペイロード、拡張パケットフッタePF1、および拡張パケットフッタePF0から構成される。そして、AP(CCI)ペイロードには、リードコマンドの拡張パケットヘッダePHのソースアドレス情報(Destination Address)で示されるレジスタ527のアドレス「0x0200」から読み出されたリードデータ値が格納される。
イメージセンサ511では、このようなパケット構造のリードデータが、CCI-FS処理部526において生成されA-PHY処理部521に供給される。
図31には、リードアクセス時に、イメージセンサ511のA-PHY処理部521から出力されるリードデータのパケット構成の一例が示されている。
図31に示すように、A-PHY処理部521は、CCI-FS処理部526から供給されたリードデータをE2E Protectionの保護範囲として、A-PHYヘッダおよびA-PHYフッタを付加する。
このようなパケット構造のリードデータが、イメージセンサ511のA-PHY処理部521によってA-PHY転送される。そして、アプリケーションプロセッサ512では、A-PHY処理部531が、リードデータからA-PHYヘッダおよびA-PHYフッタを除去し、リードデータが、CCI-FS処理部536に供給される。
図32には、リードアクセス時に、CCI-FS処理部536に供給されるリードデータのパケット構造の一例が示されている。
図32に示すように、図30に示したパケット構造のままのリードデータ、即ち、A-PHY転送においてE2E Protectionの保護範囲とされたリードデータが、CCI-FS処理部536に供給される。
図33乃至図35を参照して、通信システム501におけるライトデータの転送について説明する。なお、イメージセンサ511側のCCI-FS処理部526が、イネーブルとされている状態からのアクセスを想定して説明を行う。
図33には、ライトアクセス時に、アプリケーションプロセッサ512のCCI-FS処理部536において生成されるライトデータのパケット構成の一例が示されている。
図33に示すように、ライトデータは、拡張パケットヘッダePH*(*=n)、AP(CCI)ペイロード(ライトデータ)、拡張パケットフッタePF1、および拡張パケットフッタePF0から構成される。
拡張パケットヘッダePH*(*=n)は、図示するように、拡張パケットヘッダePH0乃至ePH3からなる。
拡張パケットヘッダePH0には、拡張VC、拡張DT、拡張PFEN、および拡張PHENが格納される。
拡張パケットヘッダePH1には、Source ID[7:1]、およびPacket Lengthが格納される。
拡張パケットヘッダePH2には、Security Descriptor、およびMessage Counterが格納される。Security Descriptorは、セキュリティを使用するか否かを示し、セキュリティを使用しない場合には「8'h0」を示す。Message Counterは、メッセージをカウントしたカウント値を示し、メッセージが4番目のときには「16'h4」を示す。
拡張パケットヘッダePH3には、Destination ID[7:1]、Read/Write、およびDestination Addressが格納される。Destination ID[7:1]は、イメージセンサ511のCCI処理部525のスレーブアドレスを示し、図示する例では「7'h0D」となっている。Read/Writeは、データの読み出しまたは書き込みを示し、ライトの場合には「1'b0」を示す。Destination Addressは、最終目的地となるイメージセンサ511のレジスタ527のアドレスを示し、図示する例では「0x1234」となっている。
AP(CCI)ペイロードには、イメージセンサ511に書き込むデータ(Data0[7:0])が格納され、0xFF値がライトデータとなる。
拡張パケットフッタePF1は、セキュリティがオフのときには送信されない。
拡張パケットフッタePF0には、CRC計算値が格納される。
アプリケーションプロセッサ512では、このようなパケット構造のライトデータが、CCI-FS処理部536において生成されてA-PHY処理部531に供給される。
図34には、ライトアクセス時に、アプリケーションプロセッサ512のA-PHY処理部531から出力されるライトデータのパケット構成の一例が示されている。
図34に示すように、A-PHY処理部531は、CCI-FS処理部536から供給されたライトデータをE2E Protectionの保護範囲として、A-PHYヘッダおよびA-PHYフッタを付加する。
このようなパケット構造のライトデータが、アプリケーションプロセッサ512のA-PHY処理部531によってA-PHY転送される。そして、イメージセンサ511では、A-PHY処理部521が、ライトデータからA-PHYヘッダおよびA-PHYフッタを除去する。その後、ライトデータは、Destination IDにより示されるスレーブアドレス「7'h0D」のCCI処理部525を介して、CCI-FS処理部526に供給される。
図35には、ライトアクセス時に、CCI-FS処理部526に供給されるライトデータのパケット構造の一例が示されている。
図35に示すように、図33に示したパケット構造のままのライトデータ、即ち、A-PHY転送においてE2E Protectionの保護範囲とされたライトデータが、CCI-FS処理部526に供給される。そして、CCI-FS処理部526は、CCIコマンドID情報、即ち、リードコマンドの拡張パケットヘッダePHのソースアドレス情報(Destination Address)で示されるレジスタ527のアドレス「0x1234」より、AP(CCI)ペイロードに格納されているデータの書き込みを行う。
図36を参照して、拡張パケットヘッダePHおよび拡張パケットフッタePFの概要について説明する。
図36に示すように、CCI-FS E2Eパケットは、拡張パケットヘッダePH、パケットデータ、および拡張パケットフッタePFにより構成され、そのパケット長は、Length = Byte Count × Data Byte widthとなる。
拡張パケットヘッダePHは、拡張VC、拡張DT、Message Counterなどのフィールドが用いられる。拡張パケットヘッダePHのフィールド値(epFEN field)で、拡張パケットヘッダePHの長さを変更することができる。
パケットデータは、例えば、PL個のデータ(Data 0~Data PL-1)により構成され、その長さは、Length = Packet Length(PL) × Data Byte Widthとなる。パケットデータには、リードコマンドの場合に、セキュリティがオフのときにはデータが格納されず、セキュリティがオンのときには1バイトのダミーデータが格納される。パケットデータには、ライトアクセスの場合に、ペイロードデータ分のライトデータが格納される。パケットデータには、リードアクセスの場合は、ペイロードデータ分のリードデータが格納される。パケットデータには、Clock Stretch(ePH0のControl Code Indicator=1)を用いるときは、制御の種類を意味する1バイトのデータペイロードが付けられる。
拡張パケットフッタePF1は、拡張パケットヘッダePHのフィールド設定値(epFEN field)で、長さを変更することができる。また、セキュリティ関連情報を付加することができる。
拡張パケットフッタePF0は、拡張パケットヘッダePHのフィールド設定値で、パケットデータから計算されるCRC-32を付加することができる。
<通信処理の処理例>
図37乃至図39のフローチャートを参照して、図27に示した通信システム501において行われるCCI-FSを使用した通信処理について説明する。
図37に示すように、ステップS211乃至S222では、初期設定および確認動作が行われる。
ステップS211において、アプリケーションプロセッサ512からイメージセンサ511へ、CCI-FS処理部526のCapabilityレジスタに対して2回リードアクセスが行われる。なお、リードアクセスを行う回数は2回に限定されることなく、例えば、機能安全的に任意に設定することができ、1回または3回以上の複数回でもよい。
ステップS212において、アプリケーションプロセッサ512では、CSI2-FS処理部524が、ステップS211でのリードアクセスの結果について、CCI-FS処理部526のCapabilityレジスタ値が2回とも1’b1であるか否かを判定する。ステップS212において、CCI-FS処理部526のCapabilityレジスタ値が2回とも1’b1でないと判定された場合、処理はステップS213に進む。
ステップS213において、アプリケーションプロセッサ512では、CSI2-FS処理部524が、再送回数が3回以上であるか否かを判定する。なお、再送回数は3回に限定されることなく、任意の回数に設定することができ、以下で説明する再送回数についても同様である。ステップS213において、再送回数が3回以上でない(1回または2回)と判定された場合、処理はステップS211に戻り、以下、同様の処理が繰り返して行われる。
一方、ステップS212において、CCI-FS処理部526のCapabilityレジスタ値が2回とも1’b1であると判定された場合、処理は214に進む。
ステップS214において、アプリケーションプロセッサ512からイメージセンサ511へ、CCI-FS処理部526のEnableレジスタに対する1ライトアクセスが行われる。
ステップS215において、イメージセンサ511では、CCI-FS処理部526が、アプリケーションプロセッサ512のCCI-FS処理部536のEnableレジスタに対する1ライトアクセスを行う。
ステップS216において、アプリケーションプロセッサ512のCCI-FS処理部536のDestination SIDレジスタに、対向のイメージセンサ511のスレーブアドレスを設定する。
ステップS217において、アプリケーションプロセッサ512のCCI-FS処理部536のePHレジスタの設定を行う。
ステップS218において、アプリケーションプロセッサ512からイメージセンサ511へ、CCI-FS処理部526のePHレジスタの設定が行われる。
ステップS219において、アプリケーションプロセッサ512からイメージセンサ511へ、CCI-FS処理部526のEnableレジスタおよびErrorレジスタに対するリードアクセスが行われる。
ステップS220において、アプリケーションプロセッサ512では、CCI-FS処理部536が、ステップS219でのリードアクセスの結果について、CCI-FS処理部526のEnableレジスタ値が1’b1であり、かつ、Errorレジスタ値が0であるか否かを判定する。
ステップS220において、CCI-FS処理部526のEnableレジスタ値が1’b1でない、または、Errorレジスタ値が0でないと判定された場合、処理はステップS221に進む。
ステップS221において、アプリケーションプロセッサ512では、CSI2-FS処理部524が、再送回数が3回以上であるか否かを判定する。ステップS221において、再送回数が3回以上であると判定された場合、処理はステップS211に戻り、以下、同様の処理が繰り返して行われる。
一方、ステップS213において、再送回数が3回以上であると判定された場合、または、ステップS221において、再送回数が3回以上でない(1回または2回)と判定された場合、処理はステップS222に進む。
ステップS222において、CCI-FSを使用せずにCCIでの通信を行い、その後、通信処理が終了される。
一方、ステップS220において、CCI-FS処理部526のEnableレジスタ値が1’b1であり、かつ、Errorレジスタ値が0であると判定された場合、処理はステップS223に進む。
図38に示すように、ステップS223乃至S234では、CCI-FSを使用したライト動作が行われる。
ステップS223において、アプリケーションプロセッサ512のCCI-FS処理部536は、ライト動作を行うようにePHレジスタの設定を行う。
ステップS224において、アプリケーションプロセッサ512のCCI-FS処理部536は、ライトデータレジスタの設定を行う。
ステップS225において、アプリケーションプロセッサ512のCCI-FS処理部536は、コマンド実行レジスタを1に設定する。
ステップS226において、アプリケーションプロセッサ512では、A-PHY処理部531が、上述した図34に示したように、CCI-FS処理部536により生成されたライトデータをE2E Protectionの保護範囲として、A-PHYヘッダおよびA-PHYフッタを付加し、A-PHY転送を行う。
ステップS227において、イメージセンサ511では、A-PHY処理部521が、ライトデータからA-PHYヘッダおよびA-PHYフッタを除去し、E2E Protectionの保護範囲をCCI-FS処理部526に供給する。
ステップS228において、イメージセンサ511では、CCI-FS処理部526が、拡張パケットヘッダePHの内容から、イメージセンサ511のSource IDと、拡張パケットヘッダePHのDestination SIDとを確認する。
ステップS229において、イメージセンサ511では、CCI-FS処理部526が、ステップS228で確認したイメージセンサ511のSource IDと拡張パケットヘッダePHのDestination SIDとが一致したか否かを判定する。
ステップS229において、イメージセンサ511のSource IDと拡張パケットヘッダePHのDestination SIDとが一致したと判定された場合、処理はステップS230に進む。
ステップS230において、イメージセンサ511では、CCI-FS処理部526が、拡張パケットヘッダePHの内容から、Message Counterを確認する。
ステップS231において、イメージセンサ511では、CCI-FS処理部526が、ステップS230で確認したイメージセンサ511のMessage Counter(受信)と、拡張パケットヘッダePHのMessage Counterとが一致したか否かを判定する。
ステップS231において、イメージセンサ511のMessage Counter(受信)と拡張パケットヘッダePHのMessage Counterとが一致したと判定された場合、処理はステップS232に進む。
ステップS232において、イメージセンサ511では、CCI-FS処理部526が、拡張パケットフッタePFの内容から、CRCを確認する。
ステップS233において、イメージセンサ511では、CCI-FS処理部526が、ステップS232で確認した拡張パケットフッタePFの受信値(ePF0)と、CCI-FS処理部526において計算されたCRC計算結果が一致したか否かを判定する。
ステップS233において、拡張パケットフッタePFの受信値(ePF0)とCRC計算結果とが一致したと判定された場合、処理はステップS234に進む。
ステップS234において、イメージセンサ511では、CCI-FS処理部526が、拡張パケットヘッダePHおよび拡張パケットフッタePFの内容から、レジスタ527のアドレスにライトデータを書き込むライト処理を行う。その後、処理はステップS235に進む。
図39に示すように、ステップS235乃至S247では、CCI-FSを使用したリード動作が行われる。
ステップS235において、アプリケーションプロセッサ512では、CCI-FS処理部536が、リード動作が行われるようにePHレジスタの設定を行う。
ステップS236において、アプリケーションプロセッサ512では、CCI-FS処理部536が、コマンド実行レジスタを1に設定する。
ステップS237において、アプリケーションプロセッサ512では、A-PHY処理部531が、上述した図29に示したように、CCI-FS処理部536により生成されたライトデータをE2E Protectionの保護範囲として、A-PHYヘッダおよびA-PHYフッタを付加し、A-PHY転送を行う。
ステップS238において、イメージセンサ511では、A-PHY処理部521が、ライトデータからA-PHYヘッダおよびA-PHYフッタを除去し、E2E Protectionの保護範囲をCCI-FS処理部526に供給する。
ステップS239において、イメージセンサ511では、CCI-FS処理部526が、拡張パケットヘッダePHの内容から、イメージセンサ511のSource IDと、拡張パケットヘッダePHのDestination SIDとを確認する。
ステップS240において、イメージセンサ511では、CCI-FS処理部526が、ステップS239で確認したイメージセンサ511のSource IDと拡張パケットヘッダePHのDestination SIDとが一致したか否かを判定する。
ステップS240において、イメージセンサ511のSource IDと拡張パケットヘッダePHのDestination SIDとが一致したと判定された場合、処理はステップS241に進む。
ステップS241において、イメージセンサ511では、CCI-FS処理部526が、拡張パケットヘッダePHの内容から、Message Counterを確認する。
ステップS242において、イメージセンサ511では、CCI-FS処理部526が、ステップS241で確認したイメージセンサ511のMessage Counter(受信)と、拡張パケットヘッダePHのMessage Counterとが一致したか否かを判定する。
ステップS242において、イメージセンサ511のMessage Counter(受信)と拡張パケットヘッダePHのMessage Counterとが一致したと判定された場合、処理はステップS243に進む。
ステップS243において、イメージセンサ511では、CCI-FS処理部526が、拡張パケットフッタePFの内容から、CRCを確認する。
ステップS244において、イメージセンサ511では、CCI-FS処理部526が、ステップS243で確認した拡張パケットフッタePFの受信値(ePF0)と、CCI-FS処理部526において計算されたCRC計算結果が一致したか否かを判定する。
ステップS244において、拡張パケットフッタePFの受信値(ePF0)とCRC計算結果とが一致したと判定された場合、処理は終了される。
一方、図38のステップS229または図39のステップS240で、イメージセンサ511のSource IDと拡張パケットヘッダePHのDestination SIDとが一致していないと判定された場合、処理はステップS245に進む。
ステップS245において、イメージセンサ511側のErrorレジスタ(Routing)を1とし、その後、処理は終了される。
一方、図38のステップS231または図39のステップS242で、イメージセンサ511のMessage Counter(受信)と拡張パケットヘッダePHのMessage Counterとが一致していないと判定された場合、処理はステップS246に進む。
ステップS246において、イメージセンサ511側のErrorレジスタ(MC)を1とし、その後、処理は終了される。
一方、図38のステップS233または図39のステップS244で、拡張パケットフッタePFの受信値(ePF0)とCRC計算結果とが一致していないと判定された場合、処理はステップS247に進む。
ステップS247において、イメージセンサ511側のErrorレジスタ(CRC)を1とし、その後、処理は終了される。
<SerDes接続構成の構成例>
図40に示す通信システム601は、イメージセンサ611およびアプリケーションプロセッサ614が、スレーブ側となるSerDes装置612とマスタ側となるSerDes装置613とを介して接続されるSerDes接続構成となっている。
イメージセンサ611は、I2C/I3Cスレーブ621、CCI処理部622、CSI2-FS処理部623、およびレジスタ624を備えて構成される。
スレーブ側のSerDes装置612は、A-PHY処理部631、CSIA処理部632、CSI2-FS処理部633、I2C/I3Cマスタ634、CCI処理部635、CCI-FS処理部636、およびレジスタ637を備えて構成される。
マスタ側のSerDes装置613は、A-PHY処理部641、CSIA処理部642、CSI2-FS処理部643、I2C/I3Cスレーブ644、CCI処理部645、CCI-FS処理部646、およびレジスタ647を備えて構成される。
アプリケーションプロセッサ614は、I2C/I3Cマスタ651、CCI処理部652、CCI-FS処理部653、レジスタ654、およびCCI-FSスイッチ655を備えて構成される。
なお、図40に示すようなSerDes接続構成では、CCI構成やCCI-FS構成が上位プロトコルとして実装されている場合、他のSerDes規格を使用してもよい。例えば、Application Layer、または、その下のレイヤに相当する上位層からのPayloadに、図41に示すような拡張パケットヘッダePH、拡張パケットフッタePF1、および拡張パケットフッタePF0の構成を実装することにより、PCIE,USB,DisplayPort,HDMI(登録商標),LVDS,FPD-LINKなどの各種のSerDes関連を適用することができる。
図41乃至図49を参照して、通信システム601におけるリードコマンドおよびリードデータの転送について説明する。
図41には、リードアクセス時に、アプリケーションプロセッサ614のCCI-FS処理部653において生成されるリードコマンドのパケット構成の一例が示されている。
図41に示すように、リードコマンドは、拡張パケットヘッダePH*(*=n)、拡張パケットフッタePF1、および拡張パケットフッタePF0から構成される。なお、それらの詳細については、上述の図28を参照して説明したリードコマンドと同様である。
アプリケーションプロセッサ614では、このようなパケット構造のリードコマンドが、CCI-FS処理部653において生成されてI2C/I3Cマスタ651に供給される。
図42には、リードアクセス時に、アプリケーションプロセッサ614のI2C/I3Cマスタ651から出力されるリードコマンドのパケット構成の一例が示されている。
図42に示すように、I2C/I3Cマスタ651は、スタートコンディションSに続けて、接続先のセンサアドレス、即ち、図40に示す構成ではマスタ側のSerDes装置613のCCI処理部645のアドレス(Slave Address+W 8-bit)を送信する。図42に示す例では、CCI処理部645のアドレスは、Slave Address[7:1]=7'h0Fとなっている。そのアドレスに続いて、マスタ側のSerDes装置613のレジスタ647のレジスタアドレス(Register Address [15:8]およびRegister Address [7:0])が送信される。I2C/I3Cマスタ651は、拡張パケットヘッダePH*(*=n)、拡張パケットフッタePF1、および拡張パケットフッタePF0に続けて、最後にストップコンディションPを送信する。
このようなパケット構造のリードコマンドが、アプリケーションプロセッサ614のI2C/I3Cマスタ651からI2C/I3Cにより転送される。マスタ側のSerDes装置613では、I2C/I3Cスレーブ644が、リードコマンド(拡張パケットヘッダePH*(*=n)、拡張パケットフッタePF1、および拡張パケットフッタePF0)を取得する。そのリードコマンドは、Slave Address[7:1]=7'h0FのCCI処理部645に供給された後、CCI-FS処理部646、CSI2-FS処理部643、およびCSIA処理部642を介して、A-PHY処理部641に供給される。
図43には、リードアクセス時に、マスタ側のSerDes装置613のA-PHY処理部641から出力されるリードコマンドのパケット構成の一例が示されている。
図43に示すように、A-PHY処理部641は、I2C/I3Cスレーブ644が取得したリードコマンドをE2E Protectionの保護範囲として、A-PHYヘッダおよびA-PHYフッタを付加する。なお、拡張パケットヘッダePH*(*=n)には、マスタ側のSerDes装置613のCCI処理部635のアドレス、例えば、Slave Address[7:1]=7'h0Eが、CSI2-FS処理部643において付加される。
このようなパケット構造のリードコマンドが、マスタ側のSerDes装置613のA-PHY処理部641によってA-PHY転送される。スレーブ側のSerDes装置612では、A-PHY処理部631が、リードコマンドからA-PHYヘッダおよびA-PHYフッタを除去する。リードコマンドは、CSIA処理部632、CSI2-FS処理部633、CCI-FS処理部636を介して、Destination IDにより示されるスレーブアドレス「7'h0E」のCCI処理部635に供給された後、I2C/I3Cマスタ634に供給される。
図44には、リードアクセス時に、I2C/I3Cマスタ634から出力されるリードコマンドのパケット構成の一例が示されている。
図44に示すように、I2C/I3Cマスタ634は、スタートコンディションSに続けて、接続先のセンサアドレス、即ち、図40に示す構成ではイメージセンサ611のCCI処理部622のアドレス(Slave Address+W 8-bit)を送信する。図44に示す例では、CCI処理部622のアドレスは、Slave Address[7:1]=7'h0Dとなっている。そのアドレスに続いて、イメージセンサ611のレジスタ624のレジスタアドレス(Register Address [15:8]およびRegister Address [7:0])が送信される。I2C/I3Cマスタ634は、拡張パケットヘッダePH*(*=n)、拡張パケットフッタePF1、および拡張パケットフッタePF0に続けて、最後にストップコンディションPを送信する。
このようなパケット構造のリードコマンドが、スレーブ側のSerDes装置612のI2C/I3Cマスタ634からI2C/I3Cにより転送される。そして、イメージセンサ611では、I2C/I3Cスレーブ621がリードコマンド(拡張パケットヘッダePH*(*=n)、拡張パケットフッタePF1、および拡張パケットフッタePF0)を取得する。そのリードコマンドは、Slave Address[7:1]=7'h0DのCCI処理部622を介して、CSI2-FS処理部623に供給される。
図45には、リードアクセス時に、CSI2-FS処理部623に供給されるリードコマンドと、CSI2-FS処理部623において生成されるリードデータのパケット構造の一例が示されている。
図45に示すように、図41に示したパケット構造のままのリードコマンド、即ち、A-PHY転送においてE2E Protectionの保護範囲とされたリードコマンドが、CSI2-FS処理部623に供給される。
リードデータは、図示するように、拡張パケットヘッダePH*(*=n)、AP(CCI)ペイロード、拡張パケットフッタePF1、および拡張パケットフッタePF0から構成される。そして、AP(CCI)ペイロードには、リードコマンドの拡張パケットヘッダePHのソースアドレス情報(Destination Address)で示されるレジスタ624のアドレス「0x0200」から読み出されたリードデータ値が格納される。
イメージセンサ611では、このようなパケット構造のリードデータが、CCI-FS処理部623において生成され、CCI処理部622を介してI2C/I3Cスレーブ621に供給される。
図46には、リードアクセス時に、イメージセンサ611のI2C/I3Cスレーブ621から出力されるリードデータのパケット構成の一例が示されている。
図46に示すように、I2C/I3Cスレーブ621は、スタートコンディションSに続けて、接続先のセンサアドレス、即ち、図40に示す構成ではスレーブ側のSerDes装置612のI2C/I3Cマスタ634のアドレス(Slave Address+W 8-bit)を送信する。図46に示す例では、I2C/I3Cマスタ634のアドレスは、Slave Address[7:1]=7'h0Dとなっている。そのアドレスに続いて、リードデータの格納アドレス(イメージセンサ611のレジスタ624のアドレス)が送信され、スレーブ側のSerDes装置612のI2C/I3Cマスタ634のアドレス(Slave Address+R 8-bit)が送信される。I2C/I3Cスレーブ621が、拡張パケットヘッダePH*(*=n)、AP(CCI)ペイロード、拡張パケットフッタePF1、および拡張パケットフッタePF0を送信した後、最後にストップコンディションPが送信される。
このようなパケット構造のリードコマンドが、イメージセンサ611のI2C/I3Cスレーブ621からからI2C/I3Cにより転送される。スレーブ側のSerDes装置612では、I2C/I3Cマスタ634が、リードデータ(拡張パケットヘッダePH*(*=n)、AP(CCI)ペイロード、拡張パケットフッタePF1、および拡張パケットフッタePF0)を取得する。そのリードデータは、Slave Address[7:1]=7'h0EのCCI処理部635に供給された後、CCI-FS処理部636、CSI2-FS処理部633、およびCSIA処理部632を介して、A-PHY処理部631に供給される。
図47には、リードアクセス時に、スレーブ側のSerDes装置612のA-PHY処理部631から出力されるリードデータのパケット構成の一例が示されている。
図47に示すように、A-PHY処理部631は、I2C/I3Cマスタ634が取得したリードデータをE2E Protectionの保護範囲として、A-PHYヘッダおよびA-PHYフッタを付加する。
このようなパケット構造のリードデータが、スレーブ側のSerDes装置612のA-PHY処理部631によってA-PHY転送される。そして、マスタ側のSerDes装置613では、A-PHY処理部641が、リードデータからA-PHYヘッダおよびA-PHYフッタを除去する。リードデータは、CSIA処理部642、CSI2-FS処理部643、CCI-FS処理部646、およびCCI処理部635を介して、I2C/I3Cスレーブ644に供給される。
図48には、リードアクセス時に、マスタ側のSerDes装置613のI2C/I3Cスレーブ644から出力されるリードデータのパケット構成の一例が示されている。
図48に示すように、I2C/I3Cスレーブ644は、スタートコンディションSに続けて、接続先のセンサアドレス、即ち、図40に示す構成では、マスタ側のSerDes装置613のCCI処理部635のアドレス(Slave Address+W 8-bit)を送信する。図48に示す例では、CCI処理部635のアドレスは、Slave Address[7:1]=7'h0Fとなっている。そのアドレスに続いて、マスタ側のSerDes装置613のレジスタ647のレジスタアドレス(Register Address [15:8]およびRegister Address [7:0])が送信され、CCI処理部635のアドレス(Slave Address+R 8-bit)が送信される。続いて、I2C/I3Cスレーブ644が、拡張パケットヘッダePH*(*=n)、AP(CCI)ペイロード、拡張パケットフッタePF1、および拡張パケットフッタePF0を送信した後、最後にストップコンディションPが送信される。
このようなパケット構造のリードデータが、マスタ側のSerDes装置613のI2C/I3Cスレーブ644からI2C/I3Cにより転送される。そして、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、リードコマンド(拡張パケットヘッダePH*(*=n)、拡張パケットフッタePF1、および拡張パケットフッタePF0)を取得して、CCI-FS処理部653に供給する。
図49には、リードアクセス時に、CCI-FS処理部653に供給されるリードデータのパケット構造の一例が示されている。
図49に示すように、図45に示したパケット構造のままのリードデータ、即ち、A-PHY転送においてE2E Protectionの保護範囲とされたリードデータが、CCI-FS処理部653に供給される。
<通信処理の処理例>
図50乃至図57のフローチャートを参照して、図40に示した通信システム601において行われるCCI-FSを使用した通信処理について説明する。
図50に示すように、ステップS301乃至S317では、初期設定および確認動作が行われる。
ステップS301において、アプリケーションプロセッサ614のCCI-FS処理部653のDestination SIDレジスタに、対向のイメージセンサ611のスレーブアドレスを設定する。
ステップS302において、アプリケーションプロセッサ614のCCI-FS処理部653のePHレジスタの設定を行う。
ステップS303において、アプリケーションプロセッサ614のCCI-FS処理部653のBridge構成のDestination SIDの設定を行い、マスタ側のSerDes装置613を登録する。ここで、Address,attribution,Timeout_no1レジスタも、これと同様に設定を行い、以下、同様に設定が行われるものとする。
ステップS304において、アプリケーションプロセッサ614からマスタ側のSerDes装置613へ、CCI-FS処理部643のePHレジスタの設定が行われる。
ステップS305において、アプリケーションプロセッサ614からマスタ側のSerDes装置613へ、CCI-FS処理部643のBridge構成のDestination SIDの設定を行い、スレーブ側のSerDes装置612を登録する。
ステップS306において、アプリケーションプロセッサ614からマスタ側のSerDes装置613へ、CCI-FS処理部643のErrorレジスタに対するリードアクセスが行われる。
ステップS307において、アプリケーションプロセッサ614では、CCI-FS処理部653が、ステップS306のリードアクセスの結果、マスタ側のSerDes装置613のCCI-FS処理部643のErrorレジスタのレジスタ値が0であるか否かを判定する。
ステップS307において、マスタ側のSerDes装置613のCCI-FS処理部643のErrorレジスタのレジスタ値が0でない(0以外である)と判定された場合、処理はステップS308に進む。
ステップS308において、アプリケーションプロセッサ614では、CCI-FS処理部653が、再送回数が3回以上であるか否かを判定し、再送回数が3回以上でない(1回または2回)と判定した場合、処理はステップS304に戻り、以下、同様の処理が繰り返して行われる。
一方、ステップS307において、マスタ側のSerDes装置613のCCI-FS処理部643のErrorレジスタのレジスタ値が0であると判定された場合、処理はステップS309に進む。
ステップS309において、アプリケーションプロセッサ614からスレーブ側のSerDes装置612へ、CCI-FS処理部636のePHレジスタの設定が行われる。
ステップS310において、アプリケーションプロセッサ614からスレーブ側のSerDes装置612へ、CCI-FS処理部636のBridge構成のDestination SIDの設定を行い、スレーブ側のSerDes装置612を登録する。
ステップS311において、アプリケーションプロセッサ614からスレーブ側のSerDes装置612へ、CCI-FS処理部636のErrorレジスタに対するリードアクセスが行われる。
ステップS312において、アプリケーションプロセッサ614では、CCI-FS処理部653が、ステップS311のリードアクセスの結果、スレーブ側のSerDes装置612のCCI-FS処理部636のErrorレジスタのレジスタ値が0であるか否かを判定する。
ステップS312において、スレーブ側のSerDes装置612のCCI-FS処理部636のErrorレジスタのレジスタ値が0でない(0以外である)と判定された場合、処理はステップS313に進む。
ステップS313において、アプリケーションプロセッサ614では、CCI-FS処理部653が、再送回数が3回以上であるか否かを判定し、再送回数が3回以上でない(1回または2回)と判定した場合、処理はステップS309に戻り、以下、同様の処理が繰り返して行われる。
一方、ステップS312において、スレーブ側のSerDes装置612のCCI-FS処理部636のErrorレジスタのレジスタ値が0であると判定された場合、処理はステップS314に進む。
ステップS314において、アプリケーションプロセッサ614からイメージセンサ611へ、CCI-FS処理部623のePHレジスタの設定が行われる。
ステップS315において、アプリケーションプロセッサ614からイメージセンサ611へ、CCI-FS処理部623のErrorレジスタに対するリードアクセスが行われる。
ステップS316において、アプリケーションプロセッサ614では、CCI-FS処理部653が、ステップS315のリードアクセスの結果、イメージセンサ611のCCI-FS処理部623のErrorレジスタのレジスタ値が0であるか否かを判定する。
ステップS316において、イメージセンサ611のCCI-FS処理部623のErrorレジスタのレジスタ値が0でない(0以外である)と判定された場合、処理はステップS317に進む。
ステップS317において、アプリケーションプロセッサ614では、CCI-FS処理部653が、再送回数が3回以上であるか否かを判定し、再送回数が3回以上でない(1回または2回)と判定した場合、処理はステップS314に戻り、以下、同様の処理が繰り返して行われる。
ここで、ステップS308、ステップS313、またはステップS317において、再送回数が3回以上であると判定された場合、処理はステップS301に戻り、以下、同様の処理が繰り返して行われる。
一方、ステップS316において、イメージセンサ611のCCI-FS処理部623のErrorレジスタのレジスタ値が0であると判定された場合、処理はステップS318に進む。
図51に示すように、ステップS318乃至S327では、CCI-FSを使用したライト動作が行われる。
ステップS318において、アプリケーションプロセッサ614のCCI-FS処理部653が、ライト動作を行うようにePHレジスタの設定を行う。
ステップS319において、アプリケーションプロセッサ614のCCI-FS処理部653は、ライトデータレジスタの設定を行う。
ステップS320において、アプリケーションプロセッサ614のCCI-FS処理部653は、コマンド実行レジスタを1に設定して、ライトコマンドを発行する。
ステップS321において、アプリケーションプロセッサ614は、図53を参照して後述するSequence A_Write(AP時)処理を行う。
ステップS322において、マスタ側のSerDes装置613は、図56を参照して後述するSequence B(SerDes(Master)時)処理を行う。なお、図56では、スレーブ側のSerDes装置612が実行するSequence B(SerDes(Slave)時)処理について説明しているが、マスタ側のSerDes装置613においても対応する各ブロックにより同様の処理を実行することができる。
ステップS323において、マスタ側のSerDes装置613の拡張パケットヘッダePHの拡張DTから、CSI2-FS処理部643およびCSIA処理部642を経由して、A-PHY処理部641が、A-PHYヘッダおよびA-PHYフッタを付加してA-PHY転送を行う。
ステップS324において、スレーブ側のSerDes装置612は、図56を参照して後述するSequence B(SerDes(Slave)時)処理を行う。
ステップS325において、スレーブ側のSerDes装置612は、図53を参照して後述するSequence A_Write(SerDes(Slave)時)処理を行う。なお、図53では、アプリケーションプロセッサ614が実行するSequence A_Write(AP時)処理について説明しているが、スレーブ側のSerDes装置612においても対応する各ブロックにより同様の処理を実行することができる。
ステップS326において、イメージセンサ611は、図56を参照して後述するSequence B(Image Sensor時)処理を行う。なお、図56では、スレーブ側のSerDes装置612が実行するSequence B(SerDes(Slave)時)処理について説明しているが、イメージセンサ611においても対応する各ブロックにより同様の処理を実行することができる。
ステップS327において、イメージセンサ611では、CCI-FS処理部623が、拡張パケットヘッダePHおよび拡張パケットフッタePFの内容から、レジスタ624のアドレスにライトデータを書き込むライト処理を行う。その後、処理はステップS328に進む。
図52に示すように、ステップS328乃至S344では、CCI-FSを使用したリード動作が行われる。
ステップS328において、アプリケーションプロセッサ614のCCI-FS処理部653は、リード動作を行うようにePHレジスタの設定を行う。
ステップS329において、アプリケーションプロセッサ614のCCI-FS処理部653は、リードデータレジスタの設定を行う。
ステップS330において、アプリケーションプロセッサ614のCCI-FS処理部653は、コマンド実行レジスタを1に設定して、リードコマンドを発行する。
ステップS331において、アプリケーションプロセッサ614は、図54を参照して後述するSequence A_Read_CMD(AP時)処理を行う。ここで、Sequence A_Read_CMD(AP時)処理では、分岐された2つの処理が並列的に行われ、分岐Aに応じてステップS332に処理は進み、分岐Bに応じてステップS339に処理は進む。
ステップS332において、マスタ側のSerDes装置613は、図56を参照して後述するSequence B(SerDes(Master)時)処理を行う。なお、図56では、スレーブ側のSerDes装置612が実行するSequence B(SerDes(Slave)時)処理について説明しているが、マスタ側のSerDes装置613においても対応する各ブロックにより同様の処理を実行することができる。
ステップS333において、マスタ側のSerDes装置613の拡張パケットヘッダePHの拡張DTから、CSI2-FS処理部643およびCSIA処理部642を経由して、A-PHY処理部641が、A-PHYヘッダおよびA-PHYフッタを付加してA-PHY転送を行う。
ステップS334において、スレーブ側のSerDes装置612は、図56を参照して後述するSequence B(SerDes(Slave)時)処理を行う。
ステップS355において、スレーブ側のSerDes装置612は、図54を参照して後述するSequence A_Read_CMD(SerDes(Slave)時)処理を行う。なお、図54では、アプリケーションプロセッサ614において実行されるSequence A_Read_CMD(AP時)処理について説明しているが、スレーブ側のSerDes装置612においても対応する各ブロックにより同様の処理を実行することができる。ここで、Sequence A_Read_CMD(SerDes(Slave)時)処理では、分岐された2つの処理のうち、分岐Aに処理は進まず、分岐Bに応じてステップS336に処理は進む。
ステップS336において、スレーブ側のSerDes装置612は、図57を参照して後述するSequence A_Read_Data(SerDes(Slave)時)処理を行う。なお、図57では、アプリケーションプロセッサ614において実行されるSequence A_Read_Data(AP時)処理について説明しているが、スレーブ側のSerDes装置612においても対応する各ブロックにより同様の処理を実行することができる。
ステップS337において、スレーブ側のSerDes装置612の拡張パケットヘッダePHの拡張DTから、CSI2-FS処理部633およびCSIA処理部632を経由して、A-PHY処理部631が、A-PHYヘッダおよびA-PHYフッタを付加してA-PHY転送を行う。
ステップS338において、マスタ側のSerDes装置613は、図56を参照して後述するSequence B(SerDes(Master)時)処理を行う。なお、図56では、スレーブ側のSerDes装置612において実行されるSequence B(SerDes(Slave)時)処理について説明しているが、マスタ側のSerDes装置613においても対応する各ブロックにより同様の処理を実行することができる。
ステップS339において、アプリケーションプロセッサ614は、図57を参照して後述するSequence A_Read_Data(AP時)処理を行う。
ステップS340において、アプリケーションプロセッサ614は、図56を参照して後述するSequence B(AP時)処理を行う。なお、図56では、スレーブ側のSerDes装置612において実行されるSequence B(SerDes(Slave)時)処理について説明しているが、アプリケーションプロセッサ614においても対応する各ブロックにより同様の処理を実行することができる。
ステップS341において、アプリケーションプロセッサ614では、CCI-FS処理部653が、拡張パケットヘッダePHおよび拡張パケットフッタePFの内容から、レジスタ654のアドレスにリードデータを格納する。
ステップS342において、上述したリード処理を、イメージセンサ611、スレーブ側のSerDes装置612、マスタ側のSerDes装置613、およびアプリケーションプロセッサ614で、Errorレジスタ確認を実施する。
ステップS343において、イメージセンサ611、各デバイス(スレーブ側のSerDes装置612、マスタ側のSerDes装置613、およびアプリケーションプロセッサ614)は、それぞれのCCI-FS処理部のErrorレジスタのレジスタ値が0であるか否かを判定する。
ステップS343において、全てのCCI-FS処理部のレジスタ値が0でない(いずれかに0以外のレジスタ値がある)と判定された場合、処理はステップS344に進む。
ステップS344において、レジスタ値が0でないCCI-FS処理部のError関連レジスタ値を確認し、Errorレジスタを1ライトクリアして再送処理を行う。
一方、ステップS343において、全てのCCI-FS処理部のレジスタ値が0であると判定された場合、または、ステップS344の処理後、処理は終了される。
図53は、図51のステップS321において行われるSequence A_Write(AP時)処理を説明するフローチャートである。なお、図53では、アプリケーションプロセッサ614が行う処理を例に説明するが、図51のステップS325のSequence A_Write(SerDes(Slave)時)処理も同様に行われる。
ステップS351において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、スタートコマンドおよびスレーブアドレス(図42に示したSlave Address+W 8-bit)を発行する。
ステップS352において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、マスタ側のSerDes装置613のI2C/I3Cスレーブ644からのACK応答を受信したか否かを判定する。ステップS352において、マスタ側のSerDes装置613のI2C/I3Cスレーブ644からのACK応答を受信したと判定された場合、処理はステップS353に進む。
ステップS353において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、レジスタアドレス(図42に示したRegister Address [15:8])を発行する。ここで、ステップS353の処理が繰り返して行われるたびに、図42に示したように、このレジスタアドレス以下のペイロードが送信される。
ステップS354において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、マスタ側のSerDes装置613のI2C/I3Cスレーブ644からのACK応答を受信したか否かを判定する。ステップS354において、マスタ側のSerDes装置613のI2C/I3Cスレーブ644からのACK応答を受信したと判定された場合、処理はステップS355に進む。
ステップS355において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、最終データの転送が完了したか否かを判定する。ステップS355において、最終データの転送が完了していないと判定された場合、処理はステップS353に戻り、以下、同様の処理が繰り返して行われる。
一方、ステップS355において、最終データの転送が完了したと判定された場合、処理はステップS356に進む。ステップS356において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、ストップコマンドを発行する。これにより、Sequence A_Write(AP時)処理は終了し、図51のステップS322に処理が戻る。
一方、ステップS352またはS354において、マスタ側のSerDes装置613のI2C/I3Cスレーブ644からのACK応答を受信しなかったと判定された場合、処理はステップS357に進む。ステップS357において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、ストップコマンドを発行する。この場合、Sequence A_Write(AP時)処理が終了するとともに、通信処理自体が終了される。
図54は、図52のステップS331において行われるSequence A_Read_CMD(AP時)処理を説明するフローチャートである。なお、図54では、アプリケーションプロセッサ614が行う処理を例に説明するが、図52のステップS335のSequence A_Read_CMD(SerDes(Slave)時)処理も同様に行われる。
ステップS361において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、スタートコマンドおよびスレーブアドレス(図42に示したSlave Address+W 8-bit)を発行し、タイマーを起動する。
ステップS362において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、マスタ側のSerDes装置613のI2C/I3Cスレーブ644からのACK応答を受信したか否かを判定する。ステップS362において、マスタ側のSerDes装置613のI2C/I3Cスレーブ644からのACK応答を受信したと判定された場合、処理はステップS363に進む。
ステップS363において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、レジスタアドレス(図42に示したRegister Address [15:8])を発行する。ここで、ステップS363の処理が繰り返して行われるたびに、図42に示したように、このレジスタアドレス以下のペイロードの送信が送信される。
ステップS364において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、マスタ側のSerDes装置613のI2C/I3Cスレーブ644からのACK応答を受信したか否かを判定する。
ステップS364において、マスタ側のSerDes装置613のI2C/I3Cスレーブ644からのACK応答を受信したと判定された場合、処理はステップS365に進む。
ステップS365において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、最終データの転送が完了したか否かを判定する。
ステップS365において、最終データの転送が完了したと判定された場合、処理はステップS366に進む。
ステップS366において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、ストップコマンドを発行する。その後、処理は2つに分岐し、分岐Aに従って処理は図52のステップS332に進む。一方、分岐Bに従って、ステップS367においてSequence C(AP時)処理(後述する図55参照)が行われた後、処理は図52のステップS339に進む。
一方、ステップS365において、最終データの転送が完了していないと判定された場合、処理はステップS368に進む。
ステップS368において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、ステップS361でスタートしたタイマーがタイムアウトしたか否かを判定する。ステップS368において、タイマーがタイムアウトしていないと判定された場合、処理はステップS363に戻り、以下、同様の処理が繰り返して行われる。
一方、ステップS368において、タイマーがタイムアウトしたと判定された場合、処理はステップS369に進む。
ステップS369において、アプリケーションプロセッサ614は、Errorレジスタ(Timeout)に1を設定し、Error関連レジスタに拡張パケットヘッダePHおよび拡張パケットフッタePFのデータを格納する。
ステップS369の処理後、または、ステップS362もしくはS364において、マスタ側のSerDes装置613のI2C/I3Cスレーブ644からのACK応答を受信しなかったと判定された場合、処理はステップS370に進む。
ステップS370において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、ストップコマンドを発行する。この場合、Sequence A_Read_CMD(AP時)処理が終了するとともに、通信処理自体が終了される。
図55は、図54のステップS367において行われるSequence C(AP時)処理を説明するフローチャートである。なお、図55では、アプリケーションプロセッサ614が行う処理を例に説明するが、スレーブ側のSerDes装置612においても同様の処理を行うことができる。
ステップS381において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、図54のステップS361でスタートしたタイマーがタイムアウトしたか否かを判定し、タイムアウトしたと判定されるまで処理が待機される。ステップS381において、タイムアウトしたと判定されると、処理はステップS382に進み、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、ポーリング動作を行う。
ステップS383において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、リードコマンドのStatusレジスタ値が1であるか否かを判定する。
ステップS383において、リードコマンドのStatusレジスタ値が1であると判定された場合、処理はステップS384に進む。ステップS384において、アプリケーションプロセッサ614は、リードアクセスを行った後、処理は図52のステップS339に戻る。
一方、ステップS383において、リードコマンドのStatusレジスタ値が1でない(1以外である)と判定された場合、処理はステップS385に進む。ステップS385において、アプリケーションプロセッサ614は、Errorレジスタ(Timeout)に1を設定し、Error関連レジスタに拡張パケットヘッダePHおよび拡張パケットフッタePFのデータを格納する。
ステップS386において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、ストップコマンドを発行する。この場合、Sequence C(AP時)処理が終了するとともに、通信処理自体が終了される。
図56は、図51のステップS324およびS334において行われるSequence B(SerDes(Slave)時)処理を説明するフローチャートである。なお、図56では、スレーブ側のSerDes装置612が行う処理を例に説明するが、図51のステップS322のSequence B(SerDes(Master)時)、図51のステップS326のSequence B(Image Sensor時)処理、および、図52のステップS332のSequence B(SerDes(Master)時)処理も同様に行われる。
ステップS391において、スレーブ側のSerDes装置612では、CCI-FS処理部636が、スレーブ側のSerDes装置612のSource IDと拡張パケットヘッダePHのDestination SIDを確認する。
ステップS392において、スレーブ側のSerDes装置612では、CCI-FS処理部636が、スレーブ側のSerDes装置612のSource IDと拡張パケットヘッダePHのDestination SIDとが不一致であるか否かを判定する。
ステップS392において、スレーブ側のSerDes装置612のSource IDと拡張パケットヘッダePHのDestination SIDとが不一致であると判定された場合、処理はステップS393に進む。
ステップS393において、スレーブ側のSerDes装置612では、CCI-FS処理部636が、スレーブ側のSerDes装置612のDestination SIDと拡張パケットヘッダePHのDestination SIDを確認する。
ステップS394において、スレーブ側のSerDes装置612では、CCI-FS処理部636が、スレーブ側のSerDes装置612のSource IDと拡張パケットヘッダePHのDestination SIDとが一致したか否かを判定する。
ステップS394において、スレーブ側のSerDes装置612のSource IDと拡張パケットヘッダePHのDestination SIDとが一致したと判定された場合、処理はステップS395に進む。
ステップS395において、スレーブ側のSerDes装置612では、CCI-FS処理部636が、拡張パケットヘッダePHの内容から、Message Counterを確認する。
ステップS396において、スレーブ側のSerDes装置612では、CCI-FS処理部636が、スレーブ側のSerDes装置612でのMessage Counterと、拡張パケットヘッダePHの内容から確認したMessage Counterの受信値とが一致したか否かを判定する。
ステップS396において、スレーブ側のSerDes装置612でのMessage Counterと、拡張パケットヘッダePHの内容から確認したMessage Counterの受信値とが一致したと判定された場合、処理はステップS397に進む。
ステップS397において、スレーブ側のSerDes装置612では、CCI-FS処理部636が、スレーブ側のSerDes装置612で拡張パケットヘッダePHから計算されたCRC計算結果と、拡張パケットフッタePFの受信値(ePF0)とを確認する。
ステップS398において、拡張パケットフッタePFの受信値(ePF0)とCRC計算結果とが一致するか否かを判定し、一致すると判定された場合、図51のステップS325に処理は戻る。
一方、ステップS392において、スレーブ側のSerDes装置612のSource IDと拡張パケットヘッダePHのDestination SIDとが不一致でない(一致している)と判定された場合、処理はステップS399に進む。
ステップS399乃至S402では、ステップS395乃至S398と同様の処理が行われる。
ステップS402において、拡張パケットフッタePFの受信値(ePF0)とCRC計算結果とが一致したと判定された場合、処理はステップS403に進む。ステップS403において、スレーブ側のSerDes装置612のレジスタ637にライトアクセスする。
ステップS394において、スレーブ側のSerDes装置612のSource IDと拡張パケットヘッダePHのDestination SIDとが一致していないと判定された場合、処理はステップS404に進む。ステップS404において、スレーブ側のSerDes装置612では、CCI-FS処理部636が、Errorレジスタ[2](Routing)に1を設定し、Error関連レジスタに拡張パケットヘッダePHおよび拡張パケットフッタePFのデータを格納する。
ステップS398またはS402において、拡張パケットフッタePFの受信値(ePF0)とCRC計算結果とが一致していないと判定された場合、処理はステップS405に進む。ステップS405において、スレーブ側のSerDes装置612では、CCI-FS処理部636が、Errorレジスタ(CRC)に1を設定し、Error関連レジスタに拡張パケットヘッダePHおよび拡張パケットフッタePFのデータを格納する。
ステップS396またはS400において、スレーブ側のSerDes装置612でのMessage Counterと、拡張パケットヘッダePHの内容から確認したMessage Counterの受信値とが一致していないと判定された場合、処理はステップS406に進む。ステップS406において、スレーブ側のSerDes装置612では、CCI-FS処理部636が、Errorレジスタ(MC)に1を設定し、Error関連レジスタに拡張パケットヘッダePHおよび拡張パケットフッタePFのデータを格納する。
ステップS403乃至S406の処理後、Sequence B(SerDes(Slave)時)処理が終了するとともに、通信処理自体が終了される。
なお、CRC計算について、E2E Protectionのみを対象として実施しても構わないこと、各デバイスそれぞれでエラー検出すること、パケット破棄する/しないことについて、これらを組み合わせが想定される。
図57は、図52のステップS339において行われるSequence A_Read_Data(AP時)処理を説明するフローチャートである。なお、図57では、アプリケーションプロセッサ614が行う処理を例に説明するが、図52のステップS336のSequence A_Read_Data(SerDes(Slave)時)処理も同様に行われる。
ステップS411において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、スタートコマンドおよびスレーブアドレス(図48に示したSlave Address+W 8-bit)を発行する。
ステップS412において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、マスタ側のSerDes装置613のI2C/I3Cスレーブ644からのACK応答を受信したか否かを判定する。ステップS412において、マスタ側のSerDes装置613のI2C/I3Cスレーブ644からのACK応答を受信したと判定された場合、処理はステップS413に進む。
ステップS413において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、スタートコマンドおよびスレーブアドレス(図48に示したSlave Address+R 8-bit)を発行し、タイマーを起動する。
ステップS414において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、マスタ側のSerDes装置613のI2C/I3Cスレーブ644からのACK応答を受信したか否かを判定する。ステップS414において、マスタ側のSerDes装置613のI2C/I3Cスレーブ644からのACK応答を受信したと判定された場合、処理はステップS415に進む。
ステップS415において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、アプリケーションプロセッサ614側の対向のI2C/I3Cスレーブ644からリードデータを取得する。
ステップS416において、アプリケーションプロセッサ614のI2C/I3Cマスタ651がACK送信を行い、かつ、アプリケーションプロセッサ614側の対向のI2C/I3Cスレーブ644においてACK受信が行われたか否かが判定される。
ステップS416において、アプリケーションプロセッサ614のI2C/I3Cマスタ651がACK送信を行い、かつ、アプリケーションプロセッサ614側の対向のI2C/I3Cスレーブ644においてACK受信が行われたと判定された場合、処理はステップS417に進む。
ステップS417において、アプリケーションプロセッサ614のI2C/I3Cマスタ651が、最終データの転送が完了したのに伴ってNACK送信を行ったか否かが判定される。
ステップS417において、NACK送信を行ったと判定された場合、処理はステップS418に進む。ステップS418において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、ストップコマンドを発行する。これにより、Sequence A_Read_Data(AP時)処理は終了し、図52のステップS340に処理が戻る。
一方、ステップS417において、NACK送信を行っていないと判定された場合、処理はステップS419に進む。
ステップS419において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、ステップS413でスタートしたタイマーがタイムアウトしたか否かを判定する。ステップS419において、タイマーがタイムアウトしていないと判定された場合、処理はステップS415に戻り、以下、同様の処理が繰り返して行われる。
一方、ステップS419において、タイマーがタイムアウトしたと判定された場合、処理はステップS420に進む。
ステップS420において、アプリケーションプロセッサ614は、Errorレジスタ(Timeout)に1を設定し、Error関連レジスタに拡張パケットヘッダePHおよび拡張パケットフッタePFのデータを格納する。
ステップS420の処理後、または、ステップS414において、マスタ側のSerDes装置613のI2C/I3Cスレーブ644からのACK応答を受信していないと判定された場合、処理はステップS421に進む。同様に、ステップS416において、アプリケーションプロセッサ614のI2C/I3Cマスタ651がACK送信を行っていない、または、アプリケーションプロセッサ614側の対向のI2C/I3Cスレーブ644においてACK受信が行われていないと判定された場合、処理はステップS421に進む。
ステップS421において、アプリケーションプロセッサ614では、I2C/I3Cマスタ651が、ストップコマンドを発行する。この場合、Sequence A_Read_Data(AP時)処理が終了するとともに、通信処理自体が終了される。
ここで、I2C/I3Cスレーブ621が出力(図46参照)する際に、I2C/I3Cマスタ634からI2C/I3Cスレーブ621へのアクセスタイミング、および、マスタ側のSerDes装置613のI2C/I3Cスレーブ644が出力(図48参照)する際に、I2C/I3Cマスタ651からI2C/I3Cスレーブ644へのアクセスタイミングには、次に説明する3つの組み合わせがある。
第1のアクセスタイミングは、リードデータが取得されるまでポーリングして、リードデータの読み出し準備完了後に、I2C/I3Cマスタがリード処理を開始する。
第2のアクセスタイミングは、一定時間経過後、I2C/I3Cマスタがリード処理を開始する。
第3のアクセスタイミングは、Clock Stretch方式(後述する図72参照)を用いて、一定時間経過後、I2C/I3Cマスタがリード処理を開始し、その際、リードデータを塊で送る形態と、リードデータをばらばらに送る形態(Clock Stretch Mode信号をアサート)とがある。
<拡張パケットヘッダePHの構成例>
図58乃至図60は、拡張パケットヘッダePHの構成例を示す図である。
図58には、拡張パケットヘッダePH0、拡張パケットヘッダePH1、および拡張パケットヘッダePH2の詳細な構成例が示されている。図示するような拡張パケットヘッダePHの追加は、CCI-FS用に拡張パケットヘッダePHの内容が、C-PHYおよびD-PHYでのePH構造を流用して規定されている。
図59には、拡張パケットヘッダePH3の詳細な構成例が示されている。図示するような拡張パケットヘッダePHの追加は、CCI-FS用に拡張パケットヘッダePHの内容が規定されている。
図60には、拡張パケットヘッダePHの拡張DTの詳細な構成例が示されている。例えば、CCI-FSに対応するために、拡張パケットヘッダePHのデータタイプに、「0xC0:For I2C」と「0xC1:For I3C」が追加されている。
<I2Cの回路構成例>
図61には、従来のI2Cのハードウェアでの構成例が示されている。例えば、ハードウェア実装時で、上位にバス接続構成の場合におけるI2Cの構成例が示されており、スレーブ側は、上位からAKC/NACKを受信できる構成であってもよい。もちろん、一例が示されているものであり、必ずしも上位バス構成が一致するものではない。
図62には、I2Cバス上のデータ転送時の波形が示されている。なお、I2Cバス規格とCCI(I2C)は等価なものとする。
図63は、上述の図27に示した通信システム501と同様ように、A-PHY直結構成の通信システム701におけるCCI関連の構成例を示すブロック図である。
図63に示すように、通信システム701は、イメージセンサ711およびアプリケーションプロセッサ712がA-PHYにより直接的に接続されている。
イメージセンサ711は、A-PHY処理部721、CSIA処理部722、CSI2処理部523、CSI2-FS処理部724、CCI処理部725、CCI-FS処理部726、レジスタ727、並びに、セレクタ728-1および728-2を備えて構成される。図示するように、セレクタ728-1および728-2は、CCI-FS処理部726を挟み込むように配置されており、レジスタ727のCCI_FS_Enable信号に従って、CCI-FS処理部726の有効/無効を切り替えることができる。
アプリケーションプロセッサ712は、A-PHY処理部731、CSIA処理部732、CSI2処理部733、CSI2-FS処理部734、CCI処理部735、CCI-FS処理部736、レジスタ737、並びに、セレクタ738-1および738-2を備えて構成される。図示するように、セレクタ738-1および738-2は、CCI-FS処理部736を挟み込むように配置されており、レジスタ737のCCI_FS_Enable信号に従って、CCI-FS処理部736の有効/無効を切り替えることができる。
例えば、CCI_FS_Enable信号がCCI-FSを有効にすることを示している場合(CCI_FS_Enable=1)、一点鎖線の矢印に示すように、CCI-FS処理部726およびCCI-FS処理部736を介してデータが送受信される。一方、CCI_FS_Enable信号がCCI-FSを無効にすることを示している場合(CCI_FS_Enable=0)、二点鎖線の矢印に示すように、CCI-FS処理部726およびCCI-FS処理部736を介さずにデータが送受信される。
<ネットワークの接続形態>
図64には、A-PHY直結構成およびSerDes接続構成のネットワークの接続形態(トポロジー)の一例が示されている。
アプリケーションプロセッサ801は、A-PHYを介して直接的にイメージセンサ802に接続されており、イメージセンサ802は、I2C/I3Cを介してセンサ803に接続される接続形態を構成することができる。
アプリケーションプロセッサ801は、I2C/I3Cを介してマスタ側のSerDes装置804に接続され、マスタ側のSerDes装置804およびスレーブ側のSerDes装置805がA-PHYを介して接続されている。スレーブ側のSerDes装置805は、I2C/I3Cを介して2つのセンサ806-1および806-2に接続される接続形態を構成することができる。
<CCI-FS処理部の回路構成>
図65は、CCI-FS処理部の回路構成の一例を示すブロック図である。図65に示すCCI-FS処理部901およびレジスタ902は、上述した各デバイスが備えるCCI-FS処理部およびレジスタで共通の構成となる。
図65に示すように、CCI-FS処理部901は、上位レイヤにCCI-FSスイッチやレジスタなどが設けられており、下位レイヤにCCI処理部が設けられている。CCI-FS処理部901は、CCI-FS送信部911およびCCI-FS受信部912を備えて構成される。レジスタ902からCCI-FS処理部901には、各種のレジスタ設定値情報が供給され、CCI-FS処理部901からレジスタ902には、Error通知が供給される。
CCI-FS送信部911は、拡張パケットヘッダePH生成部921、拡張パケットフッタePF生成部922、およびDestination Address確認部923を備えている。
拡張パケットヘッダePH生成部921は、Message Counterを生成するMC生成部941、および、パケット長を計算するPacket Length計算部942を有している。拡張パケットフッタePF生成部922は、拡張パケットフッタePF1を生成する拡張パケットフッタePF1生成部943、および、拡張パケットフッタePF0に格納されるCRCを計算するCRC計算部944を有している。
CCI-FS受信部912は、拡張パケットヘッダePH確認部931、拡張パケットフッタePF確認部932、およびDestination Address確認部933を備えている。
拡張パケットヘッダePH確認部931は、Message Counterを確認するMC確認部951、および、パケット長を計算および確認するPacket Length計算・確認部952を有している。拡張パケットフッタePF確認部932は、拡張パケットフッタePF1を確認する拡張パケットフッタePF1確認部953、および、拡張パケットフッタePF0に格納されるCRCを計算するCRC計算部954を有している。
CCI-FS処理部901は、CCI-FS送信部911により、上位レイヤからのデータのDestination Addressを確認して、拡張パケットヘッダePHおよび拡張パケットフッタePFを生成してデータに付加し、下位のレイヤに供給することができる。CCI-FS処理部901は、CCI-FS受信部912により、下位レイヤからのデータのDestination Addressを確認して、拡張パケットヘッダePHおよび拡張パケットフッタePFを確認し、上位のレイヤに供給することができる。
ここで、上述した図40に示したSerDes接続構成の構成例の通信システム601を構成する各デバイスのCCI-FS処理部の動作について説明する。
アプリケーションプロセッサ614は、アプリケーションプロセッサ614での拡張パケットヘッダePHにおいて、自デバイスを示すSource IDを有する。そして、CCI-FS処理部653は、上記情報と、目的とするアクセスを行うデバイスを示すDestination IDを有する情報とを付加する。
スレーブ側のSerDes装置612およびマスタ側のSerDes装置613は、自デバイスを示すSource IDを、事前設定されることにより、もしくは固有値として有する。CCI-FS処理部636およびCCI-FS処理部646は、上記情報と、接続デバイスと目的とするデバイスを示すDestination IDを有する情報との事前設定を行う。
また、CCI-FS処理部636およびCCI-FS処理部646は、受信した拡張パケットヘッダePHのDesination IDと自分のID(Source ID)を比較し、自分へのアクセスか、目的とするデバイスを示す(Desination ID)かの判別を行う。例えば、受信した拡張パケットヘッダePHのDesination IDと自分のID(Source ID)とが一致したときは、中間デバイス(SerDes装置)へのアクセスとして、自身のレジスタアクセスを行う。一方、受信した拡張パケットヘッダePHのDesination IDと自分のID(Source ID)とが一致しないときは、後段デバイスへのアクセスとして、接続されたデバイス(Desination ID)へ向けてデータ転送を行う。
上記のように、拡張パケットヘッダePHに埋め込まれたSource IDとDestination ID、中間デバイス(SerDes装置)または目的とするデバイスに、事前設定または固有値のSource ID、事前設定された接続先情報を元にデータを転送し、目的とするデバイスへ向けてアクセスを行う。
イメージセンサ611のCSI2-FS処理部623は、受信した拡張パケットヘッダePHのDestination IDと、自分のID(Source ID)とが一致したときは、イメージセンサ611へのアクセスとして、自身のレジスタアクセスを行う。
このように、各デバイスが有するSource IDは、それぞれのデバイスに対して固有の値、事前設定された値、もしくはそれらの組み合わせを用いることができる。
図66乃至図68は、レジスタ902の詳細な構成例を示す図である。
図66には、レジスタ902のアドレス0x000からアドレス0x109までの詳細が示されている。図67には、レジスタ902のアドレス0x110からアドレス0x125までの詳細として、Bridge構成時の構成例が示されている。
図68には、レジスタ902のアドレス0x200の詳細として、Error関連レジスタが示されている。図68には、レジスタ902のアドレス0x300およびアドレス0x400の詳細として、Error関連レジスタ(debug)が示されている。図68には、レジスタ902のアドレス0x800の詳細として、Error Injection関連レジスタ(debug)が示されている。
<拡張パケットヘッダePHの変形例>
図69および図70を参照して、拡張パケットヘッダePHの変形例について説明する。
図69には、上述の図33を参照して説明したように、ライトアクセス時に、アプリケーションプロセッサ512のCCI-FS処理部536で生成されるライトデータのパケット構成における拡張パケットヘッダePHの変形例が示されている。図69に示す拡張パケットヘッダePHは、拡張パケットヘッダePH3および拡張パケットヘッダePH4の構成が、上述の図33に示した構成例と異なっている。
図70には、上述の図28を参照して説明したように、リードアクセス時に、アプリケーションプロセッサ512のCCI-FS処理部536において生成されるライトデータのパケット構成における拡張パケットヘッダePHの変形例が示されている。図70に示す拡張パケットヘッダePHは、拡張パケットヘッダePH3および拡張パケットヘッダePH4の構成が、上述の図28に示した構成例と異なっている。
例えば、図69および図70に示す拡張パケットヘッダePHでは、実装依存で、以下のような組み合わせが想定される。
Readアドレス情報を拡張パケットヘッダePHに格納しても、AP(CCI)ペイロードに格納してもよい。Length情報を拡張パケットヘッダePHに格納しても、AP(CCI)ペイロードに格納してもよい。CMDの情報を、拡張パケットヘッダePHのCCI Command IDに格納してもよい。CCI Command IDに基づいて、コマンドの開始、再開、および終了情報が参照される。CCI Header Lengthを用いて、AP(CCI)ペイロードにCCIの情報(例えば、Slave Addressなど)を格納してもよい。CCI Header Lengthは、CCIプロトコル(I2C)のヘッダ長を示す情報である。
図71は、図27に示したようなA-PHY直結構成におけるイメージセンサ511およびアプリケーションプロセッサ512との間のフローを説明する図である。
アプリケーションプロセッサ512では、CCI-FSスイッチ538が、リードコマンドおよびライトコマンドを発行する。CCI-FSスイッチ538は、スレーブアドレス(Slave Address+W 8bit)、レジスタアドレス(Register Address[15:8]、Register Address[7:0])、および、データ(Data*(*=N)[7:0])を、CCI処理部535に供給する。CCI処理部535は、それらをAP(CCI)ペイロードに変換して、A-PHY処理部531に供給する。A-PHY処理部531は、AP(CCI)ペイロードにA-PHYヘッダおよびA-PHYフッタを付加し、イメージセンサ511へA-PHY転送を行う。
イメージセンサ511では、A-PHY処理部521が、A-PHYヘッダおよびA-PHYフッタを除去してAP(CCI)ペイロードをCCI処理部525に供給する。CCI処理部525は、AP(CCI)ペイロードを変換し、その内容に基づいて、ライトコマンドに従ってレジスタ527にデータを書き込み、リードコマンドに従ってレジスタ527からデータを読み出す。
このとき、CCI-FS Enableの初期設定は、CCI処理部525により行われ、レジスタインタフェースやAHBバスなどのバス変換が行われる。そして、CCI-FS Enable設定の確認は、CCI処理部525またはCCI-FS処理部526を経由して行われる。
CCI処理部525は、リードコマンドに応じてレジスタ527から読み出されたリードデータ(Data*(*=M)[7:0])をAP(CCI)ペイロードに変換して、A-PHY処理部521に供給する。A-PHY処理部521は、AP(CCI)ペイロードにA-PHYヘッダおよびA-PHYフッタを付加し、アプリケーションプロセッサ512へA-PHY転送を行う。
アプリケーションプロセッサ512では、A-PHY処理部531が、A-PHYヘッダおよびA-PHYフッタを除去してAP(CCI)ペイロードをCCI処理部535に供給する。CCI処理部535は、AP(CCI)ペイロードを変換し、リードデータ(Data*(*=M)[7:0])をCCI-FSスイッチ538に供給する。
CCI-FSスイッチ538は、レジスタ537に対してCCI-FS Enable設定およびCCI-FS関連各種レジスタ設定を行う。このとき、レジスタアクセスは、実装に依存する。CCI-FSスイッチ538は、レジスタ537、CCI-FS処理部536、A-PHY処理部531、A-PHY処理部521、CCI-FS処理部526を介して、レジスタ527に対してCCI-FS関連各種レジスタ設定を行う。
アプリケーションプロセッサ512では、CCI-FSスイッチ538が、リードコマンドを発行する。CCI-FSスイッチ538は、スレーブアドレス(Slave Address+W 8bit)、レジスタアドレス(Register Address[15:8]、Register Address[7:0])、および、データ(Data*(*=N)[7:0])を、レジスタ537に供給する。CCI-FS処理部536は、それらをAP(CCI)ペイロードに変換し、拡張パケットヘッダePH*(*=n)、拡張パケットフッタePF1、および拡張パケットフッタePF0を付加して、A-PHY処理部531に供給する。A-PHY処理部531は、それらにA-PHYヘッダおよびA-PHYフッタを付加し、イメージセンサ511へA-PHY転送を行う。
イメージセンサ511では、A-PHY処理部521が、A-PHYヘッダおよびA-PHYフッタを除去して、拡張パケットヘッダePH*(*=n)、AP(CCI)ペイロード、拡張パケットフッタePF1、および拡張パケットフッタePF0を、CCI-FS処理部526に供給する。CCI-FS処理部526は、AP(CCI)ペイロードを変換し、その内容に基づいて、リードコマンドに従ってレジスタ527からデータを読み出す。このとき、レジスタアクセスは、実装に依存し、レジスタインタフェースやAHBバス、CCIインタフェースなどのバス変換が行われる。
CCI-FS処理部526は、リードコマンドに応じてレジスタ527から読み出されたリードデータ(Data*(*=M)[7:0])をAP(CCI)ペイロードに変換し、拡張パケットヘッダePH*(*=n)、拡張パケットフッタePF1、および拡張パケットフッタePF0を付加して、A-PHY処理部521に供給する。A-PHY処理部521は、それらにA-PHYヘッダおよびA-PHYフッタを付加し、アプリケーションプロセッサ512へA-PHY転送を行う。
アプリケーションプロセッサ512では、A-PHY処理部531が、A-PHYヘッダおよびA-PHYフッタを除去して、拡張パケットヘッダePH*(*=n)、AP(CCI)ペイロード、拡張パケットフッタePF1、および拡張パケットフッタePF0を、CCI-FS処理部536に供給する。CCI-FS処理部536は、AP(CCI)ペイロードを変換し、リードデータ(Data*(*=M)[7:0])をCCI-FSスイッチ538に供給する。
なお、上述したフローは、ハードウェアでのI2C/I3Cコマンド生成を例に説明を行ったが、その他、以下のような組み合わせがある。
ソフトウェアの場合、ソフトウェアでのI2C/I3C生成として、Slave Address、Registerアドレス、Payload、ACK応答受信、送信、各種制御コード(S,Sr,ACK,NACK,P)がソフトウェアで生成(例えば、GPIO制御のイメージ)される。ソフトウェアでのI2C/I3Cコマンド生成として、CPUバス設定でACK受信に応じて、CPUから、Slave Address、Registerアドレス、Payloadを発行する。
ハードウェアの場合、ハードウェアでのI2C/I3C生成として、I2C/I3CのHW IPに転送設定、データを設定する。各種制御コードはハードウェアで自動応答する。ハードウェアでのI2C/I3Cコマンド生成として、I2C/I3CのHW IPに転送設定でデータを設定し、コマンドで送信を行う。各種制御コードはハードウェアで自動応答する。
図72は、図40に示したようなSerDes接続構成におけるイメージセンサ611およびアプリケーションプロセッサ614の間のWriteアクセスおよびReadアクセスにおいて、Clock Stretch方式を用いたフローを説明する図である。
アプリケーションプロセッサ614のCCI-FSスイッチ655は、スタートコマンドおよびライトコマンド(Slave Address+W 8bit)を、マスタ側のSerDes装置613のCCI処理部645に供給し、Scl_enb信号をアサートする。マスタ側のSerDes装置613では、CCI処理部645が、ライトコマンドをA-PHY処理部641に供給し、A-PHY処理部641は、ライトコマンドにA-PHYヘッダおよびA-PHYフッタを付加し、スレーブ側のSerDes装置612へA-PHY転送を行う。
スレーブ側のSerDes装置612では、A-PHY処理部631が、A-PHYヘッダおよびA-PHYフッタを除去してライトコマンドを、CCI処理部635(Slave)に供給する。CCI処理部635(Slave)は、Scl_enb信号をネゲートするとともにライトコマンドをCCI処理部635(Master)に供給する。ここで、マスタ側のSerDes装置613側との通信を行ってスレーブとして機能するCCI処理部635をCCI処理部635(Slave)と称し、イメージセンサ611側と通信を行ってマスタとして機能するCCI処理部635をCCI処理部635(Master)と称する。
CCI処理部635(Master)は、スタートコマンドおよびライトコマンドを、イメージセンサ611に送信する。
イメージセンサ611では、CCI処理部622が、スタートコマンドおよびライトコマンドを受信してCSI2-FS処理部623に供給する。CSI2-FS処理部623は、その受信に成功したことを示すACK応答をCCI処理部622に供給し、CCI処理部622は、スレーブ側のSerDes装置612にACK応答を送信する。
スレーブ側のSerDes装置612では、CCI処理部635(Master)がACK応答を受信し、CCI処理部635(Slave)からScl_enb信号がネゲートされると、ACK応答をCCI-FS処理部636に供給する。その後、CCI処理部635(Slave)は、CCI処理部635(Master)にScl_enb信号をアサートする。
CCI-FS処理部636は、ACK応答をA-PHY処理部631に供給する。A-PHY処理部631は、ACK応答にA-PHYヘッダおよびA-PHYフッタを付加し、マスタ側のSerDes装置613へA-PHY転送を行う。
マスタ側のSerDes装置613では、A-PHY処理部641が、A-PHYヘッダおよびA-PHYフッタを除去してACK応答をCCI処理部645に供給する。アプリケーションプロセッサ614のCCI-FSスイッチ655が、CCI処理部645に対してScl_enb信号をネゲートすると、CCI処理部645は、アプリケーションプロセッサ614にACK応答を送信する。
アプリケーションプロセッサ614では、CCI処理部652がACK応答を受信して、CCI-FS処理部653を介してCCI-FSスイッチ655に供給する。
アプリケーションプロセッサ614のCCI-FSスイッチ655は、レジスタアドレス(Register Address[7:0])を、マスタ側のSerDes装置613のCCI処理部645に供給し、Scl_enb信号をアサートする。マスタ側のSerDes装置613では、CCI処理部645が、レジスタアドレスをA-PHY処理部641に供給し、A-PHY処理部641は、レジスタアドレスにA-PHYヘッダおよびA-PHYフッタを付加し、スレーブ側のSerDes装置612へA-PHY転送を行う。
スレーブ側のSerDes装置612では、A-PHY処理部631が、A-PHYヘッダおよびA-PHYフッタを除去してレジスタアドレスを、CCI処理部635(Slave)に供給する。CCI処理部635(Slave)は、Scl_enb信号をネゲートするとともにレジスタアドレスをCCI処理部635(Master)に供給する。CCI処理部635(Master)は、レジスタアドレスを、イメージセンサ611に送信する。その後、CCI処理部635(Slave)は、CCI処理部635(Master)にScl_enb信号をアサートする。
イメージセンサ611では、CCI処理部622が、レジスタアドレスを受信してCSI2-FS処理部623に供給する。CSI2-FS処理部623は、その受信に成功したことを示すACK応答をCCI処理部622に供給し、CCI処理部622は、スレーブ側のSerDes装置612にACK応答を送信する。
その後、上述した処理と同様に、ACK応答がCCI-FSスイッチ655まで供給される。
アプリケーションプロセッサ614では、CCI-FS処理部653が、CCI-FSスイッチ655の制御に従って、マスタ側のSerDes装置613へ拡張パケットヘッダePH*(*=n)を送信する。
マスタ側のSerDes装置613では、CCI処理部645が、拡張パケットヘッダePH*(*=n)を受信し、CCI-FSスイッチ655からScl_enb信号がアサートされると、拡張パケットヘッダePH*(*=n)をA-PHY処理部641に供給する。その後、CCI-FSスイッチ655は、CCI処理部645にScl_enb信号をネゲートする。A-PHY処理部641は、拡張パケットヘッダePH*(*=n)にA-PHYヘッダおよびA-PHYフッタを付加し、スレーブ側のSerDes装置612へA-PHY転送を行う。
スレーブ側のSerDes装置612では、A-PHY処理部631が、A-PHYヘッダおよびA-PHYフッタを除去して拡張パケットヘッダePH*(*=n)を、CCI-FS処理部636に供給する。CCI-FS処理部636は、Scl_enb信号をネゲートするとともに拡張パケットヘッダePH*(*=n)をCCI処理部635(Master)に供給する。CCI処理部635(Master)は、拡張パケットヘッダePH*(*=n)を、イメージセンサ611に送信する。その後、CCI処理部635(Slave)は、CCI処理部635(Master)にScl_enb信号をアサートする。
イメージセンサ611では、CSI2-FS処理部623が、拡張パケットヘッダePH*(*=n)を受信する。CSI2-FS処理部623は、その受信に成功したことを示すACK応答をCCI処理部622に供給し、CCI処理部622は、スレーブ側のSerDes装置612にACK応答を送信する。
その後、上述した処理と同様に、ACK応答がCCI-FSスイッチ655まで供給される。
アプリケーションプロセッサ614のCCI-FSスイッチ655は、ライトデータ(Dara0[7:0])を、マスタ側のSerDes装置613のCCI処理部645に供給し、Scl_enb信号をアサートする。マスタ側のSerDes装置613では、CCI処理部645が、ライトデータをA-PHY処理部641に供給し、A-PHY処理部641は、ライトデータにA-PHYヘッダおよびA-PHYフッタを付加し、スレーブ側のSerDes装置612へA-PHY転送を行う。
マスタ側のSerDes装置613では、CCI処理部645が、ライトデータを受信し、CCI-FSスイッチ655からScl_enb信号がアサートされると、ライトデータをA-PHY処理部641に供給する。その後、CSI2-FS処理部653は、CCI-FSスイッチ655の制御に従って、CCI処理部645にScl_enb信号をネゲートする。A-PHY処理部641は、ライトデータにA-PHYヘッダおよびA-PHYフッタを付加し、スレーブ側のSerDes装置612へA-PHY転送を行う。
スレーブ側のSerDes装置612では、A-PHY処理部631が、A-PHYヘッダおよびA-PHYフッタを除去してライトデータを、CCI処理部635に供給する。CCI処理部635は、Scl_enb信号をネゲートするとともにライトデータをCCI処理部635(Master)に供給する。CCI処理部635(Master)は、ライトデータをイメージセンサ611に送信する。その後、CCI処理部635(Slave)は、CCI処理部635(Master)にScl_enb信号をアサートする。
イメージセンサ611では、CCI処理部622がライトデータを受信してCSI2-FS処理部623に供給し、CSI2-FS処理部623がレジスタ624にライトデータを書き込む。CSI2-FS処理部623は、ライトデータの書き込みに成功したことを示すACK応答をCCI処理部622に供給し、CCI処理部622は、スレーブ側のSerDes装置612にACK応答を送信する。
その後、上述した処理と同様に、ACK応答がCCI-FSスイッチ655まで供給される。
アプリケーションプロセッサ614では、CCI-FS処理部653が、CCI-FSスイッチ655の制御に従って、マスタ側のSerDes装置613へ拡張パケットフッタePF0を送信する。
マスタ側のSerDes装置613では、CCI処理部645が、拡張パケットフッタePF0を受信し、CCI-FSスイッチ655からScl_enb信号がアサートされると、拡張パケットフッタePF0をA-PHY処理部641に供給する。その後、CCI-FSスイッチ655は、CCI処理部645にScl_enb信号をネゲートする。A-PHY処理部641は、拡張パケットフッタePF0にA-PHYヘッダおよびA-PHYフッタを付加し、スレーブ側のSerDes装置612へA-PHY転送を行う。
スレーブ側のSerDes装置612では、A-PHY処理部631が、A-PHYヘッダおよびA-PHYフッタを除去して拡張パケットフッタePF0を、CCI-FS処理部636に供給する。CCI-FS処理部636は、Scl_enb信号をネゲートするとともに拡張パケットフッタePF0をCCI処理部635(Master)に供給する。CCI処理部635(Master)は、拡張パケットフッタePF0を、イメージセンサ611に送信する。その後、CCI処理部635(Slave)は、CCI処理部635(Master)にScl_enb信号をアサートする。
イメージセンサ611では、CSI2-FS処理部623が、拡張パケットフッタePF0を受信する。CSI2-FS処理部623は、その受信に成功したことを示すACK応答をCCI処理部622に供給し、CCI処理部622は、スレーブ側のSerDes装置612にACK応答を送信する。
その後、上述した処理と同様に、ACK応答がCCI-FSスイッチ655まで供給される。
アプリケーションプロセッサ614のCCI-FSスイッチ655は、リピートスタートコマンドおよびリードコマンド(Slave Address+R 8bit)を、マスタ側のSerDes装置613のCCI処理部645に供給し、Scl_enb信号をアサートする。マスタ側のSerDes装置613では、CCI処理部645が、リードコマンドをA-PHY処理部641に供給し、A-PHY処理部641は、リードコマンドにA-PHYヘッダおよびA-PHYフッタを付加し、スレーブ側のSerDes装置612へA-PHY転送を行う。
スレーブ側のSerDes装置612では、A-PHY処理部631が、A-PHYヘッダおよびA-PHYフッタを除去してリードコマンドを、CCI処理部635(Slave)に供給する。CCI処理部635(Slave)は、Scl_enb信号をネゲートするとともにリードコマンドをCCI処理部635(Master)に供給する。CCI処理部635(Master)は、リピートスタートコマンドおよびリードコマンドを、イメージセンサ611に送信する。
イメージセンサ611では、CCI処理部622が、リピートスタートコマンドおよびリードコマンドを受信して、レジスタ624に対してアクセスする。CCI処理部622は、その受信に成功したことを示すACK応答を、スレーブ側のSerDes装置612に送信する。
その後、上述した処理と同様に、ACK応答がCCI-FSスイッチ655まで供給される。
イメージセンサ611では、CCI処理部622が、レジスタ624からリードデータ(Data0[7:0])を読み出して、スレーブ側のSerDes装置612に送信する。
スレーブ側のSerDes装置612では、CCI処理部635(Master)が、リードデータを受信してCCI処理部635(Slave)に供給し、CCI処理部635(Slave)は、リードデータをA-PHY処理部631に供給する。A-PHY処理部631は、リードデータにA-PHYヘッダおよびA-PHYフッタを付加し、マスタ側のSerDes装置613へA-PHY転送を行う。
マスタ側のSerDes装置613では、A-PHY処理部641が、A-PHYヘッダおよびA-PHYフッタを除去してリードデータをCCI処理部645に供給し、CCI処理部645は、アプリケーションプロセッサ614にリードデータを送信する。
アプリケーションプロセッサ614では、CCI処理部652がリードデータを受信して、CCI-FS処理部653を介してCCI-FSスイッチ655に供給する。
CCI-FSスイッチ655は、NACK応答およびストップコマンドをCCI処理部645に送信する。CCI処理部645は、NACK応答およびストップコマンドをA-PHY処理部641に供給する。A-PHY処理部641は、NACK応答およびストップコマンドにA-PHYヘッダおよびA-PHYフッタを付加し、スレーブ側のSerDes装置612へA-PHY転送を行う。
スレーブ側のSerDes装置612では、A-PHY処理部631が、A-PHYヘッダおよびA-PHYフッタを除去してNACK応答およびストップコマンドを、CCI処理部635(Slave)に供給する。CCI処理部635(Slave)は、NACK応答およびストップコマンドをCCI処理部635(Master)に供給し、CCI処理部635(Master)は、NACK応答およびストップコマンドを、イメージセンサ611に送信する。
イメージセンサ611では、CCI処理部622が、NACK応答およびストップコマンドを受信してCSI2-FS処理部623に供給する。
なお、図72で説明したフローにおいて、スタート、リピートスタート、ACK応答、NACK応答、ストップなどのI2Cの制御コマンドは、拡張パケットヘッダePH0のControl Code Indicatorを1に設定し、1ByteのPayloadに割り当てられた各コードを示す。
<イメージセンサおよびアプリケーションプロセッサの詳細な構成例>
図73は、上述した図25に示したイメージセンサ211がCCI-FS処理部1001を備える構成の構成例を示すブロック図である。なお、図73に示すイメージセンサ211では、図25のイメージセンサ211と共通する構成には同一の符号を付し、その説明は省略する。
図73に示すように、CCI-FS処理部1001は、CCIスレーブ224およびレジスタ47の間に配置され、CCI-FS処理部1001を挟み込むようにMUX部1002-1および1002-2が配置されている。MUX部1002-1および1002-2は、レジスタ47から供給されるcci_fs_en信号に従って、CCI-FS処理部1001を有効にする場合には、CCI-FS処理部1001を介してデータを送受信する。一方、MUX部1002-1および1002-2は、レジスタ47から供給されるcci_fs_en信号に従って、CCI-FS処理部1001を無効にする場合には、CCI-FS処理部1001を介さずにデータを送受信する。
図74は、上述した図26に示したアプリケーションプロセッサ214がCCI-FS処理部1101を備える構成の構成例を示すブロック図である。なお、図74に示すアプリケーションプロセッサ214では、図26のアプリケーションプロセッサ214と共通する構成には同一の符号を付し、その説明は省略する。
図74に示すように、CCI-FS処理部1101はCCIマスタ254およびレジスタ73の間に配置され、CCI-FS処理部1101を挟み込むようにMUX部1102-1および1102-2が配置されている。MUX部1102-1および1102-2は、レジスタ73から供給されるcci_fs_en信号に従って、CCI-FS処理部1101を有効にする場合には、CCI-FS処理部1101を介してデータを送受信する。一方、MUX部1102-1および1102-2は、レジスタ73から供給されるcci_fs_en信号に従って、CCI-FS処理部1101を無効にする場合には、CCI-FS処理部1101を介さずにデータを送受信する。
なお、拡張パケットヘッダePHの構成における各fieldの実装方法に関しては、以下のような構成を採用してもよい。
・拡張VCは、Safe CCIでは未使用とする。(MIPIでの拡張ヘッダ関連とHeader fieldを合わせるために同様の構成としている)
・拡張DTでは、上位からのバスのコマンド関連の情報に埋め込んでもよいし、レジスタ設定からの信号線の設定の実装構成としてもよい。
・Protocolは、I2Cで記載しているが、I3CのSDRモードでも同様のことが実施することができる。
<通信システムの構成例>
図75乃至図117を参照して、本技術を適用した通信システムの第4の実施の形態について説明する。
図75は、第4の実施の形態の通信システムのブロック図である。図75のAには、第1のバリエーションとなる通信システム1201が示されており、図75のBには、第2のバリエーションとなる通信システム1201Aが示されている。
図75のAに示されている通信システム1201は、イメージセンサ1211およびアプリケーションプロセッサ1212が直接的に接続されて構成される。
イメージセンサ1211は、A-PHY層1221の上にALL層1222が配置され、その上に、CSI-2送信部1223およびCSI拡張部1224、並びに、CCIスレーブ1225およびCCI拡張部1226が配置された構成となっている。イメージセンサ1211は、CSI-2送信部1223に対してCSI拡張部1224を設けること、および、CCIスレーブ1225に対してCCI拡張部1226を設けることによって、それぞれ拡張された規格に対応することが可能となる。
アプリケーションプロセッサ1212は、A-PHY層1231の上にALL層1232が配置され、その上に、CSI-2受信部1233およびCSI拡張部1234、並びに、CCIマスタ1235およびCCI拡張部1236が配置された構成となっている。アプリケーションプロセッサ1212は、CSI-2受信部1233に対してCSI拡張部1234を設けること、および、CCIマスタ1235に対してCCI拡張部1236を設けることによって、それぞれ拡張された規格に対応することが可能となる。なお、CSI拡張は、Camera Service Extensions(CSE)と称されてもよい。
図75のBに示されている通信システム1201Aは、ディスプレイ1213およびアプリケーションプロセッサ1212Aが接続されて構成される。なお、アプリケーションプロセッサ1212Aは、図75のAのアプリケーションプロセッサ1212のCSI-2受信部1233およびCSI拡張部1234に替えて、DSI-2送信部1233AおよびDSI拡張部1234Aを備えて構成されており、その他のブロックはアプリケーションプロセッサ1212と共通の構成となっている。
ディスプレイ1213は、A-PHY層1241の上にALL層1242が配置され、その上に、DSI-2受信部1243およびDSI拡張部1244、並びに、CCIスレーブ1245およびCCI拡張部1246が配置された構成となっている。ディスプレイ1213は、DSI-2受信部1243に対してDSI拡張部1244を設けること、および、CCIスレーブ1245に対してCCI拡張部1246を設けることによって、それぞれ拡張された規格に対応することが可能となる。なお、DSI拡張は、Display Service Extensions(DSE)と称されてもよい。
このように構成される通信システム1201および1201Aは、画像データを含むフレームのデータを片方向へ送信する高速データ送信と、高速データ送信に関連するコマンドを逆方向へ送信する低速コマンド送信とを少なくとも行うことができる。例えば、低速コマンド送信では、高速データ送信の開始を要求する高速データ送信開始命令の送信が少なくとも行われる。また、高速データ送信は、低速コマンド送信と比較して高速であり、高速データ送信開始命令の受信に応じて開始される。
ただし、アプリケーションプロセッサ1212の通信相手がイメージセンサ1211である通信システム1201と、アプリケーションプロセッサ1212Aの通信相手がディスプレイ1213である通信システム1201Aとでは、高速データ送信および低速コマンド送信の方向が異なる。つまり、通信システム1201では、イメージセンサ1211からアプリケーションプロセッサ1212へ画像データが送信され、通信システム1201Aでは、アプリケーションプロセッサ1212Aからディスプレイ1213へ画像データが送信される。
物理層規格のA-PHYにおいて、高速データ送信と低速コマンド送信とは、共通の通信経路を一部または全部に介して送信される。また、A-PHYは、アプリケーションプロセッサ1212からイメージセンサ1211に対する電力供給、および、アプリケーションプロセッサ1212Aからディスプレイ1213に対する電力供給の一部または全部が、共通な通信経路を介して伝送することを可能とするオプションをサポートする。
ところで、低速コマンド送信は、例えば、CSI-2の規格のCCIに準拠し、I2CまたはI3Cの規格に基づいて通信が行われる。このとき、低速コマンド送信は、I2CまたはI3Cの独立した物理層だけでなく、D-PHY、C-PHY、およびA-PHYの何れかの物理層の一部または全部を共用してコマンドを伝送することが可能である。一方、高速データ送信は、D-PHY、C-PHY、およびA-PHYの何れかの物理層の一部または全部を介してデータを伝送する。
なお、低速コマンド送信は、例えばCSI-2の規格内のUnified Serial Link(USL)に準拠する場合、D-PHYまたはC-PHYの何れかの物理層の一部または全部に介してコマンドを伝送することが可能である。つまり、高速データ送信と低速コマンド送信とは、D-PHY、C-PHY、A-PHY、I2C、およびI3Cの何れかの物理層を一部または全部に介した伝送が可能である。
なお、図75では、アプリケーションプロセッサ1212および1201Aを備えた構成例について説明したが、通信システム1201および1201Aは、例えば、電子制御ユニット(ECU:Electronic Control Unit)を備えた構成としてもよい。即ち、イメージセンサ1211やディスプレイ1213などと直接接続または間接接続で通信を行うことができるプロセッサであれば、アプリケーションプロセッサ1212に限定されることはない。また、イメージセンサ1211以外の各種のセンサを備える構成としてもよい。
このように構成される通信システム1201および1201Aは、以下で説明するようなナンス値の送信方法またはナンス値を含む初期化ベクトル構成を採用する。
具体的には、特定の共通鍵暗号アルゴリズム(例えば、AES-GCM/GMAC)ではナンス値を含む初期化ベクトルが必要になる。このため、イメージセンサ1211およびアプリケーションプロセッサ1212の間で、または、ディスプレイ1213およびアプリケーションプロセッサ1212Aの間で、初期化ベクトルおよびナンス値の設定ルールが事前に合意されることになる。
しかしながら、イメージセンサ1211、アプリケーションプロセッサ1212および1201A、並びにディスプレイ1213それぞれの内部で、ナンス値の誤認識または改竄が発生すると、それ以降は暗号化された画像データの復号やメッセージの認証などに失敗してしまう。そのため、画像データの送信が正常に行われなくなってしまう不具合を回避するために、ナンス値の誤認識および改竄に関する対策技術が必要であった。
一方、MIPI Camera Serial Interface(CSI)規格またはMIPI Display Serial Interface(DSI)規格へ対する新たなセキュリティ仕様として、CSI規格またはDSI規格に適した初期化ベクトルを定義する必要であった。そこで、本技術は、イメージセンサ1211を含むCSI規格に準拠する撮像装置、または、ディスプレイ1213を含むDSI規格に準拠する表示装置に好適な、ナンス値の送信方法またはナンス値を含む初期化ベクトル構成を開示する。
なお、以下では、イメージセンサ1211およびアプリケーションプロセッサ1212の間で行われる処理について説明するが、ディスプレイ1213およびアプリケーションプロセッサ1212Aの間でも、同様の処理を行うことができる。
図76は、イメージセンサ1211の詳細な構成例を示すブロック図である。
イメージセンサ1211は、画素1301、AD変換器1302、画像処理部1303、拡張モード対応CSI-2送信回路1304、物理層処理部1305、I2C/I3Cスレーブ1306、記憶部1307、メッセージカウンタ1308、ナンス更新部1309、およびセキュリティ部1310を備えて構成される。なお、画素1301、AD変換器1302、画像処理部1303、拡張モード対応CSI-2送信回路1304、物理層処理部1305、I2C/I3Cスレーブ1306、および記憶部1307は、上述した他の実施の形態において対応する各ブロックと同様に構成され、その詳細な説明は省略する。
メッセージカウンタ1308は、所定カウント条件を満たす拡張パケットを送信するたびにイメージセンサ1211内のメッセージカウント値を更新する。
セキュリティ部1310は、イメージセンサ1211内のセッション鍵を導出し、高速データ送信されるデータの第1保護データ(例えば、完全性を保護するために演算された完全性演算値、機密性を保護するために暗号化された暗号データ)を、そのセッション鍵を用いて生成する。
ナンス更新部1309は、セキュリティ部1310が第1保護データを生成するたびに、イメージセンサ1211内のナンス(nonce;number used once)値を更新する。
このように構成されるイメージセンサ1211は、ナンス値の一部または全部、および、メッセージカウント値の一部または全部を、アプリケーションプロセッサ1212へ高速データ送信する。例えば、ナンス値の一部または全部は、カウント値または乱数であってもよい。また、ナンス値の一部または全部は、拡張パケットヘッダ外に格納されて送信され、画像データは、パケットデータ内に格納されて送信される。
イメージセンサ1211では、メッセージカウンタ1308およびナンス更新部1309が、別体で構成されていても、一体で構成されていてもよい。例えば、メッセージカウンタ1308およびナンス更新部1309が別体で構成されている場合、ナンス値およびメッセージカウント値の更新が非同期とすることができる。これにより、ナンス値およびメッセージカウント値の自由度を高めることができる。
一方、メッセージカウンタ1308およびナンス更新部1309が一体で構成されている場合、ナンス値およびメッセージカウント値の更新を同期することができる。その場合、メッセージカウント値は、ナンス値としてカウント値を用いていれば、ナンス値の一部または全部と共有することで、メッセージカウンタ1308のビット幅を節約することができる。つまり、メッセージカウンタ1308は、ナンス更新部1309の一部または全部としてもよく、ナンス更新部1309と一部または全部が共通化することができる。
図77は、アプリケーションプロセッサ1212の詳細な構成例を示すブロック図である。
アプリケーションプロセッサ1212は、物理層処理部1321、拡張モード対応CSI-2受信回路1322、I2C/I3Cマスタ1323、記憶部1324、データ検証部1325、セキュリティ部1326、およびコントローラ1327を備えて構成される。なお、物理層処理部1321、拡張モード対応CSI-2受信回路1322、I2C/I3Cマスタ1323、および記憶部1324は、上述した他の実施の形態において対応する各ブロックと同様に構成され、その詳細な説明は省略する。
データ検証部1325は、イメージセンサ1211からアプリケーションプロセッサ1212へ送信されたナンス値またはメッセージカウント値の妥当性を検証する。
セキュリティ部1326は、イメージセンサ1211内のセッション鍵に対応するアプリケーションプロセッサ1212内のセッション鍵を導出し、アプリケーションプロセッサ1212内のセッション鍵を用いて画像データの第1保護データを検証(完全性の検証)または復号する。
このように構成されるアプリケーションプロセッサ1212は、被検証データがカウント値である場合、データ検証部1325は、その連続性を検証することができる。また、データ検証部1325がカウンタを備えた構成とし、イメージセンサ1211と同様にカウント値を更新することで比較検証を行うようにしてもよい。なお、被検証データが乱数である場合、データ検証部1325は、その乱数性を検証してもよい。なお、データ検証部1325は、ナンス更新部1309(またはメッセージカウンタ)を備え、これを用いて第1保護データを検証または復号してもよく、これを用いて被検証データを検証してもよい。
イメージセンサ1211およびアプリケーションプロセッサ1212は、所望の移動体装置に搭載される構成とすることができる。例えば、移動体装置は、持ち運び可能なモバイル装置であってもよく、例えば、携帯電話、スマートフォン、デジタルカメラ、ゲーム機器などの何れかであってもよい。移動体装置は、推進装置であってもよく、例えば、推進(可動、走行、歩行、飛行などの何れか)することが可能な車両、ロボット、ドローンなどの何れかであってもよい。移動体装置は、AI(Artificial Intelligence)機能を搭載して自律推進できる自律車両、自律ロボット、自律ドローンなどの何れかであってもよい。推進装置の推進は、推進装置の使用者によって制御されてもよく、推進装置は、使用者へ対して必要に応じて指示または警告を通知してもよい。一方、推進装置は、推進装置の推進を推進装置が自動制御するように構成されてもよい。
セキュリティ部1310および1326は、例えば、画像データを保護するための演算を実行するセキュリティ演算部をそれぞれ備えてもよい。従って、セキュリティ部1310および1326は、セキュリティ演算部によって、暗号化演算や、復号演算、ハッシュ値演算、メッセージ認証コード演算、デジタル署名演算、ID(identification)認証、ファームウエア測定、暗号化セッション鍵確立、鍵交換、鍵更新などの何れかを処理することができる。
一方、セキュリティ部1310および1326、ナンス更新部1309、メッセージカウンタ1308、並びにデータ検証部1325の何れかは、メモリと電気的に直接接続された構成とすることができる。このメモリはレジスタと電気的に直接接続されていてもよく、キュリティ部1310および1326、ナンス更新部1309、メッセージカウンタ1308、並びにデータ検証部1325の何れかは、レジスタと電気的に直接接続されていてもよい。メモリは、メモリ内情報の漏洩または改竄の何れかから保護されたメモリであってもよい。このようなメモリおよびレジスタが、それぞれ記憶部1307および1324として用いられる。
記憶部1307および1324には、鍵情報(例えば、事前共有鍵、秘密鍵、公開鍵、またはセッション鍵)や、証明書(例えば、ルート証明書、中間証明書、またはリーフ証明書)、暗号アルゴリズム情報などの何れかが格納されてもよい。記憶部1307および1324には、イメージセンサ1211またはアプリケーションプロセッサ1212の機能情報や、イメージセンサ1211またはアプリケーションプロセッサ1212のID情報(例えば、ソースIDや、目的地ID、最終目的地IDなど)、イメージセンサ1211またはアプリケーションプロセッサ1212のファームウエア情報などの何れかが格納されてもよい。記憶部1307および1324には、後述するセッション情報(例えば、セッションID)や、セキュリティ演算部の演算値(例えば、初期値、中間値、または最終値)、初期化ベクトル、ナンス値、メッセージカウント値、フレーム番号(フレームカウント値)などの何れかが格納されてもよい。
セキュリティ部1310および1326、ナンス更新部1309、メッセージカウンタ1308、並びにデータ検証部1325の何れかは、例えば、イメージセンサ1211またはアプリケーションプロセッサ1212が、複数回のナンス値や、カウント値、完全性演算値、暗号化情報などの何れかを、記憶部1307または1324へ保存すことによって、不具合の有無を判断することが可能になり、それに応じた対処(例えば、不具合個所のデータ再送の要求、異常メッセージの送信)も可能になる。また、ナンス値や、カウント値、完全性演算値、暗号化情報などの何れかが、保護された記憶部1307または1324へ定期的に保存される場合、仮に移動体装置の事故が発生した際に、保護された記憶部1307または1324が解析されることによって、事故発生の原因を特定しやすくなる効果もある。
<セッション>
リクエスタおよびレスポンダは、つまりアプリケーションプロセッサ1212およびイメージセンサ1211は、セッションによって1つ以上の通信チャネルを持つことができる。以下では、アプリケーションプロセッサ1212がリクエスタであって、イメージセンサ1211がレスポンダである構成を例に用いてセッションについて説明を行う。もちろん、アプリケーションプロセッサ1212がレスポンダであって、イメージセンサ1211がリクエスタであってもよい。
また、リクエスタおよびレスポンダは、一時的に固定した暗号化情報を用いて安全な通信チャネルを構築できる。具体的には、セッションは、暗号化またはメッセージ認証のいずれか、または両方を提供する。セッションは、例えば、セッションハンドシェイク段階、アプリケーション段階、およびセッションターミネーション段階の3段階を含む。
セッションハンドシェイク段階は、例えば、リクエスタからの鍵交換要求(PSK_EXCHANGEまたはKEY_EXCHANGEのいずれか)によって始まり、セッション秘密や暗号化鍵などセッション鍵を導出し、セッション鍵を用いて通信を保護する。この段階の目的は、例えば、いずれかの側がアプリケーションデータ(例えば、画像データ)を送信する前に、まずレスポンダとリクエスタとの間で信頼を構築することができる。さらに、ハンドシェイクのある程度の完全性と、導出されたハンドシェイク秘密との同期性とを保証してもよい。
セッションは、この段階でエラーが発生する場合、直ちに終了してセッション終了へ進んでもよい。ハンドシェイクが成功すると、例えば、レスポンダからのフィニッシュ応答(FINISH_RSPまたはPSK_FINISH_RSP)によって終了し、アプリケーション段階が始まる。セッションは、一度ハンドシェイクが完了し、全ての検証に合格すると、レスポンダとリクエスタとのいずれかがアプリケーションデータを送信してもよいアプリケーション段階へ到達する。
アプリケーション段階は、例えば、リクエスタからエンド要求(END_SESSION)が発行される場合に、またはエラーが発生する場合に終了する。次の段階は、セッションターミネーション段階となる。
セッションターミネーション段階は、例えば、単なる内部段階であり、送信または受信される明示的なメッセージはない。リクエスタおよびレスポンダの両方は、セッションが終了するとき、導出した全てのセッション秘密や暗号化鍵などのセッション鍵を破棄またはクリーンアップする。リクエスタおよびレスポンダには、このセッションに関連付けられた他の内部データがあってもよく、それらもクリーンアップを望んでよい。
セッション秘密は、例えば、AEAD(Authenticated Encryption with Additional Data)関数内で用いられる暗号化鍵およびソルトを導出するために用いられる。暗号化鍵の導出は、RFC5869で説明されるRFC2104およびHKDF-Expandで定義されているようにHMACを頻繁に用いてもよい。セッション秘密は、単一の秘密または複数種類の秘密で構成されてもよい。セッション鍵は、単一の鍵または複数種類の鍵で構成されてもよい。
<高速データ送信および低速コマンド送信の処理例>
図78乃至図80を参照して、イメージセンサ1211とアプリケーションプロセッサ1212との間で、高速データ送信および低速コマンド送信が行われる通信処理について説明する。
図78は、通信処理の第1の処理例を説明するフローチャートである。
ここで、アプリケーションプロセッサ1212の拡張モード対応CSI-2受信回路1322は、CCIホスト(リクエスタ)およびCSI-2ホストとしての機能を備えている。イメージセンサ1211の拡張モード対応CSI-2送信回路1304は、CCIデバイス(レスポンダ)およびCSI-2デバイスとしての機能を備えている。CCIホストは、CCIデバイスへ要求メッセージを送信し、その受信に応じてCCIデバイスはCCIホストへ応答メッセージを送信する。
ステップS501において、拡張モード対応CSI-2受信回路1322のCCIホストと拡張モード対応CSI-2送信回路1304のCCIデバイスとの間で、GET_VERSION要求およびVERSION応答が行われる。これにより、拡張モード対応CSI-2受信回路1322は、エンドポイントのSPDM(Security Protocol and Data Model)バージョンを取得する。
ステップS502において、拡張モード対応CSI-2受信回路1322のCCIホストと拡張モード対応CSI-2送信回路1304のCCIデバイスとの間で、GET_CAPABILITIES要求およびCAPABILITIES応答が行われる。これにより、拡張モード対応CSI-2受信回路1322は、エンドポイントのSPDM機能を取得する。
ステップS503において、拡張モード対応CSI-2受信回路1322のCCIホストと拡張モード対応CSI-2送信回路1304のCCIデバイスとの間で、NEGOTIATE_ALGORITHMS要求およびALGORITHMS応答が行われる。これにより、拡張モード対応CSI-2受信回路1322は、拡張モード対応CSI-2送信回路1304と暗号アルゴリズムを交渉する。
ステップS504において、拡張モード対応CSI-2受信回路1322のCCIホストと拡張モード対応CSI-2送信回路1304のCCIデバイスとの間で、PSK_EXCHANGE要求およびPSK_EXCHANGE_RSP応答が行われる。これにより、拡張モード対応CSI-2受信回路1322および拡張モード対応CSI-2送信回路1304は、セッション秘密や暗号化鍵などのCCI向けのセッション鍵を導出する。
ステップS505において、拡張モード対応CSI-2受信回路1322のCCIホストと拡張モード対応CSI-2送信回路1304のCCIデバイスとの間で、PSK_FINISH要求およびPSK_FINISH_RSP応答が行われる。これにより、拡張モード対応CSI-2受信回路1322がPSK(PSK:Pre-shared key)を知っていて、ステップS504で導出されたCCI向けのセッション鍵が正しいことをレスポンダへ証明する。
ステップS506において、拡張モード対応CSI-2受信回路1322のCCIホストと拡張モード対応CSI-2送信回路1304のCCIデバイスとの間で、PSK_EXCHANGE要求およびPSK_EXCHANGE_RSP応答が行われる。これにより、拡張モード対応CSI-2受信回路1322および拡張モード対応CSI-2送信回路1304は、セッション秘密や暗号化鍵などのCSI-2向けのセッション鍵を導出する。
ステップS507において、拡張モード対応CSI-2受信回路1322のCCIホストと拡張モード対応CSI-2送信回路1304のCCIデバイスとの間で、PSK_FINISH要求およびPSK_FINISH_RSP応答が行われる。これにより、拡張モード対応CSI-2受信回路1322がPSK(PSK:Pre-shared key)を知っていて、ステップS506で導出されたCSI-2向けのセッション鍵が正しいことをレスポンダへ証明する。
ここで、ステップS505およびS507におけるセッション鍵の証明は、リクエスタのfinished_keyと、このセッションのメッセージとで計算されたMAC値によって実現される。そして、ステップS504およびS506で導出したセッション鍵を用いて、以降のCCI通信およびCSI-2通信が保護される。
ステップS508において、拡張モード対応CSI-2受信回路1322では、CCIホストからCSI-2ホストに対して、CSI-2向けセッション秘密やセッション鍵、アルゴリズム、その他のパラメータなどが供給される。
ステップS509において、拡張モード対応CSI-2送信回路1304では、CCIデバイスからCSI-2デバイスに対して、CSI-2向けセッション秘密やセッション鍵、アルゴリズム、その他のパラメータなどが供給される。
ステップS510において、拡張モード対応CSI-2送信回路1304のCSI-2デバイスは、拡張モード対応CSI-2受信回路1322のCSI-2ホストへ、高速データ通信による画像データの送信を行う。例えば、高速データ通信は、CSI-2向けセッション鍵を更新するタイミングとなるまで、継続して行われる。
ステップS511において、拡張モード対応CSI-2受信回路1322では、CSI-2ホストからCCIホストに対して、CSI-2向けセッション鍵を更新するトリガが供給される。ただし、CSI-2デバイスまたはCCIデバイスからCCIホストに対してトリガが供給されたり、CCIホストからCCIホストに対して自己トリガが供給されたりしてもよい。
ステップS512において、拡張モード対応CSI-2受信回路1322のCCIホストと拡張モード対応CSI-2送信回路1304のCCIデバイスとの間で、KEY_UPDATE要求およびKEY_UPDATE_ACK応答が行われる。これにより、セッション鍵が更新され、古いセッション鍵の一部が破棄される。なお、セッション鍵が複数種類の鍵(要求方向鍵や応答方向鍵など)で構成される場合、その一部または全部が更新されてもよい。また、KEY_UPDATE要求は、後述のGET_ENCAPSULATED_REQUESTメカニズムを用いてレスポンダから発行されてもよい。
ステップS513において、ステップS512と同様の処理が行われ、KEY_UPDATE要求およびKEY_UPDATE_ACK応答が2回行われる。これにより、ステップS512の処理だけでは破棄されなかった古いセッション鍵の残り(全部)が破棄される。
ステップS514において、拡張モード対応CSI-2受信回路1322では、CCIホストからCSI-2ホストに対して、CSI-2向けセッション秘密やセッション鍵(更新後)、アルゴリズム、その他のパラメータなどが供給される。
ステップS515において、拡張モード対応CSI-2送信回路1304では、CCIデバイスからCSI-2デバイスに対して、CSI-2向けセッション秘密やセッション鍵(更新後)、アルゴリズム、その他のパラメータなどが供給される。
ステップS516において、ステップS510と同様に、高速データ通信による画像データの送信が開始され、以下、ステップS510乃至S515と同様の処理が繰り替えして行われる。
なお、通信処理の第1の処理例では、CCI向けのセッション鍵とCSI-2向けのセッション鍵とが異なるものとなっており、CCI向けとCSI-2向けとでセッションIDが異なり、CCI向けとCSI-2向けとでセッション秘密が異なるものとなっている。これに限られることなく、通信処理の第2の処理例のように、CCI向けのセッション鍵とCSI-2向けのセッション鍵とが同一のものとなっていてもよく、CCI向けとCSI-2向けとでセッションIDを同一とし、CCI向けとCSI-2向けとでセッション秘密が同一としてもよい。
図79は、通信処理の第2の処理例を説明するフローチャートである。
ステップS521乃至S523において、図78のステップS501乃至S503と同様の処理が行われる。
ステップS524において、拡張モード対応CSI-2受信回路1322のCCIホストと拡張モード対応CSI-2送信回路1304のCCIデバイスとの間で、PSK_EXCHANGE要求およびPSK_EXCHANGE_RSP応答が行われる。ここで、通信処理の第2の処理例では、CCI向けのセッション秘密とCSI-2向けのセッション秘密とで同一のものが導出される。
即ち、同一のセッション秘密から、CCI向けセッション鍵とCSI-2向けセッション鍵とを導出することができる。または、同一のセッション秘密から、アップリンク向けセッション鍵とダウンリンク(アップリンクの逆方向)向けセッション鍵とを導出してもよい。または、同一のセッション秘密から、CCI向けおよびCSI-2向けに共通なセッション鍵を導出してもよい。なお、CCI向けとCSI-2向けとでセッションが同一な場合でも、CCI向けとCSI-2向けとでセッション秘密やセッション鍵などが異なってもよい。
その後、ステップS525乃至S534において、図78のステップS507乃至S516と同様の処理が行われる。
ここで、事前共有鍵PSK鍵交換スキームは、リクエスタおよびレスポンダが対称鍵暗号で相互認証およびセッション鍵確立を実行するためのオプションを提供する。このオプションは、非対称鍵暗号または証明書処理をサポートしないエンドポイントで特に役立つ。非対称鍵暗号がサポートされている場合でも、セッション鍵確立を迅速化するのに、このオプションも活用できる。このオプションは、リクエスタおよびレスポンダがハンドシェイクの前に共通のPSKを事前に知っている必要がある。
基本的にPSKは、相互認証の資格情報およびセッション鍵確立のベースとして機能する。そのため、2つのエンドポイントと、2つのエンドポイントにPSKをプロビジョニングする潜在的に信頼されたサードパーティとだけが、PSKの値を知ってもよい。リクエスタは、複数のレスポンダとペアになってもよい。同様にレスポンダは、複数のリクエスタとペアになってもよい。リクエスタおよびレスポンダのペアは、1つ以上のPSKがプロビジョニングされてもよい。
エンドポイントは、1つのデバイスへ対するリクエスタとして動作し、同時に別のデバイスへ対するレスポンダとして動作してもよい。トランスポート層は、PSKベースのセッション鍵交換が開始する前に、ピア(Peer)を識別し、2つのエンドポイント間の通信を確立する必要がある。
PSKは、例えば安全な製造プロセス中など、信頼できる環境内でプロビジョニングされてもよい。PSKは、信頼できない環境では、安全なプロトコルを用いて2つのエンドポイント間で合意されてもよい。プロビジョニングされたPSKのサイズは、アプリケーションのセキュリティ強度の要件によって決まるが、128ビット以上にすべきで、256ビット以上が望ましい。PSKプロビジョニング中は、エンドポイント機能とサポートされているアルゴリズムとをピアへ通信してもよい。従って、PSKオプションを用いるセッション鍵確立中は、SPDMコマンドのGET_CAPABILITIESおよびNEGOTIATE_ALGORITHMSは必要ない。
このオプションは、PSK_EXCHANGE/PSK_EXCHANGE_RSPおよびPSK_FINISH/PSK_FINISH_RSPの2つのメッセージペアが定義されている。PSK_EXCHANGEメッセージには、レスポンダへ特定のPSKを取得するように促す役割、リクエスタとレスポンダとの間でコンテキストを交換する役割、レスポンダが正しいPSKを知っており、正しいセッション鍵を導出したことをリクエスタへ証明する役割、の3つの役割がある。
図80は、通信処理の第3の処理例を説明するフローチャートである。
ステップS541乃至S543において、図78のステップS501乃至S503と同様の処理が行われる。
ステップS544において、拡張モード対応CSI-2受信回路1322のCCIホストと拡張モード対応CSI-2送信回路1304のCCIデバイスとの間で、GET_DIGESTS要求およびDIGESTS応答が行われる。これにより、拡張モード対応CSI-2受信回路1322は、拡張モード対応CSI-2送信回路1304から証明書チェインダイジェストを取得する。
ステップS545おいて、拡張モード対応CSI-2受信回路1322のCCIホストと拡張モード対応CSI-2送信回路1304のCCIデバイスとの間で、GET_CERTIFICATE要求およびCERTIFICATE応答が行われる。これにより、拡張モード対応CSI-2受信回路1322は、拡張モード対応CSI-2送信回路1304から証明書チェインを取得する。なお、証明書チェインの取得が複数回実行されてもよい。
ステップS546おいて、拡張モード対応CSI-2受信回路1322のCCIホストと拡張モード対応CSI-2送信回路1304のCCIデバイスとの間で、CHALLENGE要求およびCHALLENGE_AUTH応答が行われる。これにより、拡張モード対応CSI-2受信回路1322は、チャレンジ-レスポンス プロトコルを通じて拡張モード対応CSI-2送信回路1304を認証することができる。
ステップS547において、拡張モード対応CSI-2受信回路1322のCCIホストと拡張モード対応CSI-2送信回路1304のCCIデバイスとの間で、KEY_EXCHANGE要求(channel=CCI, sessionID=D)およびKEY_EXCHANGE_RSP応答が行われる。これにより、レスポンダ(または任意で両方のパーティ)の認証を目的としたリクエスタとレスポンダとの間のハンドシェイクが開始される。そして、最後のNEGOTIATE_ALGORITHMS / ALGORITHMS交換で交渉された内容に加えて暗号化パラメータが交渉され、共有鍵情報が確立される。
ステップS548において、拡張モード対応CSI-2受信回路1322のCCIホストは、GET_ENCAPSULATED_REQUESTを拡張モード対応CSI-2送信回路1304のCCIデバイスに送信する。
ステップS549において、拡張モード対応CSI-2送信回路1304のCCIデバイスは、ENCAPSULATED_REQUEST(GET_DIGESTS要求)を拡張モード対応CSI-2受信回路1322のCCIホストに送信する。
ステップS550において、拡張モード対応CSI-2受信回路1322のCCIホストは、DELIVER_ENCAPSULATED_RESPONSE(DIGESTS応答)を拡張モード対応CSI-2送信回路1304のCCIデバイスに送信する。これにより、拡張モード対応CSI-2送信回路1304のCCIデバイスは、拡張モード対応CSI-2受信回路1322のCCIホストから証明書チェインダイジェストを取得する。
ステップS551において、拡張モード対応CSI-2送信回路1304のCCIデバイスは、ENCAPSULATED_RESPONSE_ACK(GET_CERTIFICATE要求)を拡張モード対応CSI-2受信回路1322のCCIホストに送信する。
ステップS552において、拡張モード対応CSI-2受信回路1322のCCIホストは、DELIVER_ENCAPSULATED_RESPONSE(CERTIFICATE応答)を拡張モード対応CSI-2送信回路1304のCCIデバイスに送信する。これにより、CCIデバイス(レスポンダ)は、CCIホスト(リクエスタ)から証明書チェインを取得してもよい。なお、この処理は、複数回実行されてもよい。
ステップS553において、拡張モード対応CSI-2送信回路1304のCCIデバイスは、ENCAPSULATED_RESPONSE_ACKを拡張モード対応CSI-2受信回路1322のCCIホストに送信する。
ステップS554において、拡張モード対応CSI-2受信回路1322のCCIホストと拡張モード対応CSI-2送信回路1304のCCIデバイスとの間で、FINISH要求およびFINISH_RSP応答が行われる。これにより、ステップS547のKEY_EXCHANGE要求によって開始された、拡張モード対応CSI-2受信回路1322のCCIホストと拡張モード対応CSI-2送信回路1304のCCIデバイスとの間のハンドシェイクが完了される。
ステップS555において、拡張モード対応CSI-2受信回路1322のCCIホストと拡張モード対応CSI-2送信回路1304のCCIデバイスとの間で、GET_MEASUREMENTS要求およびMEASUREMENTS応答が行われる。これにより、拡張モード対応CSI-2受信回路1322のCCIホストは、拡張モード対応CSI-2送信回路1304のCCIデバイスから測定データを取得する。なお、GET_MEASUREMENTS要求は、上述したGET_ENCAPSULATED_REQUESTメカニズムを用いてレスポンダから発行されてもよい。同様に、他の要求も上述したGET_ENCAPSULATED_REQUESTメカニズムを用いてレスポンダから発行されてもよい。
その後、ステップS556では、ステップS547と同様にKEY_EXCHANGE要求(channel=CSI-2, sessionID=E)およびKEY_EXCHANGE_RSP応答が行われ、ステップS557では、ステップS554と同様にFINISH要求およびFINISH_RSP応答が行われる。そして、ステップS558乃至S566において、図78のステップS508乃至S516と同様の処理が行われる。
<データ検証処理>
図81乃至図83を参照して、検証用パケットおよび被検証パケットを使用したデータ検証処理について説明する。
図81および図82に示すように、拡張パケットは、パケットヘッダPH、拡張パケットヘッダePH、パケットデータ、拡張パケットフッタePF、およびパケットフッタPFで構成される。このような構成の拡張パケットにより、フレームスタート、埋込データ、画像データ、ユーザ定義データ、フレームエンド、書き込み命令(CCI Write)、読み出し命令(CCI Read)、および読み出し応答(CCI Read戻り値)を構成することができる。なお、パケットヘッダPH、拡張パケットヘッダePH、パケットデータ、拡張パケットフッタePF、およびパケットフッタPFは、その一部または全部を省略してもよい。即ち、拡張パケットヘッダePHおよびパケットデータを少なくとも含むパケット構成を拡張パケットと定義する。
ところで、拡張パケットヘッダePH、パケットデータ、拡張パケットフッタePFの何れかは、ノイズや干渉や攻撃によって正常に受信されない(メッセージが消失する)可能性がある。そこで、拡張パケットフッタ末尾ePF0内は、拡張パケットヘッダePH、パケットデータ、および拡張パケットフッタ残りePF1の完全性を検証するための検証用パケットが格納されることが望ましい。完全性の検証は、例えば、誤り検出符号の一種である巡回冗長検査のCRC32が用いられる。また、CRC32の生成多項式は、例えばX32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X5+X4+X2+X+1が用いられる。
被検証パケットには、パケットデータを用いることができる。または、被検証パケットには、拡張パケットヘッダおよびパケットデータを用いることができる。または、被検証パケットには、パケットデータおよび拡張パケットフッタ残り(ePF1)を用いることができる。または、被検証パケットには、拡張パケットヘッダ、パケットデータおよび拡張パケットフッタ残り(ePF1)を用いることができる。このような被検証パケットにより、少なくともパケットデータが保護される。
つまり、イメージセンサ1211は、パケットデータの第2保護データ(例えば、CRC演算値)を、セッション鍵を用いずに生成する第2保護部(例えば、CRC演算部)を備える。第2保護データは、例えば、高速データ送信の拡張パケットフッタePF内に格納される。つまり、フレームスタート内、埋込データ内、画像データ内、ユーザ定義データ内、フレームエンド内、書き込み命令(CCI Write)内、読み出し命令(CCI Read)内、読み出し応答(CCI Read戻り値)内などの何れかに格納される。
拡張パケットフッタePF1やePF0は、セキュリティ機能(security feature)が定義されてもよい。つまり、イメージセンサ1211内にセキュリティ演算部(例えば、暗号演算部、復号演算部、ハッシュ値演算部、メッセージ認証コード演算部、デジタル署名演算部)を備えてもよい。そして、セキュリティ演算の結果(例えば、ハッシュ値、メッセージ認証コード、デジタル署名)が拡張パケットフッタePF内に格納されてもよい。
セキュリティ演算の結果が格納されるのは、拡張パケットフッタePF0内ではなく拡張パケットフッタePF1内だけであってもよく、拡張パケットフッタ内ではなく拡張パケットフッタ外であってもよい(例えば、埋込データ内または読み出し応答内)。イメージセンサ1211が備えるセキュリティ演算部は、セキュリティ部1310に含まれる。
メッセージ認証コード(MAC: Message Authentication Code)としては、GMAC(Galois MAC)、CMAC(Cipher-based MAC)、HMAC(Hash-based MAC)などの何れかが用いられてもよい。例えば、AES(Advanced Encryption Standard)またはSHA(Secure Hash Algorithm)が適用された、AES-GMAC、AES-CMAC、SHA2-HMAC、SHA3-HMACなどの何れかが用いられてもよい。なお、AESのブロック長は128ビットであり、AESの鍵長は128ビット、192ビット、256ビットの何れかが選択される。
拡張パケットフッタ内は、例えば、パケットデータを被検証パケットとして、または、拡張パケットヘッダおよびパケットデータを被検証パケットとして、ハッシュ(特に暗号学的ハッシュ)値、メッセージ認証コード、デジタル署名などの何れかのセキュリティ情報が格納されてもよい。その場合、攻撃者からの悪意ある改竄へ対して、さらなる耐性を持たせることができる。なお、拡張パケットフッタ「ePF1」内または「ePF1およびePF0」内は、誤り検出符号の一種である巡回冗長検査のCRCが格納されてもよい。
つまり、イメージセンサ1211が完全性演算部(例えば、第1保護部=セキュリティ演算部、第2保護部=CRC演算部)を備え、完全性を演算した結果である完全性演算値(例えば、第1保護データ、第2保護データ)が拡張パケットフッタ内に格納されてもよい。なお、CRCは、機能安全のために用いられることが可能で、その完全性はハードウェア障害が検出されないことを防ぐために用いられることが可能である。一方、セキュリティ機能の完全性は、意図的な干渉または攻撃を検出するために用いられることが可能である。つまり、セキュリティ演算部は、暗号に基づく完全性演算値を演算し、CRC演算部は、暗号に基づかない完全性演算値を演算する。
アプリケーションプロセッサ1212は、例えば、検証用パケットを用いることで、被検証パケットの完全性を検証できる。異常と判断される場合、例えば、被検証パケットおよび検証用パケットを含むパケットの再送を要求する要求メッセージの送信、イメージセンサ1211に異常があるかをイメージセンサ1211へ問い合わせる要求メッセージの送信、イメージセンサ1211の一部または全部の機能の停止をイメージセンサ1211へ要求する要求メッセージの送信、推進装置の推進停止、推進装置の推進制御の変更、推進制御に用いる優先データの変更などの何れかの処理が実行されてもよい。
なお、完全性演算値は、例えば、埋込データ内や、画像データ(パケットデータ)内、ユーザ定義データ内、書き込み命令内、読み出し命令内、読み出し応答などの内の何れかに格納されるようにしてもよい。その場合、完全性演算値は、拡張パケットフッタ内に格納されないようにしてもよい。例えば、完全性演算値は、画像のライン単位ではなく画像のフレーム単位で格納されるようにしてもよく、その場合は効率的に完全性が演算される。その場合、完全性演算値は、例えば、画像データが送信された後の埋込データ内または読み出し応答内に格納される。
図81のAに示す拡張パケットは、拡張パケットヘッダePH、パケットデータ、および拡張パケットフッタ残りePF1を被検証パケットとして、その被検証パケットを用いたセキュリティ演算により求められる計算値が格納された拡張パケットフッタ末尾ePF0を検証用パケットとした構成例となっている。
図81のBに示す拡張パケットは、パケットデータおよび拡張パケットフッタ残りePF1を被検証パケットとして、その被検証パケットを用いたセキュリティ演算により求められる計算値が格納された拡張パケットフッタ末尾ePF0を検証用パケットとした構成例となっている。
図81のCに示す拡張パケットは、拡張パケットヘッダePHおよびパケットデータを被検証パケットとして、その被検証パケットを用いたセキュリティ演算により求められる計算値が格納された拡張パケットフッタ末尾ePF0を検証用パケットとした構成例となっている。
図81のDに示す拡張パケットは、パケットデータを被検証パケットとして、その被検証パケットを用いたセキュリティ演算により求められる計算値が格納された拡張パケットフッタ末尾ePF0を検証用パケットとした構成例となっている。
図82のAに示す拡張パケットは、拡張パケットヘッダePHおよびパケットデータを被検証パケットとして、その被検証パケットを用いたセキュリティ演算により求められる計算値が格納された拡張パケットフッタ残りePF1を検証用パケットとした構成例となっている。
図82のBに示す拡張パケットは、拡張パケットヘッダePHおよびパケットデータを被検証パケットとして、その被検証パケットを用いたセキュリティ演算により求められる計算値が格納された拡張パケットフッタ残りePF1および拡張パケットフッタ末尾ePF0を検証用パケットとした構成例となっている。
図82のCに示す拡張パケットは、パケットデータを被検証パケットとして、その被検証パケットを用いたセキュリティ演算により求められる計算値が格納された拡張パケットフッタ残りePF1を検証用パケットとした構成例となっている。
図82のDに示す拡張パケットは、パケットデータを被検証パケットとして、その被検証パケットを用いたセキュリティ演算により求められる計算値が格納された拡張パケットフッタ残りePF1および拡張パケットフッタ末尾ePF0を検証用パケットとした構成例となっている。
図83は、アプリケーションプロセッサ1212において行われるデータ検証処理を説明するフローチャートである。
ステップS601において、イメージセンサ1211から送信されてきた拡張パケットが拡張モード対応CSI-2受信回路1322により受信されると、セキュリティ部1326は、その拡張パケットの被検証パケットを受信する。そして、セキュリティ部1326が、被検証パケットの受信を完了すると、処理はステップS602に進む。なお、被検証パケットの全部の受信が完了していなくても、セキュリティ演算の計算を開始可能な少なくとも一部(例えば、128ビット)の受信が完了していれば処理はステップS602に進んでもよい。その場合、被検証パケットの全部の受信が完了するまで、被検証パケットの残りが引き続き受信される。
ステップS602において、セキュリティ部1326は、ステップS601で受信した被検証パケットの少なくとも一部を用いたセキュリティ演算により求められる計算値の計算を開始する。
ステップS603において、セキュリティ部1326は、拡張モード対応CSI-2受信回路1322を介して、イメージセンサ1211から送信されてくる検証用パケットを受信する。そして、セキュリティ部1326は、検証用パケットの受信を完了して、その検証用パケットに格納されている受信値(イメージセンサ1211で計算された計算値)を取得すると処理はステップS604に進む。
ステップS604において、セキュリティ部1326は、ステップS602で開始した被検証パケットを用いたセキュリティ演算により求められる計算値の計算が完了(即ち、被検証パケットの全部を受信して、その全部を用いた計算が完了)すると、処理はステップS605に進む。
ステップS605において、セキュリティ部1326は、ステップS603で受信した受信値と、ステップS604で求めた計算値とが一致したか否かを判定する。
ステップS605において、セキュリティ部1326が、受信値と計算値とが一致したと判定した場合、処理はステップS606に進む。この場合、ステップS606において、セキュリティ部1326は、拡張モード対応CSI-2受信回路1322が受信した拡張パケットは正常であると判断し、処理は終了される。
一方、ステップS605において、セキュリティ部1326が、受信値と計算値とが一致しないと判定した場合、処理はステップS607に進む。この場合、ステップS607において、セキュリティ部1326は、拡張モード対応CSI-2受信回路1322が受信した拡張パケットに異常が発生したと判断し、処理は終了される。
<メッセージカウント値を利用した機能安全の確保>
イメージセンサ1211は、機能安全(例えば、メッセージ欠落を検出して適切に処置すること)を確保するために、メッセージカウンタ1308がカウントするメッセージカウント値を、拡張パケットヘッダ内または拡張パケットフッタ内に格納することができる。例えば、イメージセンサ1211が備えるメッセージカウンタ1308は、イメージセンサ1211からメッセージが送信されるたびにインクリメントまたはデクリメントされたメッセージカウント値を格納することができる。なお、イメージセンサ1211は、仮想チャネル(バーチャルチャネル)ごとに独立したメッセージカウンタ1308を設ける構成や、仮想チャネルで共通なメッセージカウンタ1308を設ける構成としてもよい。
メッセージカウンタ1308は、ある仮想チャネルの拡張パケットヘッダを含む最初のパケットにおいてメッセージカウント値を初期値(例えば、0または最大値)に設定し、ある仮想チャネルの拡張パケットヘッダを含むデータを送信するたびにメッセージカウント値をインクリメントまたはデクリメントする。また、メッセージカウンタ1308は、例えば、拡張パケットヘッダを含まないデータが送信される場合、メッセージカウント値をインクリメントまたはデクリメントせずに、次に拡張パケットヘッダを含むデータが送信されたときに、カウントを再開する。
メッセージカウンタ1308は、フレームスタートまたはフレームエンドに関わらずカウントを継続してもよい。そして、メッセージカウンタ1308は、メッセージカウント値が規定値(例えば、最大値または0)までカントされた場合、次のメッセージカウント値を初期値(例えば、0または最大値)に戻して、カウントを行う。なお、拡張パケットヘッダの一部は、ナンス値の一部が格納されてもよい。
なお、メッセージカウント値を受信する受信側(イメージセンサ1211またはアプリケーションプロセッサ1212)は、メッセージが欠落した場合には、その欠落を即座に検知することができる。例えば、膨大な量のメッセージを意図的に混入させることでイメージセンサ1211またはアプリケーションプロセッサ1212の可用性を侵害するDoS(Denial-of-service)攻撃なども、受信側において即座に検知される。このため、メッセージカウント値は、拡張パケットヘッダ内に格納されることが望ましい。このような欠落や攻撃などを、より短時間で検出することができるようにすることで、受信側は、それらに対する対応を短い時間で開始することができ、例えば、高速移動または高速可動が可能な推進装置にとっては特に好適である。
なお、書き込み命令(CCI Write)、読み出し命令(CCI Read)、または読み出し応答(CCI Read戻り値)についても、メッセージカウント値または完全性演算値が格納されるように構成されてもよく、拡張パケットに関連する要素が適用されてもよい。その場合、書き込み命令、読み出し命令、または読み出し応答についても、機能安全に対応することや完全性を保護することなどが可能になる。
図84は、イメージセンサ1211がメッセージカウント値を送信するメッセージカウント値送信処理を説明するフローチャートである。
ステップS611において、メッセージカウンタ1308は、メッセージカウント値を初期化して0に設定する。
ステップS612において、拡張モード対応CSI-2送信回路1304は、拡張パケットヘッダを送信するか否かを判定し、拡張パケットヘッダを送信すると判定されるまで処理は待機される。そして、ステップS612において、拡張モード対応CSI-2送信回路1304が、拡張パケットヘッダを送信すると判定した場合、処理はステップS613に進む。
ステップS613において、拡張モード対応CSI-2送信回路1304は、メッセージカウンタ1308からメッセージカウント値を取得し、拡張パケットヘッダに格納する。
ステップS614において、拡張モード対応CSI-2送信回路1304は、ステップS613でメッセージカウント値を格納した拡張パケットヘッダを送信する。
ステップS615において、メッセージカウンタ1308は、メッセージカウント値が最大値までカウントされたか否かを判定する。ステップS615において、メッセージカウンタ1308が、メッセージカウント値が最大値までカウントされていないと判定した場合、処理はステップS616に進む。
ステップS616において、メッセージカウンタ1308は、メッセージカウント値をインクリメントする。その後、処理はステップS612に戻り、以下、同様の処理が繰り返して行われる。
一方、ステップS615において、メッセージカウンタ1308が、メッセージカウント値が最大値までカウントされたと判定した場合、処理はステップS611に戻ってメッセージカウント値が初期化された後、以下、同様の処理が繰り返して行われる。
なお、このようにメッセージカウント値をインクリメントする他、例えば、メッセージカウント値を初期化して最大値に設定して、デクリメントを行ってもよい。
<埋め込みデータについて>
図85乃至図88を参照して、埋め込みデータについて説明する。
イメージセンサ1211は、埋込データを用いることで、データストリーム内にデバイス設定情報などの追加情報を含めることができる。埋込データは、1つ以上のライン(行)で構成され、イメージセンサ1211の構成データや、規格に従うレジスタ値、ベンダ固有のレジスタ値、フレーム形式の説明、統計値などの何れかを含むことが可能である。
図85のAには、1つのラインの埋込データが示されており、埋め込みデータフォーマットコードに続いて、所望のデータ量の埋め込みデータが連続して配置され、その残りにパディングキャラクタが配置された構成となっている。
埋込データには、画像データまたはユーザ定義データに関連する情報が含まれる。このため、画像データまたはユーザ定義データは圧縮されたデータであってもよいが、埋込データは、圧縮されてないデータ(非圧縮データ)であることが望ましい。従って、データの圧縮が用いられる場合、高速データ送信のフレーム内には、圧縮データ(画像データまたはユーザ定義データ)と非圧縮データ(埋込データ)とが混在することになる。
埋込データは、埋込データへ追加されるレジスタ値の数に応じて、埋込データのライン(行)を複数設けることが可能である。また、埋込データの行数は、フレーム内で最初の埋込データ行におけるフレーム形式内の説明の一部によって指定されることが可能である。埋込データのライン長は、画像データまたはユーザ定義データのライン長より短くてもよいが、画像データまたはユーザ定義データのライン長を超えることは好ましくなく、画像データまたはユーザ定義データのライン長と同一であることが望ましい。埋込データの最初のピクセル値は、埋込データに用いられる形式を示してもよい。
ナンス値の一部または全部は、図85のBに示すようなベンダ固有コード(Vendor specific)またはリザーブドコード(Reserved for future use)を示す埋込データの少なくとも一部内へ格納されて送信されてもよい。フレーム内において埋込データは、フレームスタートと最初の画像データまたはユーザ定義データとの間、および、最後の画像データまたはユーザ定義データとフレームエンドとの間の何れかに格納される。ただし、最後の画像データまたはユーザ定義データとフレームエンドとの間の埋込データは省略してもよい。
図86には、イメージセンサ1211から送信される2フレーム分の画像データのデータ構造の一例が示されている。
図86に示すように、第1のバーチャルチャネルのフレームスタート(VC1 FS)が送信された後、読み出し命令および読み出し応答に続いて、第2のバーチャルチャネルのフレームスタート(VC2 FS)が送信される。次に、第1のバーチャルチャネルの第1の埋め込みデータ(VC1 Emb Data)および第2のバーチャルチャネルの第1の埋め込みデータ(VC2 Emb Data)が送信される。そして、1フレーム分の第1のバーチャルチャネルの画像データ(VC1 Img Data)および第2のバーチャルチャネルのユーザ定義データ(VC2 UD Data)が送信される。1フレーム分の送信が完了すると、第1のバーチャルチャネルの第2の埋め込みデータ(VC1 Emb Data)および第2のバーチャルチャネルの第2の埋め込みデータ(VC2 Emb Data)が送信される。その後、第1のバーチャルチャネルのフレームエンド(VC1 FE)が送信された後、読み出し命令および読み出し応答に続いて、第2のバーチャルチャネルのフレームエンド(VC2 FE)が送信される。
図86では、第1のバーチャルチャネルと第2のバーチャルチャネルとでメッセージカウント値が共通化される例が示されている。このとき第1のバーチャルチャネルと第2のバーチャルチャネルとで独立したセージカウンタが設けられる構成としてもよい。また、ユーザ定義データは、画像データなどであってもよい。
ここで、ナンス値の一部または全部は、例えば、フレームスタートからフレームエンドまでの期間内、またはフレームエンドからフレームスタートまでの期間内(フレームブランキング期間)に格納される。また、フレームスタートからフレームエンドまでの期間内でナンス値を格納できるのは、例えば、埋込データ内、画像データ内、非画像データ内、およびラインブランキング期間内の何れかである。また、第2のバーチャルチャネルに格納されてもよい。
フレームスタートおよびフレームエンドを定義することによって、例えば、高速データ送信の開始および終了をイメージセンサからプロセッサへ通知することが可能となる。また、イメージセンサは、フレーム送信周期を一定に保つことが可能となる。なお、埋込データは、画像データを表す属性や画像データに関連する情報(メタデータ)などが格納されるデータである。
本実施の形態では、画像データの高速データ送信を阻害せずに、ナンス値の高速データ送信が実行される例を説明する。つまり、画像データの高速データ送信とナンス値の高速データ送信とが、並列実行ではなく直列実行される例を説明する。ただし、画像データの高速データ送信とナンス値の送信(高速データ送信または低速コマンド送信)とで通信経路が異なる場合、並列実行されてもよい。
なお、高速データ送信と低速コマンド送信とは、フィルタによる周波数分離が可能なので、消費電力に問題なければ、送信の一部または全部が重複(並列実行)されていても構わない。ナンス値の一部または全部は、複数フレームごとに送信されてもよいが、例えばフレーム欠落などの理由によって、1フレームごとに送信される方が望ましい。例えば、フレームスタート(Frame Start;FS)パケットはFrame Start Code(Data Type = 0x00)を含み、フレームエンド(Frame End;FE)パケットはFrame End Code(Data Type = 0x01)を含む。
図87は、イメージセンサ1211が画像データを送信する画像データ送信処理を説明するフローチャートである。
ステップS621において、拡張モード対応CSI-2送信回路1304は、高速データ送信の開始命令を受信したか否かを判定し、高速データ送信の開始命令を受信したと判定されるまで、処理が待機される。そして、ステップS621において、拡張モード対応CSI-2送信回路1304が、高速データ送信の開始命令を受信したと判定した場合、処理はステップS622に進む。
ステップS622おいて、画素1301が撮像を開始し、画素1301から出力される画像データが、AD変換器1302および画像処理部1303を介して拡張モード対応CSI-2送信回路1304に供給される。
ステップS623において、拡張モード対応CSI-2送信回路1304は、第1のバーチャルチャネルのフレームスタートを送信する。
ステップS624において、拡張モード対応CSI-2送信回路1304は、第2のバーチャルチャネルのフレームスタートを送信する。
ステップS625において、拡張モード対応CSI-2送信回路1304は、第1のバーチャルチャネルの第1の埋め込みデータを送信する。
ステップS626において、拡張モード対応CSI-2送信回路1304は、第2のバーチャルチャネルの第1の埋め込みデータを送信する。
ステップS627おいて、拡張モード対応CSI-2送信回路1304は、第1のバーチャルチャネルの画像データを送信する。
ステップS628において、拡張モード対応CSI-2送信回路1304は、第2のバーチャルチャネルのユーザ定義データを送信する。
ステップS629において、拡張モード対応CSI-2送信回路1304は、1フレーム分の画像データの送信が完了したか否かを判定する。
ステップS629において、拡張モード対応CSI-2送信回路1304が、1フレーム分の画像データの送信が完了していないと判定した場合、処理はステップS627に戻り、以下、同様の処理が繰り返して行われる。一方、ステップS629において、拡張モード対応CSI-2送信回路1304が、1フレーム分の画像データの送信が完了したと判定した場合、処理はステップS630に進む。
ステップS630において、拡張モード対応CSI-2送信回路1304は、第1のバーチャルチャネルの第2の埋め込みデータを送信する。
ステップS631において、拡張モード対応CSI-2送信回路1304は、第2のバーチャルチャネルの第2の埋め込みデータを送信する。
ステップS632において、拡張モード対応CSI-2送信回路1304は、第1のバーチャルチャネルのフレームエンドを送信する。
ステップS633において、拡張モード対応CSI-2送信回路1304は、第2のバーチャルチャネルのフレームエンドを送信する。
ステップS634において、拡張モード対応CSI-2送信回路1304は、高速データ送信の終了命令を受信したか否かを判定する。
ステップS634において、拡張モード対応CSI-2送信回路1304が、高速データ送信の終了命令を受信していないと判定した場合、処理はステップS622に戻り、以下、同様の処理が繰り返して行われる。一方、ステップS634において、拡張モード対応CSI-2送信回路1304が、高速データ送信の終了命令を受信したと判定した場合、処理は終了される。
撮像開始は、高速データ送信の終了命令を受信するまで継続実行されてもよく、高速データ送信の開始命令を受信するたびに実行されてもよい。
図88は、イメージセンサ1211が完全性演算値を送信する完全性演算値送信処理を説明するフローチャートである。
ステップS641において、セキュリティ部1310は、第1のバーチャルチャネルのセッション鍵を導出する。
ステップS642において、セキュリティ部1310は、第2のバーチャルチャネルのセッション鍵を導出する。
ステップS643において、メッセージカウンタ1308は、メッセージカウント値の上位カウント値を初期化して0に設定する。
ステップS644において、メッセージカウンタ1308は、メッセージカウント値の下位カウント値を初期化して0に設定する。
ステップS645において、拡張モード対応CSI-2送信回路1304は、セッションを終了するか否かを判定し、セッションを終了しないと判定された場合、処理はステップS646に進む。
ステップS646において、拡張モード対応CSI-2送信回路1304は、第1のバーチャルチャネルの拡張パケットを送信するか否かを判定する。
ステップS646において、拡張モード対応CSI-2送信回路1304が、第1のバーチャルチャネルの拡張パケットを送信しないと判定した場合、処理はステップS645に戻り、以下、同様の処理が繰り返して行われる。一方、ステップS646において、拡張モード対応CSI-2送信回路1304が、第1のバーチャルチャネルの拡張パケットを送信すると判定した場合、処理はステップS647に進む。
ステップS647において、セキュリティ部1310は、ステップS641で導出した第1のバーチャルチャネルのセッション鍵を用いて、第1のバーチャルチャネルの完全性演算値を演算する。
ステップS648において、拡張モード対応CSI-2送信回路1304は、ステップS647で算出された完全性演算値を第1のバーチャルチャネルの拡張パケットに配置し、その第1のバーチャルチャネルの拡張パケットを送信する。
ステップS649において、拡張モード対応CSI-2送信回路1304は、第2のバーチャルチャネルの拡張パケットを送信するか否かを判定し、第2のバーチャルチャネルの拡張パケットを送信と判定されるまで処理を待機する。そして、ステップS649において、拡張モード対応CSI-2送信回路1304が、第2のバーチャルチャネルの拡張パケットを送信すると判定した場合、処理はステップS650に進む。
ステップS650において、セキュリティ部1310は、ステップS642で導出した第2のバーチャルチャネルのセッション鍵を用いて、第2のバーチャルチャネルの完全性演算値を演算する。
ステップS651において、拡張モード対応CSI-2送信回路1304は、ステップS650で算出された完全性演算値を第2のバーチャルチャネルの拡張パケットに配置し、その第2のバーチャルチャネルの拡張パケットを送信する。
ステップS652において、メッセージカウンタ1308は、メッセージカウント値の下位カウント値が最大値までカウントされたか否かを判定する。
ステップS652において、メッセージカウンタ1308が、メッセージカウント値の下位カウント値が最大値までカウントされていないと判定した場合、処理はステップS653に進む。ステップS653において、メッセージカウンタ1308は、メッセージカウント値の下位カウント値をインクリメントした後、処理はステップS645に戻り、以下、同様の処理が繰り返して行われる。
一方、ステップS652において、メッセージカウンタ1308が、メッセージカウント値の下位カウント値が最大値までカウントされたと判定した場合、処理はステップS654に進む。ステップS654において、メッセージカウンタ1308は、メッセージカウント値の上位カウント値をインクリメントした後、処理はステップS644に戻り、以下、同様の処理が繰り返して行われる。
そして、ステップS645において、拡張モード対応CSI-2送信回路1304が、セッションを終了すると判定した場合、処理はステップS655に進む。
ステップS655において、セキュリティ部1310は、第1のバーチャルチャネルのセッション鍵と第2のバーチャルチャネルのセッション鍵とを破棄またはクリーンアップし、その後、処理は終了される。
<画像データのデータ構造の変形例>
図89乃至図91を参照して、画像データのデータ構造について説明する。
図89には、画像データのデータ構造の第1の変形例が示されている。
図89に示す画像データのデータ構造では、第1のバーチャルチャネルおよび第2のバーチャルチャネルで共通化されたメッセージカウント値が用いられている。
ただし、セッション鍵またはメッセージカウンタは、第1のバーチャルチャネルおよび第2のバーチャルチャネルで共通化されてもよい。また、画像データまたは埋込データは、他データへ置き換えられてもよい。例えば、埋込データは、画像データへ置き換えられてもよい。一方、メッセージカウンタは、仮想チャネル(VC)を跨いでカウントすることによって、共通化されてもよい。
図90には、画像データのデータ構造の第2の変形例が示されている。
図90に示す画像データのデータ構造では、Write(CCI書き込み命令)、Read1(CCI読み出し命令)、およびRead2(CCI読み出し応答)で、それぞれ独立したメッセージカウント値が用いられている。
図91には、画像データのデータ構造の第3の変形例が示されている。
図91に示す画像データのデータ構造では、CCIアップリンク(WriteおよびRead1)およびCCIダウンリンク(Read2)で、それぞれ独立したメッセージカウント値が設けられている。つまり、メッセージカウント値は、Write(CCI書き込み命令)とRead1(CCI読み出し命令)とで共通化されてもよい。
<ナンス値について>
ナンス値は、例えば、同じセッション鍵へ対してnumber used onceであるため、セッション鍵を用いる暗号化演算または復号演算の初期化ベクトル(initialization vector)の一部または全部として用いられる。そのため、イメージセンサ1211が暗号化演算に用いたナンスが、イメージセンサ1211から送信されてアプリケーションプロセッサ1212で受信されることによって、アプリケーションプロセッサ1212は復号演算に必要なナンス値を入手できる。
つまり、イメージセンサ1211は、画像データを送信する前にナンス値を送信することが望ましい。具体的には、あるフレーム内の画像データに対応するナンス値の一部または全部は、1つ前にフレーム内の最後の画像データが送信完了された後から、あるフレーム内の最初の画像データが送信開始される前までの、読み出し応答内や、ユーザ定義データ内、埋込データ内(画像データ直後)、フレームエンド内、フレームスタート内、埋込データ内(画像データ直前)などの何れかに格納される。
例えば、低速コマンド送信のマスタであるアプリケーションプロセッサ1212は、低速コマンド送信のスレーブであるイメージセンサ1211から高速データ送信によって送信されたフレームスタートや、埋込データ、画像データ、ユーザ定義データ、フレームエンドなどの何れかの受信開始または受信完了に応じて、イメージセンサ1211内のナンス値をアプリケーションプロセッサ1212へ読み出すことを要求する読み出し命令を低速コマンド送信によって送信してもよい。
イメージセンサ1211は、アプリケーションプロセッサ1212から送信された読み出し命令を受信し、それに応じたナンス値を高速データ送信によって送信する。そして、アプリケーションプロセッサ1212が読み出し応答を受信することによって、イメージセンサ1211からアプリケーションプロセッサ1212へナンス値を通知できる。
イメージセンサ1211から通知されたナンス値はアプリケーションプロセッサ1212内で用いられるので、ナンス値の一部または全部は、フレームエンドと次のフレームスタートとの間の画像データが送信されないフレームブランキングの期間内に送信されることが望ましい。ただし、最初のフレーム(Frame Number = 1)については、イメージセンサ1211とアプリケーションプロセッサ1212とで最初のナンス値(初期値)を事前合意しておくか、最初のナンス値の一部または全部が画像データの送信開始までにアプリケーションプロセッサ1212で受信されてれいればよい。
この読み出し命令は、例えば、I2CまたはI3Cの規格におけるRead/WriteのReadに相当する。一方、読み出し応答は、Read戻り値に相当する。なお、読み出し応答のタイミングを調整するために、アプリケーションプロセッサ1212が高速データ送信を受信してから、読み出し命令を送信するまでの間に、所定時間を待機するタイマーが設けられてもよい。
<I2CおよびI3Cについて>
I2CバスまたはI2Cバスと呼ばれる場合もある集積回路間シリアルバスは、低速周辺装置をアプリケーションプロセッサ1212に接続する際に使用することを意図していたシリアルシングルエンドコンピュータバスである。I2Cバスは、I2Cバス上で送信される様々なメッセージに対して、各デバイスがマスタおよびスレーブとして働くことができるマルチマスタバスである。
I2Cバスは、シリアルデータライン(SDA)およびシリアルクロックライン(SCL)を含む2つの双方向オープンドレインコネクタのみを使用して、データを送信することができる。それらのコネクタは通常、プルアップ抵抗器によって終端される信号線を含む。I2Cバスの動作を管理するプロトコルは、メッセージの基本タイプを規定し、それらのメッセージはそれぞれSTARTで開始し、STOPで終了する。I2Cバスは7ビットアドレス指定を使用し、2つのタイプのノードを規定する。
マスタノードは、クロックを生成し、スレーブノードとの通信を開始するノードである。スレーブノードは、クロックを受信し、マスタによってアドレス指定されたときに応答するノードである。I2Cバスはマルチマスタバスであり、それは、任意の数のマスタノードが存在できることを意味する。さらに、マスタとスレーブの役割は、メッセージ間で(すなわち、STOPが送られた後)変更される場合がある。カメラ実装である本実施の形態では、センサから画像を取り込み、そのような画像データをベースバンドプロセッサの中のメモリへ送信するために片方向送信が使用されてもよく、一方、ベースバンドプロセッサと、センサならびに他の周辺デバイスとの間で制御データが交換されてもよい。
一例では、ベースバンドプロセッサとイメージセンサ(または1つもしくは複数のスレーブノード)との間のそのような制御データのために、カメラ制御インターフェース(CCI)プロトコルが使用される場合がある。一例では、CCIプロトコルは、イメージセンサとベースバンドプロセッサとの間のI2Cシリアルバスを介して実施されてもよい。従来のI2Cシステム、すなわちカメラ制御インターフェースベースのカメラシステムは、スレーブノードがバスを使用することを望むことを、スレーブノードがマスタノードへ示すことを可能にするために、スレーブデバイスごとに別個の割込み(IRQ)ラインを使用する。
一方、I3Cの通信規格は、データを伝送するSDA線と、クロック信号を伝送するSCL線との2本の信号線を介して通信を行う規格である。この規格において、デバイス(プロセッサなど)は、マスタまたはスレーブとして動作するデバイスと、スレーブとしてのみ動作するデバイスとに分類される。例えば、プロセッサは、マスタまたはスレーブとして動作し、センサはスレーブとしてのみ動作する。
ここで、マスタは、スレーブを制御するデバイスであり、スレーブは、マスタの制御に従って動作するデバイスである。また、I3Cでは1つのマスタに対して複数のスレーブを接続することができる。また、1つのスレーブへ対して複数のマスタが信号を送信することができ、この通信を以下、「マルチマスタ通信」と称する。さらに、マスタを介さずにスレーブ同士で通信を行うことができ、この通信は、「ピアツーピア通信」と呼ばれる。また、スレーブは、他のデバイスの通信によりSDA線が通信中(ビジー)である間に、その通信に割り込んで通信を行うことができ、この割込みは、「帯域内割込み(In-Band Interrupt)」と呼ばれる。
上述のマルチマスタ通信、帯域内割込み、および、ピアツーピア通信においては、複数のデバイスが同時に送信した信号がSDA線において衝突するおそれがある。例えば、マスタが、あるスレーブへ信号を送信している間に、別のスレーブが帯域内割込みを行ってマスタへ信号を送信すると、マスタからの信号とスレーブからの信号とが衝突してしまう。このため、I3Cにおけるデバイスは、衝突を検出してデバイス同士を調停する機能を有する。
上述した割り込み機能を用いると、アプリケーションプロセッサ1212と簡単に同期をとれるので、イメージセンサ1211が決めるタイミングで割り込み実行することによって、イメージセンサ1211が決めるタイミングに応じてナンス関連情報が送信される。ただし、イメージセンサ1211は、帯域内割込みによって読み出し命令をトリガし、それに応じて読み出し応答を送信してもよいし、帯域内割込みによって読み出し命令を省略して読み出し応答を送信してもよい。
<完全性演算値処理>
図92乃至図95を参照して、完全性演算値処理について説明する。
図92は、イメージセンサ1211が完全性演算値を送信する完全性演算値処理の第1の処理例を説明するフローチャートである。
ステップS661において、セキュリティ部1310は、セッション鍵を導出する。
ステップS662において、メッセージカウンタ1308は、メッセージカウント値を初期化して0に設定する。
ステップS663において、拡張モード対応CSI-2送信回路1304は、セッションを終了するか否かを判定し、セッションを終了しないと判定された場合、処理はステップS664に進む。
ステップS664において、拡張モード対応CSI-2送信回路1304は、拡張パケットを送信するか否かを判定する。
ステップS664において、拡張モード対応CSI-2送信回路1304が、拡張パケットを送信しないと判定した場合、処理はステップS663に戻り、以下、同様の処理が繰り返して行われる。一方、ステップS664において、拡張モード対応CSI-2送信回路1304が、拡張パケットを送信すると判定した場合、処理はステップS665に進む。
ステップS665において、セキュリティ部1310は、メッセージカウント値を用いて、完全性演算値を演算する。
ステップS666において、拡張モード対応CSI-2送信回路1304は、ステップS665で算出された完全性演算値を拡張パケットに配置し、その拡張パケットを送信する。
ステップS667において、メッセージカウンタ1308は、メッセージカウント値が最大値までカウントされたか否かを判定する。ステップS667において、メッセージカウンタ1308が、メッセージカウント値が最大値までカウントされていないと判定した場合、処理はステップS668に進む。
ステップS668において、メッセージカウンタ1308は、メッセージカウント値をインクリメントする。その後、処理はステップS662に戻り、以下、同様の処理が繰り返して行われる。
一方、ステップS667において、メッセージカウンタ1308が、メッセージカウント値が最大値までカウントされたと判定した場合、処理はステップS669に進む。ステップS669において、セキュリティ部1310は、セッション鍵を更新した後、処理はステップS663に戻り、以下、同様の処理が繰り返して行われる。
そして、ステップS663において、拡張モード対応CSI-2送信回路1304が、セッションを終了すると判定した場合、処理はステップS670に進む。
ステップS670において、セキュリティ部1310は、セッション鍵を破棄またはクリーンアップし、その後、処理は終了される。
このように、画像ラインごとのMAC値を演算して拡張パケットフッタ内に格納して送信する場合、メッセージカウント値は、拡張パケットを送信するごとに1ずつインクリメントされるので、216回でメッセージカウント値は一周する。例えば、フレームレートが60fpsで画素数4096×2160(横×縦)の4Kデータを送信する場合、フレームスタートと埋込データとフレームエンドとの3ラインを加算した2163ラインの拡張パケットを1フレーム内で送信することを想定すれば、(216)/(60×2163)≒0.5秒でメッセージカウント値が一周する。
例えば、イメージセンサ1211が、同じセッション鍵で同じ初期化ベクトル値を用いてメッセージのGalois Message Authentication Code(GMAC)値などのMAC値を演算してメッセージおよびMAC値を送信する場合、攻撃者はメッセージおよびMAC値の連立方程式を計算することによってセッション鍵を簡単に入手できる。その場合、攻撃者は、MAC値を自由に改竄できるようになるため、メッセージの成りすまし、改竄、リプレイなどの攻撃が可能になる。そのため、メッセージカウント値を初期化ベクトルの可変部分、つまりナンス値として用いる場合、メッセージカウント値が一周するまでにセッション鍵を更新する必要がある。例えば、フレームブランキングまたはラインブランキングの期間を活用することによって、ナンス値が一周(ロールオーバー)するまでにセッション鍵が更新されればよい。
図93は、イメージセンサ1211が完全性演算値を送信する完全性演算値処理の第2の処理例を説明するフローチャートである。
ステップS681において、セキュリティ部1310は、セッション鍵を導出する。
ステップS682において、メッセージカウンタ1308は、メッセージカウント値の上位カウント値を初期化して0に設定する。
ステップS683において、メッセージカウンタ1308は、メッセージカウント値の下位カウント値を初期化して0に設定する。
ステップS684において、拡張モード対応CSI-2送信回路1304は、セッションを終了するか否かを判定し、セッションを終了しないと判定された場合、処理はステップS685に進む。
ステップS685において、拡張モード対応CSI-2送信回路1304は、拡張パケットを送信するか否かを判定する。
ステップS685において、拡張モード対応CSI-2送信回路1304が、拡張パケットを送信しないと判定した場合、処理はステップS684に戻り、以下、同様の処理が繰り返して行われる。一方、ステップS685において、拡張モード対応CSI-2送信回路1304が、拡張パケットを送信すると判定した場合、処理はステップS686に進む。
ステップS686において、セキュリティ部1310は、メッセージカウント値の上位カウント値および下位カウント値を用いて、完全性演算値を演算する。
ステップS687において、拡張モード対応CSI-2送信回路1304は、ステップS686で算出された完全性演算値を拡張パケットに配置し、その拡張パケットを送信する。
ステップS688において、メッセージカウンタ1308は、メッセージカウント値の下位カウント値が最大値までカウントされたか否かを判定する。ステップS688において、メッセージカウンタ1308が、メッセージカウント値の下位カウント値が最大値までカウントされていないと判定した場合、処理はステップS689に進む。
ステップS689において、メッセージカウンタ1308は、メッセージカウント値の下位カウント値をインクリメントする。その後、処理はステップS684に戻り、以下、同様の処理が繰り返して行われる。
一方、ステップS688において、メッセージカウンタ1308が、メッセージカウント値の下位カウント値が最大値までカウントされたと判定した場合、処理はステップS690に進む。ステップS690において、メッセージカウンタ1308は、メッセージカウント値の上位カウント値をインクリメントした後、処理はステップS683に戻り、以下、同様の処理が繰り返して行われる。
そして、ステップS684において、拡張モード対応CSI-2送信回路1304が、セッションを終了すると判定した場合、処理はステップS691に進む。
ステップS691において、セキュリティ部1310は、セッション鍵を破棄またはクリーンアップし、その後、処理は終了される。
このように、メッセージカウント値を初期化ベクトルの一部、つまりナンス値の一部(例えば、下位カウント値)として用いる場合、ナンス値の残り(例えば、上位カウント値)も併用することによって、セッション鍵の更新を不要にすること、または、セッション鍵の更新頻度を減らすことができる。
例えば、フレームレートが60fpsで画素数4096×2160(横×縦)の4Kデータを送信する場合、ナンス値が一周するのは、
・16ビット幅の上位カウント値を併用すると232÷60÷2163≒9時間
・20ビット幅の上位カウント値を併用すると236÷60÷2163≒6日
・24ビット幅の上位カウント値を併用すると240÷60÷2163≒98日
・28ビット幅の上位カウント値を併用すると244÷60÷2163≒4年
・32ビット幅の上位カウント値を併用すると248÷60÷2163≒69年
となる。
ここで、イメージセンサ1211またアプリケーションプロセッサ1212の電源が再起動(OFFの後にON)される場合、保護された画像データを再び送信する前に鍵交換が必要になるので、それに応じてセッション鍵は更新される。例えば、一般的な車載用途で6日以上も電源を再起動しない可能性は低く、4年以上も電源を再起動しない可能性は極めて低いので、上位カウント値は20~28ビット幅あれば十分である。もちろん、その限りではなく、それ以上のビット幅を用いてもよい。
例えば、給油式の車両であれば給油の際に電源OFFとすればよく、給油式または充電式の車両であっても車両点検の際に電源OFFとすれば、保護された画像データを再び送信する前に鍵交換が必要になるので、それに応じてセッション鍵は更新される。例えば、IoT(Internet of ThingsまたはIntelligence of Things)向けイメージセンサが想定される場合、電源が再起動されないことも想定されるので、上位カウント値は32ビット幅あれば十分である。もちろん、その限りではなく、それ以上のビット幅を用いてもよい。
図94は、イメージセンサ1211が完全性演算値を送信する完全性演算値処理の第3の処理例を説明するフローチャートである。
ステップS701において、セキュリティ部1310は、セッション鍵を導出する。
ステップS702において、メッセージカウンタ1308は、フレームカウント値を初期化して1に設定する。
ステップS703において、拡張モード対応CSI-2送信回路1304は、セッションを終了するか否かを判定し、セッションを終了しないと判定された場合、処理はステップS704に進む。
ステップS704において、拡張モード対応CSI-2送信回路1304は、拡張パケットを送信するか否かを判定する。
ステップS704において、拡張モード対応CSI-2送信回路1304が、拡張パケットを送信しないと判定した場合、処理はステップS703に戻り、以下、同様の処理が繰り返して行われる。一方、ステップS704において、拡張モード対応CSI-2送信回路1304が、拡張パケットを送信すると判定した場合、処理はステップS705に進む。
ステップS705において、セキュリティ部1310は、フレームカウント値を用いて行われる完全性演算値の演算を準備する。
ステップS706において、拡張モード対応CSI-2送信回路1304は、拡張パケットを送信する。
ステップS707において、拡張モード対応CSI-2送信回路1304は、フレーム内のフレームエンド以外の送信が完了したか否かを判定する。ステップS707において、拡張モード対応CSI-2送信回路1304が、フレーム内のフレームエンド以外の送信が完了していないと判定した場合、処理はステップS703に戻り、以下、同様の処理が繰り返して行われる。一方、ステップS707において、拡張モード対応CSI-2送信回路1304が、フレーム内のフレームエンド以外の送信が完了したと判定した場合、処理はステップS708に進む。
ステップS708において、セキュリティ部1310は、フレームカウント値を用いて行われる完全性演算値の演算を完了する。
ステップS709において、拡張モード対応CSI-2送信回路1304は、フレームエンドとともに完全性演算値を送信する。
ステップS710において、メッセージカウンタ1308は、フレームカウント値が規定値までカウントされたか否かを判定する。ステップS710において、メッセージカウンタ1308が、フレームカウント値が規定値までカウントされていないと判定した場合、処理はステップS711に進む。
ステップS711において、メッセージカウンタ1308は、フレームカウント値をインクリメントする。その後、処理はステップS703に戻り、以下、同様の処理が繰り返して行われる。
一方、ステップS710において、メッセージカウンタ1308が、フレームカウント値が規定値までカウントされたと判定した場合、処理はステップS712に進む。ステップS712において、セキュリティ部1310は、セッション鍵を更新した後、処理はステップS702に戻り、以下、同様の処理が繰り返して行われる。
そして、ステップS703において、拡張モード対応CSI-2送信回路1304が、セッションを終了すると判定した場合、処理はステップS713に進む。
ステップS713において、セキュリティ部1310は、セッション鍵を破棄またはクリーンアップし、その後、処理は終了される。
このように、イメージセンサ1211は、画像フレームごとの完全性演算値を演算して一括送信してもよい。その場合の完全性演算値は、画像データ以降の埋込データ内またはユーザ定義データ内または読み出し応答内に格納されて送信される。
フレームスタートまたはフレームエンドは、例えば、16ビットのフレーム番号を含んでもよい。このフレーム番号は、所定のフレームに対応するフレームスタートとフレームエンドとで同一であってもよい。16ビットのフレーム番号を使用する場合、フレーム番号が機能せず、ゼロに設定されたままのユースケースと区別するために、非ゼロであることが望ましいが、その限りではない。
フレーム番号は、同じ仮想チャネルを持つフレームスタートパケットごとに1または2ずつインクリメントし、定期的に1へリセットされる。例えば、破損のために画像フレームがマスクされている(つまり、送信されてない)場合、フレーム番号は2ずつ増えてもよい。
このような場合に対応するために、必要に応じて、フレーム番号のシーケンス内で1または2のインクリメントを自由に混在させてもよい。つまり、1ずつインクリメントされる場合、216-1回でフレーム番号は一周する。また、フレームレートが60fpsである場合、(216-1)÷60≒18分でフレーム番号が一周する。
例えば、イメージセンサ1211が、同じセッション鍵で同じ初期化ベクトル値を用いてメッセージのGalois Message Authentication Code(GMAC)値などのMAC値を演算してメッセージおよびMAC値を送信する場合、攻撃者はメッセージおよびMAC値の連立方程式を計算することによってセッション鍵を簡単に入手できる。その場合、攻撃者は、MAC値を自由に改竄できるようになるため、メッセージの成りすまし、改竄、リプレイなどの攻撃が可能になる。
そのため、フレーム番号を初期化ベクトル、つまりナンス値として用いる場合、フレーム番号が一周するまでにセッション鍵を更新する必要がある。例えば、フレームブランキングまたはラインブランキングの期間を活用することによって、ナンス値が一周(ロールオーバー)するまでにセッション鍵が更新されればよい。
図95は、イメージセンサ1211が完全性演算値を送信する完全性演算値処理の第4の処理例を説明するフローチャートである。
ステップS721において、セキュリティ部1310は、セッション鍵を導出する。
ステップS722において、メッセージカウンタ1308は、フレームカウント値の上位カウント値を初期化して0に設定する。
ステップS723において、メッセージカウンタ1308は、フレームカウント値の下位カウント値を初期化して1に設定する。
ステップS724において、拡張モード対応CSI-2送信回路1304は、セッションを終了するか否かを判定し、セッションを終了しないと判定された場合、処理はステップS725に進む。
ステップS725において、拡張モード対応CSI-2送信回路1304は、拡張パケットを送信するか否かを判定する。
ステップS725において、拡張モード対応CSI-2送信回路1304が、拡張パケットを送信しないと判定した場合、処理はステップS724に戻り、以下、同様の処理が繰り返して行われる。一方、ステップS725において、拡張モード対応CSI-2送信回路1304が、拡張パケットを送信すると判定した場合、処理はステップS726に進む。
ステップS726において、セキュリティ部1310は、フレームカウント値の上位カウント値および下位カウント値を用いて行われる完全性演算値の演算を準備する。
ステップS727において、拡張モード対応CSI-2送信回路1304は、拡張パケットを送信する。
ステップS728において、拡張モード対応CSI-2送信回路1304は、フレーム内のフレームエンド以外の送信が完了したか否かを判定する。ステップS728において、拡張モード対応CSI-2送信回路1304が、フレーム内のフレームエンド以外の送信が完了していないと判定した場合、処理はステップS724に戻り、以下、同様の処理が繰り返して行われる。一方、ステップS728において、拡張モード対応CSI-2送信回路1304が、フレーム内のフレームエンド以外の送信が完了したと判定した場合、処理はステップS729に進む。
ステップS729において、セキュリティ部1310は、フレームカウント値の上位カウント値および下位カウント値を用いて行われる完全性演算値の演算を完了する。
ステップS730において、拡張モード対応CSI-2送信回路1304は、フレームエンドとともに完全性演算値を送信する。
ステップS731において、メッセージカウンタ1308は、フレームカウント値の下位カウント値が規定値までカウントされたか否かを判定する。ステップS731において、メッセージカウンタ1308が、フレームカウント値の下位カウント値が規定値までカウントされていないと判定した場合、処理はステップS732に進む。
ステップS732において、メッセージカウンタ1308は、フレームカウント値の下位カウント値をインクリメントする。その後、処理はステップS724に戻り、以下、同様の処理が繰り返して行われる。
一方、ステップS731において、メッセージカウンタ1308が、フレームカウント値の下位カウント値が規定値までカウントされたと判定した場合、処理はステップS733に進む。ステップS733において、セキュリティ部1310は、フレームカウント値の上位カウント値をインクリメントした後、処理はステップS723に戻り、以下、同様の処理が繰り返して行われる。
そして、ステップS724において、拡張モード対応CSI-2送信回路1304が、セッションを終了すると判定した場合、処理はステップS734に進む。
ステップS734において、セキュリティ部1310は、セッション鍵を破棄またはクリーンアップし、その後、処理は終了される。
このように、フレーム番号を初期化ベクトルの一部、つまりナンス値の一部(例えば、下位カウント値)として用いる場合、ナンス値の残り(例えば、上位カウント値)も併用することによって、セッション鍵の更新を不要にすること、または、セッション鍵の更新頻度を減らすことができる。
例えば、1ずつインクリメントで60fpsである場合、ナンス値が一周するのは、
・4ビット幅の上位カウント値を併用すると(220-1)÷60≒5時間
・8ビット幅の上位カウント値を併用すると(224-1)÷60≒78時間
・12ビット幅の上位カウント値を併用すると(228-1)÷60≒52日
・16ビット幅の上位カウント値を併用すると(232-1)÷60≒828日
・20ビット幅の上位カウント値を併用すると(236-1)÷60≒36年
・24ビット幅の上位カウント値を併用すると(240-1)÷60≒581年
となる。
ここで、イメージセンサ1211またはアプリケーションプロセッサ1212の電源が再起動(OFFの後にON)される場合、保護された画像データを再び送信する前に鍵交換が必要になるので、それに応じてセッション鍵は更新される。例えば、一般的な車載用途で、3日以上も電源を再起動しない可能性は低く、2年以上も電源を再起動しない可能性は極めて低いので、上位カウント値は8~16ビット幅あれば十分である。もちろん、その限りではなく、それ以上のビット幅を用いてもよい。
例えば、給油式の車両であれば給油の際に電源OFFとすればよく、給油式または充電式の車両であっても車両点検の際に電源OFFとすれば、保護された画像データを再び送信する前に鍵交換が必要になるので、それに応じてセッション鍵は更新される。例えば、IoT(Internet of ThingsまたはIntelligence of Things)向けイメージセンサが想定される場合、電源が再起動されないことも想定されるので、上位カウント値は20~24ビット幅あれば十分である。もちろん、その限りではなく、それ以上のビット幅を用いてもよい。
<暗号化および復号>
図96乃至図100を参照して、暗号化および復号について説明する。
図96には、初期化ベクトルが格納される初期カウンタブロックの一例が示されている。
図96に示すように、初期化ベクトルの構造を共通化する一方で、バーチャルチャネル間で異なる値とすることで、より簡単な実装を可能とすることができる。また、CSI-2のバーチャルチャネル間で、共通のセッション鍵またはカウント値が用いられる。
128ビットの初期カウンタブロックが、AES(Advanced Encryption Standard)-GCM(Galois/Counter Mode)または AES-GMAC(Galois Message Authentication Code)によって暗号化に用いられたり、メッセージ認証に用いられたりする。
例えば、初期カウンタブロックの暗号化には、図97に示すようなGHASH関数や、図98に示すようなGCTR関数などを利用することができる。
初期化ベクトルは、図99に示すような認証付き暗号化機能を有するGCM-AE(Authenticated Encryption)関数を利用した暗号化や、図100に示すような認証付き復号機能を有するGCM-AD(Authenticated Decryption)関数を利用した復号に利用される。ただし、暗号化(復号)またはメッセージ認証の何れか一方の機能に限定利用されてもよい。
例えば、初期化ベクトルIV、平文P、および追加認証データAをGCM-AE関数に入力すると平文Pの暗号化が行われ、その結果、暗号化テキストCおよび認証タグTが出力される。
一方、初期化ベクトルIV、暗号化テキストC、追加認証データA、および認証タグTをGCM-AD関数に入力すると、暗号化テキストCの復号が行われて平文Pが出力され、認証タグTと認証タグT’が一致しなかった場合には、認証に失敗したことを示す結果(FAIL)が出力される。
<完全性演算値の第1の送信方式>
図101乃至図105を参照して、完全性演算値MACの第1の送信方式について説明する。
図101には、ラインごとに完全性演算値MACを送信する画像データのデータ構造が示されている。このように、ラインごとに完全性演算値MACを送信する送信方式を、以下適宜、ラインMAC方式と称する。
図示するように、CSI-2のラインごと、CCIコマンドごと、または、CCIリターンごとに、完全性演算値MACが送信される。このように、これらの間で初期化ベクトルが同一の値である場合、より多くのセッション鍵が必要となる。
例えば、同一の初期化ベクトルおよび同一のセッション鍵を使用すると、完全性演算値MACが改竄される原因になることが想定される。
そこで、同一の初期化ベクトルについては、VC0コマンド、VC0リターン、VC1、およびVC2ごとに、それぞれ合計で4つのセッション鍵を使用することが提案される。
一方、異なる初期化ベクトルについては、3つ以下のセッション鍵を使用することが提案される。
第1のケースでは、アップリンク向けの第1のセッション鍵をVC0コマンドで使用し、ダウンリンク向けの第2のセッション鍵をVC0リターン、VC1、およびVC2で使用する。第2のケースでは、CCI向けの第1のセッション鍵をVC0で使用し、CSI-2向けの第2のセッション鍵をVC1およびVC2で使用する。第3のケースでは、全て向けの1つのセッション鍵をVC0、VC1、およびVC2で使用する。
また、合計で2つのメッセージカウント値が使用される。CSI-2で共通のメッセージカウント値はVC1およびVC2の間で使用され、CCIで独立したメッセージカウント値はVC0で使用される。
なお、CSI-2の仮想チャネル間で共通なメッセージカウンタが用いられる例が示されているが、CSI-2の仮想チャネル間で独立したメッセージカウンタが用いられてもよい。その場合、フローチャートの一部が削除されればよい。また、その場合、CSI-2の仮想チャネル間でメッセージカウンタが同期されていてもよいし、非同期であってもよい。例えば、実装効率の観点でメッセージカウンタは共通化が望ましい場合もあるし、安全性の観点でメッセージカウンタは独立化が望ましい場合もある。
例えば、図102に示す構造の初期化ベクトルは、全てのバーチャルチャネル(CSI-2およびCCI)において共通とされる。そして、この初期化ベクトルの一部または全部は、図103に示すように、送信側から受信側へ送信される。なお、Reserved(Res)2ビットとして、規定値(例えば、02、12)を用いてもよい。また、Source IDまたはFinal Destination IDとして、事前交換された値を用いてもよい。また、受信側は、送信側から受信側へ送信された値ではなく、受信側で把握している値を初期化ベクトルの一部または全部として用いてもよい。また、初期化ベクトルの一部または全部が送信側から受信側へ送信される場合、初期化ベクトルの一部または全部は暗号化されないで(平文で)送信されることが望ましいが、その限りではない。
図103では、追加メッセージカウント値が拡張パケットヘッダ外に格納されて送信される例が示されているが、追加メッセージカウント値およびメッセージカウント値が拡張パケットヘッダ外に格納されて送信されてもよい。その場合、メッセージカウント値は拡張パケットヘッダ内にも格納されて送信されてもよい。なお、追加メッセージカウント値は一部のみ用いられてもよい。例えば、初期化ベクトル内の追加メッセージカウント値が40ビットの場合、実際の追加メッセージカウント値は16ビットのカウンタであってもよく、そのカウント値が初期化ベクトル内の追加メッセージカウント値の一部(例えば、LSB側16ビット)内に格納され、初期化ベクトル内の追加メッセージカウント値の残り(例えば、MSB側24ビット)内は規定値(例えば、024、124)が格納されてもよい。また、初期化ベクトル内の追加メッセージカウント値は全て規定値(例えば、040、140)が格納されてもよい。
また、イメージセンサ1211からアプリケーションプロセッサ1212へ送信されて設定される初期化ベクトルの一部または全部は、イメージセンサ1211からアプリケーションプロセッサ1212へ送信されないように構成され、事前合意またはレジスタ設定などに基づいて設定されてもよい。
図104には、CSI-2またはCCIの拡張フォーマットの一例が示されている。
例えば、必須の拡張パケットヘッダePH0の先頭ビット(ReservedおよびeVC)または準先頭ビット(eVC)が、初期化ベクトルとして使用される。そして、アプリケーションプロセッサ1212は、そのビットを受信した直後に、上述の図98に示したGCTR関数の計算を開始することができる。つまり、送信側および受信側は、eVC値を送信または受信する前までにeVC以外の初期化ベクトル構成要素の値を確定できるように構成されてもよい。
図105に示すフローチャートを参照して、イメージセンサ1211が、ラインごとに完全性演算値MACを送信するラインMAC方式の送信処理について説明する。
ステップS741において、セキュリティ部1310は、共通セッション鍵を導出する。
ステップS742において、メッセージカウンタ1308は、メッセージカウント値の上位カウント値を初期化して0に設定する。
ステップS743において、メッセージカウンタ1308は、メッセージカウント値の下位カウント値を初期化して0に設定する。
ステップS744において、拡張モード対応CSI-2送信回路1304は、セッションを終了するか否かを判定し、セッションを終了しないと判定された場合、処理はステップS745に進む。
ステップS745において、拡張モード対応CSI-2送信回路1304は、第1のバーチャルチャネルの拡張パケットを送信するか否かを判定する。
ステップS745において、拡張モード対応CSI-2送信回路1304が、第1のバーチャルチャネルの拡張パケットを送信しないと判定した場合、処理はステップS744に戻り、以下、同様の処理が繰り返して行われる。一方、ステップS745において、拡張モード対応CSI-2送信回路1304が、第1のバーチャルチャネルの拡張パケットを送信すると判定した場合、処理はステップS746に進む。
ステップS746において、セキュリティ部1310は、ステップS741で導出した共通セッション鍵を用いて、第1のバーチャルチャネルの完全性演算値を演算する。
ステップS747において、拡張モード対応CSI-2送信回路1304は、ステップS746で算出された完全性演算値を第1のバーチャルチャネルの拡張パケットに配置し、その第1のバーチャルチャネルの拡張パケットを送信する。
ステップS748において、拡張モード対応CSI-2送信回路1304は、第2のバーチャルチャネルの拡張パケットを送信するか否かを判定し、第2のバーチャルチャネルの拡張パケットを送信と判定されるまで処理を待機する。そして、ステップS748において、拡張モード対応CSI-2送信回路1304が、第2のバーチャルチャネルの拡張パケットを送信すると判定した場合、処理はステップS749に進む。
ステップS749において、セキュリティ部1310は、ステップS741で導出した共通セッション鍵を用いて、第2のバーチャルチャネルの完全性演算値を演算する。
ステップS750において、拡張モード対応CSI-2送信回路1304は、ステップS749で算出された完全性演算値を第2のバーチャルチャネルの拡張パケットに配置し、その第2のバーチャルチャネルの拡張パケットを送信する。
ステップS751において、メッセージカウンタ1308は、メッセージカウント値の下位カウント値が最大値までカウントされたか否かを判定する。
ステップS751において、メッセージカウンタ1308が、メッセージカウント値の下位カウント値が最大値までカウントされていないと判定した場合、処理はステップS752に進む。ステップS752において、メッセージカウンタ1308は、メッセージカウント値の下位カウント値をインクリメントした後、処理はステップS744に戻り、以下、同様の処理が繰り返して行われる。
一方、ステップS751において、メッセージカウンタ1308が、メッセージカウント値の下位カウント値が最大値までカウントされたと判定した場合、処理はステップS753に進む。ステップS753において、メッセージカウンタ1308は、メッセージカウント値の上位カウント値をインクリメントした後、処理はステップS743に戻り、以下、同様の処理が繰り返して行われる。
そして、ステップS744において、拡張モード対応CSI-2送信回路1304が、セッションを終了すると判定した場合、処理はステップS754に進む。
ステップS754において、セキュリティ部1310は、共通セッション鍵を破棄またはクリーンアップし、その後、処理は終了される。
このように、初期化ベクトル構成が拡張仮想チャネルeVCまたは仮想チャネルVCを含むことによって、複数種類のCSI-2仮想チャネル間で、セッション鍵やメッセージカウンタが共通化されることが可能になる。また、CSI-2とCCIとの間で、セッション鍵を共通化されることが可能になる。なお、CSI-2仮想チャネル間で実質的なライン数が異なる場合、例えば、ダミーデータによってライン数が統一化されることによって、メッセージカウンタを共通化されることが可能になる。
図105で説明した処理は、メッセージカウント値を下位カウント値とし、追加メッセージカウント値を上位カウント値とする例であり、CSI-2仮想チャネルが2種類ある場合の一例である。
一方、初期化ベクトル構成は、拡張データタイプeDTまたはデータタイプDTを含んでもよい。その場合は同様に、複数種類のデータタイプ間で、セッション鍵やメッセージカウンタが共通化されることが可能になる。
なお、Reserved、拡張仮想チャネルeVC、および拡張データタイプeDTは、CSI-2/CCI extension format exampleの先頭ビットとして格納されるので、プロセッサはこれらの一部または全部が受信されれば直ちにGCTR演算の一部(CIPHK)の演算を開始できる。また、イメージセンサ1211とアプリケーションプロセッサ1212との間でフレーム構成が事前に合意されている場合、アプリケーションプロセッサ1212は、これらの受信を省略してGCTR演算の一部(CIPHK)の演算を開始できる。つまり、これらの初期化ベクトル構成は、演算時間の観点で有利である。
なお、追加メッセージカウント値をイメージセンサ1211からアプリケーションプロセッサ1212へ送信することによって、アプリケーションプロセッサ1212は、この値を初期化ベクトルに用いることができる。これにより、アプリケーションプロセッサ1212は、実装効率の観点から追加メッセージカウンタを設けないように構成されてもよいし、安全性の観点から追加メッセージカウンタを設けるように構成されてもよい。また、アプリケーションプロセッサ1212が追加メッセージカウンタを設けるように構成される場合、イメージセンサ1211は追加メッセージカウント値を送信しないように構成されてもよい。即ち、初期化ベクトルに拡張仮想チャネルeVCが含まれる場合、追加メッセージカウント値の送信は必須要件でない。
<完全性演算値の第2の配置例>
図106乃至図109を参照して、完全性演算値MACの第2の配置例について説明する。
図106には、フレームごとに完全性演算値MACが配置された画像データのデータ構造が示されている。このように、フレームごとに完全性演算値MACを送信する送信方式を、以下適宜、フレームMAC方式と称する。
図示するように、フレームエンドの拡張パケットフッタ残りePF1に配置されている完全性演算値MACのみが有効になり、他の完全性演算値MACは無効とされる。また、完全性演算値MACは、フレームの最後の拡張パケットフッタePFを除く各ラインの拡張パケットヘッダePH、パケットデータ、および拡張パケットフッタePFから導出される。
例えば、図107に示す構造の初期化ベクトルは、ラインMACおよびフレームMAC(CSI-2のみ)において共通とされる。そして、この初期化ベクトルは、図108に示すように、送信側から受信側へ送信される。
図108では、追加フレーム番号が拡張パケットヘッダ外に格納されて送信される例が示されている。その他、追加フレーム番号およびフレーム番号が拡張パケットヘッダ外に格納されて送信されてもよい。その場合、フレーム番号はフレームスタート内にも格納されて送信されてもよい。なお、追加フレーム番号は一部のみ用いられてもよい。例えば、初期化ベクトル内の追加フレーム番号が24ビットの場合、実際の追加フレーム番号は16ビットのカウンタであってもよく、そのカウント値が初期化ベクトル内の追加フレーム番号の一部(例えば、LSB側16ビット)内に格納され、初期化ベクトル内の追加フレーム番号の残り(例えば、MSB側8ビット)内は規定値(例えば、08、18)が格納されてもよい。また、初期化ベクトル内の追加フレーム番号は全て規定値(例えば、024、124)が格納されてもよい。
また、イメージセンサ1211からアプリケーションプロセッサ1212へ送信されて設定される初期化ベクトルの一部または全部は、イメージセンサ1211からアプリケーションプロセッサ1212へ送信されないように構成され、事前合意またはレジスタ設定などに基づいて設定されてもよい。
図109に示すフローチャートを参照して、イメージセンサ1211が、フレームごとに完全性演算値MACを送信するフレームMAC方式の送信処理について説明する。
ステップS761において、セキュリティ部1310は、セッション鍵を導出する。
ステップS762において、メッセージカウンタ1308は、追加フレーム番号が用いられる上位カウント値を初期化して0に設定する。
ステップS763において、メッセージカウンタ1308は、フレーム番号が用いられる下位カウント値を初期化して1に設定する。
ステップS764において、拡張モード対応CSI-2送信回路1304は、セッションを終了するか否かを判定し、セッションを終了しないと判定された場合、処理はステップS765に進む。
ステップS765において、拡張モード対応CSI-2送信回路1304は、拡張パケットを送信するか否かを判定する。
ステップS765において、拡張モード対応CSI-2送信回路1304が、拡張パケットを送信しないと判定した場合、処理はステップS764に戻り、以下、同様の処理が繰り返して行われる。一方、ステップS765において、拡張モード対応CSI-2送信回路1304が、拡張パケットを送信すると判定した場合、処理はステップS766に進む。
ステップS766において、拡張モード対応CSI-2送信回路1304は、拡張パケットを送信する。
ステップS767において、メッセージカウンタ1308は、メッセージカウント値が最大値までカウントされたか否かを判定する。
ステップS767において、メッセージカウンタ1308が、メッセージカウント値が最大値までカウントされたと判定した場合、処理はステップS768に進む。ステップS768において、メッセージカウンタ1308は、メッセージカウント値を初期化して0に設定する。
一方、ステップS767において、メッセージカウンタ1308が、メッセージカウント値が最大値までカウントされていないと判定した場合、処理はステップS769に進む。ステップS769において、メッセージカウンタ1308は、メッセージカウント値をインクリメントする。
ステップS768およびステップS769の処理後、処理はステップS770に進み、拡張モード対応CSI-2送信回路1304は、フレーム内の拡張パケットを全て送信完了したか否かを判定する。
ステップS770において、拡張モード対応CSI-2送信回路1304が、フレーム内の拡張パケットを全て送信完了していないと判定した場合、処理はステップS764に戻り、以下、同様の処理が繰り返して行われる。
一方、ステップS770において、拡張モード対応CSI-2送信回路1304が、フレーム内の拡張パケットを全て送信完了したと判定した場合、処理はステップS771に進む。
ステップS771において、メッセージカウンタ1308は、下位カウント値が規定値までカウントされたか否かを判定する。
ステップS771において、メッセージカウンタ1308が、下位カウント値が規定値までカウントされていないと判定した場合、処理はステップS772に進む。ステップS772において、メッセージカウンタ1308は、下位カウント値をインクリメントした後、処理はステップS764に戻り、以下、同様の処理が繰り返して行われる。
一方、ステップS771において、メッセージカウンタ1308が、下位カウント値が規定値までカウントされたと判定した場合、処理はステップS773に進む。ステップS773において、メッセージカウンタ1308は、上位カウント値をインクリメントした後、処理はステップS763に戻り、以下、同様の処理が繰り返して行われる。
そして、ステップS764において、拡張モード対応CSI-2送信回路1304が、セッションを終了すると判定した場合、処理はステップS774に進む。
ステップS774において、セキュリティ部1310は、共通セッション鍵を破棄またはクリーンアップし、その後、処理は終了される。
以上のように、図109で説明した処理は、フレーム番号を下位カウント値とし、追加フレーム番号を上位カウント値とする例である。ただし、完全性演算値の演算および送信、仮想チャネル、セッション鍵更新などについては省略されているが、上述したフローチャートの何れかの一部または全部と組み合わせられてもよい。他にフローチャートについても同様である。
なお、フレーム番号は1または2のインクリメントが混在する可能性あるため、下位カウント値が規定値(例えば、最大値または最大値-1)である場合に上位カウント値をインクリメントすることが望ましい。ただし、フレーム番号のインクリメントが1のみであるならば、下位カウント値が最大値である場合に上位カウント値がインクリメントされればよい。
なお、フレーム番号をイメージセンサ1211からアプリケーションプロセッサ1212へ送信することによって、アプリケーションプロセッサ1212は、この値を初期化ベクトルに用いることができる。従って、アプリケーションプロセッサ121は、実装効率の観点からフレームカウンタを設けないように構成されてもよいし、安全性の観点からフレームカウンタを設けるように構成されてもよい。また、アプリケーションプロセッサ1212がフレームカウンタを設けるように構成される場合、イメージセンサ1211はフレーム番号を送信しないように構成されてもよい。即ち、初期化ベクトルに拡張仮想チャネルeVCが含まれる場合、フレーム番号の送信は必須要件でない。
また、追加フレーム番号をイメージセンサ1211からアプリケーションプロセッサ1212へ送信することによって、アプリケーションプロセッサ1212は、この値を初期化ベクトルに用いることができる。従って、アプリケーションプロセッサ1212は、実装効率の観点から追加フレームカウンタを設けないように構成されてもよいし、安全性の観点から追加フレームカウンタを設けるように構成されてもよい。また、アプリケーションプロセッサ1212が追加フレームカウンタを設けるように構成される場合、イメージセンサ1211は追加フレーム番号を送信しないように構成されてもよい。
フレームMAC方式の場合、初期化ベクトル内のメッセージカウント値は、規定の値(例えば、016、116)が格納されてもよいし、特定の拡張パケット(例えば、フレームスタートまたはフレームエンド)のメッセージカウント値が格納されてもよい。一方、ラインMAC方式の場合、初期化ベクトル内のメッセージカウント値は、メッセージカウント値が格納される。
<完全性演算値MACの送信方式の選択>
図110および図111を参照して、完全性演算値MACの送信方式の選択について説明する。
図110は、イメージセンサ1211が、完全性演算値MACの送信方式を選択する選択処理を説明するフローチャートである。
ステップS781において、拡張モード対応CSI-2送信回路1304は、ラインMAC方式で完全性演算値MACを送信するか否かを判定する。
ステップS781において、拡張モード対応CSI-2送信回路1304が、ラインMAC方式で完全性演算値MACを送信すると判定した場合、処理はステップS782に進む。ステップS782において、拡張モード対応CSI-2送信回路1304は、ラインMAC方式を選択する。
一方、ステップS781において、拡張モード対応CSI-2送信回路1304が、ラインMAC方式で完全性演算値MACを送信しないと判定した場合、処理はステップS783に進む。
ステップS783において、拡張モード対応CSI-2送信回路1304は、フレームMAC方式で完全性演算値MACを送信するか否かを判定する。
ステップS783において、拡張モード対応CSI-2送信回路1304が、フレームMAC方式で完全性演算値MACを送信すると判定した場合、処理はステップS784に進む。ステップS784において、拡張モード対応CSI-2送信回路1304は、フレームMAC方式を選択する。
一方、ステップS783において、拡張モード対応CSI-2送信回路1304が、フレームMAC方式で完全性演算値MACを送信しないと判定した場合、処理はステップS785に進む。ステップS785において、拡張モード対応CSI-2送信回路1304は、完全性演算値MACを送信しない非MAC方式を選択する。
ステップS782、ステップS784、またはステップS785の処理後、処理はステップS786に進む。ステップS786において、拡張モード対応CSI-2送信回路1304は、ラインMAC方式、フレームMAC方式、または非MAC方式のいずれかを示すセキュリティMAC情報(図111参照)を送信した後、処理は終了される。ただし、図111には、2ビット割り当てのセキュリティMAC情報が示されているが、異なるビット数の割り当て(例えば、1ビット、8ビット)でもよい。また、リザーブド領域データ(Reserved for future use)には、MAC値を送信しないこと(例えば、No MAC)が割り当てられてもよい。
以上のように、イメージセンサ1211は、ラインMAC方式でMAC値を送信する(ラインMAC方式を選択)のか、フレームMAC方式でMAC値を送信する(フレームMAC方式を選択)のか、MAC値を送信しない(非MAC方式を選択)のかを自由に選択することができる。または、イメージセンサ1211は、アプリケーションプロセッサ1212と事前合意の上で、いずれかを選択してもよい。例えば、イメージセンサ1211は、最初はラインMAC方式を選択し、所定条件を満たす場合に他方式(例えば、フレームMAC方式)へ切り替えてもよい。例えば、最初はフレームMAC方式を選択し、所定条件を満たす場合に他方式(例えば、ラインMAC方式)へ切り替えてもよい。例えば、最初は非MAC方式を選択し、所定条件を満たす場合に他方式(例えば、フレームMAC方式)へ切り替えてもよい。
そして、ラインMAC方式を選択するのか、フレームMAC方式を選択するのか、非MAC方式を選択するのかは、例えば、拡張パケットヘッダ(例えば、ePH2)内のSecurity Descriptor内や、埋込データ内、ユーザ定義データ内、読み出し応答内などに格納されてイメージセンサ1211から送信される。アプリケーションプロセッサ1212は、その受信に応じて、完全性演算値MACの送信方式の切り替えに対応することができる。
なお、初期化ベクトルの混乱を避けるために、完全性演算値MACの送信方式を切り替える際は、フレームエンド送信の開始以後からフレームスタート送信の完了以前までに、切り替え後の送信方式をイメージセンサから送信されることが望ましいが、その限りではない。
なお、ラインMAC方式なのかフレームMAC方式なのかを識別できるセキュリティMAC情報が初期化ベクトル内に含まれてもよい。その場合は、ラインMAC方式とフレームMAC方式との間で初期化ベクトルが確実に重複しないため、完全性演算値MACの送信方式の切り替えが円滑化される。セキュリティMAC情報が無いと、例えば完全性演算値MACの送信方式の切り替えタイミングによっては、初期化ベクトルの重複を避けるために、メッセージカウンタ1308内に格納される値の指定が必要になる場合もあり得る。
<メッセージカウント値およびフレームカウント値について>
図112乃至図115を参照して、メッセージカウント値およびフレームカウント値について説明する。
図112には、メッセージカウント値およびフレームカウント値がロールオーバーする周期の一例が示されている。
図112のAに示すように、60fpsかつ画素2160行の場合では、メッセージカウント値は、上位カウント値16bitおよび下位カウント値16bitとすることで、約9時間でロールオーバーする。同様に、上位カウント値20bitおよび下位カウント値16bitでは約6日で、上位カウント値24bitおよび下位カウント値16bitでは約96日で、上位カウント値28bitおよび下位カウント値16bitでは約4年で、上位カウント値32bitおよび下位カウント値16bitでは約69年でロールオーバーする。
図112のBに示すように、60fpsかつ1毎インクリメントの場合では、フレームカウント値は、上位カウント値4bitおよび下位カウント値16bitとすることで、約5時間でロールオーバーする。同様に、上位カウント値8bitおよび下位カウント値16bitでは約78時間で、上位カウント値12bitおよび下位カウント値16bitでは約52日で、上位カウント値16bitおよび下位カウント値16bitでは約828日で、上位カウント値20bitおよび下位カウント値16bitでは約36年で、上位カウント値24bitおよび下位カウント値16bitでは約581年でロールオーバーする。
図113のAに示すように、初期化ベクトル構成は、乱数で構成されるソルトを含む構成としてもよい。ただし、例えば乱数が生成されない場合、ソルトは規定値(例えば、032、132)でもよい。
図113のBに示すように、初期化ベクトル構成は、メッセージカウント値を含まないで(フレームカウント値を含んで)構成されてもよい。また、Source IDまたはFinal destination IDを含んで構成されてもよい。なお、追加フレーム番号、フレーム番号、追加メッセージカウント値、およびメッセージカウント値を含んで構成されてもよい。
図113のCに示すように、初期化ベクトル構成は、SPDMセッションIDを含んでもよい。一方、ビット幅を節約できる、Source IDとFinal destination IDとのXOR結果を含んでもよい。
図113のDに示すように、SPDMセッションIDは、後述するReqSessionIDとRspSessionIDとで構成されてもよい。
図113のEに示すように、初期化ベクトル構成は、セキュリティプロトコル情報(例えば、SPDM/HDCP)、拡張データタイプ、またはデータタイプを含んでもよい。
なお、図133に示された各要素の並び順は交換されてもよい。MSB側(上位カウント値)とLSB側(下位カウント値)とは交換されてもよい。一部の要素が他要素(例えば、ソルトやePH内パラメータ、上述した初期化ベクトル構成要素などの一部または全部)に置き換えられてもよい。
図114は、アプリケーションプロセッサ1212が、メッセージカウント値を用いてデータ検証を行うデータ検証処理を説明するフローチャートである。
ステップS791において、セキュリティ部1326は、セッション鍵を導出する。
ステップS792において、データ検証部1325は、プロセッサメッセージカウント値を初期化して0に設定する。
ステップS793において、データ検証部1325は、プロセッサ追加メッセージカウント値を初期化して0に設定する。
ステップS794において、拡張モード対応CSI-2受信回路1322は、セッションを終了するか否かを判定し、セッションを終了しないと判定された場合、処理はステップS795に進む。
ステップS795において、データ検証部1325は、イメージセンサ1211から追加メッセージカウント値を受信したか否かを判定する。ステップS795において、データ検証部1325が、イメージセンサ1211から追加メッセージカウント値を受信したと判定した場合、処理はステップS796に進む。
ステップS796において、データ検証部1325は、プロセッサ追加メッセージカウント値と、イメージセンサ1211の追加メッセージカウント値との双方が不一致であるか否かを判定する。
ステップS796において、データ検証部1325が、プロセッサ追加メッセージカウント値と、イメージセンサ1211の追加メッセージカウント値との双方が不一致でない(一致している)と判定した場合、処理はステップS797に進む。一方、ステップS795において、データ検証部1325が、イメージセンサ1211から追加メッセージカウント値を受信していないと判定した場合も、処理はステップS797に進む。
ステップS797において、データ検証部1325は、イメージセンサ1211からメッセージカウント値を受信したか否かを判定する。ステップS797において、データ検証部1325が、イメージセンサ1211からメッセージカウント値を受信したと判定した場合、処理はステップS798に進む。
ステップS798において、データ検証部1325は、プロセッサメッセージカウント値と、イメージセンサ1211のメッセージカウント値との双方が不一致であるか否かを判定する。
ステップS798において、データ検証部1325が、プロセッサメッセージカウント値と、イメージセンサ1211のメッセージカウント値との双方が不一致でない(一致している)と判定した場合、処理はステップS799に進む。
ステップS799において、データ検証部1325は、プロセッサメッセージカウント値が最大値までカウントされたか否かを判定する。ステップS799において、データ検証部1325が、プロセッサメッセージカウント値が最大値までカウントされたと判定した場合、処理はステップS800に進む。
ステップS800において、データ検証部1325は、プロセッサメッセージカウント値を初期化して0に設定する。
ステップS801において、データ検証部1325は、プロセッサ追加メッセージカウント値が最大値までカウントされたか否かを判定する。ステップS801において、データ検証部1325が、プロセッサ追加メッセージカウント値が最大値までカウントされたと判定した場合、処理はステップS802に進む。
ステップS802において、セキュリティ部1326は、セッション鍵を更新する。
ステップS803において、データ検証部1325は、プロセッサ追加メッセージカウント値を初期化して0に設定する。その後、処理はステップS794に戻り、以下、同様の処理が繰り返して行われる。
一方、ステップS797において、データ検証部1325が、イメージセンサ1211からメッセージカウント値を受信していないと判定した場合、処理はステップS794に戻り、以下、同様の処理が繰り返して行われる。
一方、ステップS799において、データ検証部1325が、プロセッサメッセージカウント値が最大値までカウントされていないと判定した場合、処理はステップS804に進む。ステップS804において、データ検証部1325は、プロセッサメッセージカウント値をインクリメントし、その後、処理はステップS794に戻り、以下、同様の処理が繰り返して行われる。
一方、ステップS801において、データ検証部1325が、プロセッサ追加メッセージカウント値が最大値までカウントされていないと判定した場合、処理はステップS805に進む。ステップS805において、データ検証部1325は、プロセッサ追加メッセージカウント値をインクリメントし、その後、処理はステップS794に戻り、以下、同様の処理が繰り返して行われる。
一方、ステップS796において、データ検証部1325が、プロセッサ追加メッセージカウント値と、イメージセンサ1211の追加メッセージカウント値との双方が不一致であると判定した場合、処理はステップS806に進む。また、ステップS798において、データ検証部1325が、プロセッサメッセージカウント値と、イメージセンサ1211のメッセージカウント値との双方が不一致であると判定した場合も、処理はステップS806に進む。
ステップS806において、データ検証部1325は、異常が発生したとして異常時処理を行い、処理はステップS807に進む。また、ステップS794において、拡張モード対応CSI-2受信回路1322が、セッションを終了すると判定した場合も、処理はステップS807に進む。
ステップS807において、セキュリティ部1326は、セッション鍵を破棄またはクリーンアップし、その後、処理は終了される。
図115は、アプリケーションプロセッサ1212が、フレームカウント値および追加フレームカウント値を初期化ベクトルに反映する反映処理を説明する図である。
ステップS811において、セキュリティ部1326は、セッション鍵を導出する。
ステップS812において、データ検証部1325は、プロセッサフレームカウント値を初期化して1に設定する。
ステップS813において、データ検証部1325は、プロセッサ追加フレームカウント値を初期化して0に設定する。
ステップS814において、データ検証部1325は、イメージセンサ1211からフレームカウント値を受信したか否かを判定し、イメージセンサ1211からフレームカウント値を受信したと判定されるまで処理を待機する。そして、ステップS814において、データ検証部1325が、イメージセンサ1211からフレームカウント値を受信したと判定した場合、処理はステップS815に進む。
ステップS815において、セキュリティ部1326は、フレームカウント値を初期化ベクトルへ反映する。
ステップS816において、データ検証部1325は、イメージセンサ1211から追加フレームカウント値を受信したか否かを判定し、イメージセンサ1211から追加フレームカウント値を受信したと判定されるまで、処理を待機する。
そして、ステップS816において、データ検証部1325が、イメージセンサ1211からフレーム追加カウント値を受信したと判定した場合、処理はステップS817に進む。
ステップS817において、セキュリティ部1326は、追加フレームカウント値を初期化ベクトルへ反映する。
ステップS818において、データ検証部1325は、フレームカウント値および追加フレームカウント値が規定値までカウントされたか否かを判定する。ステップS818において、データ検証部1325は、フレームカウント値および追加フレームカウント値が規定値までカウントされたと判定した場合、処理はステップS819に進む。
ステップS819において、セキュリティ部1326は、セッション鍵を更新する。
ステップS819の処理後、または、ステップS818において、データ検証部1325は、フレームカウント値および追加フレームカウント値が規定値までカウントされていないと判定した場合、処理はステップS820に進む。
ステップS820において、拡張モード対応CSI-2受信回路1322は、セッションを終了するか否かを判定し、セッションを終了しないと判定された場合、処理はステップS814に戻り、以下、同様の処理が繰り返して行われる。
一方、ステップS820において、拡張モード対応CSI-2受信回路1322が、セッションを終了すると判定した場合、処理はステップS821に進む。
ステップS821において、セキュリティ部1326は、セッション鍵を破棄またはクリーンアップし、その後、処理は終了される。
なお、メッセージカウント値は1ずつインクリメントされるが、フレームカウント値(フレーム番号)のインクリメントは、シーケンス内で1または2のインクリメントが自由に混在する可能性がある。そのため、フレームカウント値および追加フレームカウント値は、イメージセンサから送信された値を優先して使用されることが望ましい。
一方、メッセージカウント値および追加メッセージカウント値は、復号演算が迅速に開始されるために、イメージセンサ1211から送信された値よりもアプリケーションプロセッサ1212がカウントした値が優先して使用されてもよい。なお、図114および図115のフローチャートを参照して説明した処理は、セッション鍵を更新しないように構成されてもよい。
略語はそれぞれ、eP:extended Packet、eVC:extended Virtual Channel、eDT:extended Data Type、である。AES-GCM/GMAC向けの初期化ベクトル例を示したが、本技術は、AES以外のブロック暗号(例えば、DES:Data Encryption Standard、トリプルDES)向けや、GCM/GMAC以外のアルゴリズム(例えば、CCM:Counter with Cipher block chaining-MAC)向けや、異なる鍵長(例えば、128 bits以外)向けや、異なるIV長(例えば、96 bits以外)向けに、必要に応じて構成要素や並び順や数値などが調整された上で適用されてもよい。
一般に公開されているDMTF(Distributed Management Task Force)によるSPDM仕様内のKEY_EXCHANGE request message内のRandomDataまたはOpaqueData、Successful KEY_EXCHANGE_RSP response message内のRandomData、PSK_EXCHANGE request message内のRequesterContextまたはOpaquePSKData、PSK_EXCHANGE_RSP message内のResponderContextの一部または全部がソルトとして用いられてもよい。
一方、セッションIDは、例えば、PSK_EXCHANGE_RSP message内またはKEY_EXCHANGE_RSP response message内のParam2内に1Byteで格納されて、SPDMレスポンダ(例えば、イメージセンサ)からSPDMリクエスタへ送信される。なお、PSK_EXCHANGE_RSP messageとKEY_EXCHANGE_RSP response messageとはSPDMオプションであるが、SPDMセッション鍵を導出するためには共通鍵暗号方式に対応するPSK_EXCHANGE_RSP messageまたは公開鍵暗号方式に対応するKEY_EXCHANGE_RSP response messageが実質的に必須であり、そのセッションIDが初期化ベクトル内に含まれてもよい。ただし、セッションIDは、同じエンドポイントへ対する以前の5つのセッションまたはアクティブなセッションとは異なることが望ましい。
また、PSK_EXCHANGE request messageまたはKEY_EXCHANGE request messageがリクエスタ側セッションIDとしてReqSessionID(例えば、2バイト)を含み、PSK_EXCHANGE_RSP response messageまたはSuccessful KEY_EXCHANGE_RSP response messageがレスポンダ側セッションIDとしてRspSessionID(例えば、2バイト)を含み、これら2つを連結した(例えば、4バイトの)session ID = Concatenate (ReqSessionID, RspSessionID) がリクエスタとレスポンダとの間のユニークなセッションIDとして用いられてもよい。その場合、複数種類のセッション間で、セッション鍵またはメッセージカウンタが共通化されることが可能になる。
一方、ディスプレイ用途(例えば、DSI-2)では、SPDMでなくHDCP(High-bandwidth Digital Content Protection)がセキュリティプロトコルとして用いられてもよいため、SPDMなのかHDCPなのかを識別できるセキュリティプロトコル情報(図116参照)が初期化ベクトル内に含まれてもよい。ただし、図116には、2ビット割り当てのセキュリティプロトコル情報が示されているが、異なるビット数の割り当て(例えば、1ビット、8ビット)でもよい。また、リザーブド領域データ(Reserved for future use)には、セキュリティプロトコルに対応しないこと(例えば、No security protocol)が割り当てられてもよい。
例えば、新たなフォーマット内、ePHフォーマット(例えば、Reserved、eVC、eDT、Security Descriptor)内またはセッションID内などの何れかに、SPDM専用またはHDCP専用のビットが割り当てられて定義され、それが初期化ベクトル内に含まれてもよい。その場合、複数種類のセキュリティプロトコル間で、セッション鍵またはメッセージカウンタが共通化されることが可能になる。同様に、拡張パケットヘッダ内の一部が初期化ベクトル内に含まれてもよく、例えば、Security Descriptor(例えば、Service Descriptorと称されてもよい)が初期化ベクトル内に含まれてもよい。その場合、異なるSecurity Descriptor間で、セッション鍵またはメッセージカウンタが共通化されることが可能になる。
イメージセンサ1211またはアプリケーションプロセッサ1212は、図117に示すようなSource IDまたはFinal Destination IDとして、事前交換ではなく、拡張パケットヘッダ(例えば、ePH4)内に格納されて受信された値を用いてもよい。
なお、3つ以上の機器(例えば、複数のカメラ、複数のディスプレイ)をケーブルで繋いで通信する接続形態として、前の機器に次の機器を「数珠繋ぎ」に連結するデイジーチェーン方式があり、Source ID(ソースID)およびFinal Destination ID(最終目的地ID)が初期化ベクトル内に含まれることによって、複数の機器間で、セッション鍵またはメッセージカウンタが共通化されることが可能になる。
ただし、Source IDとFinal Destination IDとは、例えば、イメージセンサへのコマンドなのか、イメージセンサからのデータなのか、によって入れ替わる。これを避けるために、初期化ベクトル内のSource IDおよびFinal Destination IDを、例えば、Host IDおよびDevice IDと定義してもよい。ただし、例えばイメージセンサはホストにもデバイス(非ホスト)にもなり得るので、Source IDおよびFinal Destination IDと定義した方が望ましい場合もある。
そのため、例えば、Source IDおよびFinal destination IDを論理演算(例えば、XOR)したIDが用いられてもよい。その場合、初期化ベクトル内に定義されるビット幅が節約される効果もある。なお、Source IDまたはFinal Destination IDは、I2CまたはI3Cの場合、上述した図117に示したようにMaster addressまたはSlave addressが格納されてもよい。
なお、例えば、上述した図86のデータ構造でイメージセンサ1211からアプリケーションプロセッサ1212へ画像データを送信する場合、E2E protectionを実現するために、イメージセンサ1211のデバイスIDがSource IDとして、アプリケーションプロセッサ1212のデバイスIDがFinal Destination IDとして格納される。
一方、例えば、上述した図86のデータ構造でアプリケーションプロセッサ1212からイメージセンサ1211へコマンド命令を送信する場合、E2E protectionを実現するために、アプリケーションプロセッサ1212のデバイスIDがSource IDとして、イメージセンサ1211のデバイスIDがFinal Destination IDとして格納される。その場合、図2に示したようなSerDes装置25またはSerDes装置26のデバイスIDは、中間的なDestination IDであり、Final Destination IDと区別されることが望ましい場合もある。ただし、場合によっては、IVフォーマットのFinal Destination IDは、Destination IDと置き換えられてもよい。また、eVCをVCと置き換えられてもよく、eDTをDTと置き換えられてもよい。
また、eVCまたはVCは、Video stream、Audio stream、Camera stream、またはDisplay Streamなどの何れかのID(Stream ID)であってもよい。また、Video streamでなくAudio streamがストリームとして用いられてもよいため、Video streamなのかAudio streamなのかを識別できるストリーム情報が初期化ベクトル内に含まれてもよい。その場合、Video streamとAudio streamとの間で、セッション鍵またはメッセージカウンタが共通化されることが可能になる。
ナンス値の一部または全部は、異なるバーチャルチャネルのデータ内(例えば、フレームスタート内、埋込データ内、画像データ内、フレームエンド内)へ格納されて送信されてもよい。これは、例えば、特定のバーチャルチャネルのデータ内へナンス値の一部または全部を格納する余地がない場合に有効である。
一方、ナンス値の一部または全部は、画像データ送信のバーチャルチャネルとは異なるバーチャルチャネルの、パケットデータ(Generic Short Packet Data Types、Generic Long Packet Data Types)またはユーザ定義データ(User Defined Byte-based Data)またはリザーブド領域データ(Reserved for future use)の少なくとも一部内へ格納されて送信されてもよい。つまり、それらは非画像データ内に格納されてもよい。
なお、以上の説明では、撮像開始を明記しているが、撮像終了について明記してない。これは撮像方式がグローバルシャッタ方式なのかローリングシャッタ方式なのか等によって異なるためである。例えば、グローバルシャッタ方式であれば、全画素を一斉に撮像できるので、次処理の前までに撮像終了してもよいし、フレーム内の最初の画像データを送信する前までに撮像終了してもよい。一方、ローリングシャッタ方式であれば、画素の各行で実行される撮像および高速データ送信の少なくとも一部が重複して実行(並列実行)されてもよいため、フレーム内の最後の画像データを送信する前までに撮像終了すればよい。また、撮像開始の位置は一例であり、フレーム内の最初の画像データを送信する前の位置まで遅らせて実行されてもよい。
<コンピュータの構成例>
図118は、上述した一連の処理をプログラムにより実行するコンピュータのハードウエアの構成例を示すブロック図である。
コンピュータにおいて、CPU(Central Processing Unit)2201,ROM(Read Only Memory)2202,RAM(Random Access Memory)2203、およびEEPROM(Electronically Erasable and Programmable Read Only Memory)2204は、バス2205により相互に接続されている。バス2205には、さらに、入出力インタフェース2206が接続されており、入出力インタフェース2206が外部に接続される。
以上のように構成されるコンピュータでは、CPU2201が、例えば、ROM2202およびEEPROM2204に記憶されているプログラムを、バス2205を介してRAM2203にロードして実行することにより、上述した一連の処理が行われる。また、コンピュータ(CPU2201)が実行するプログラムは、ROM2202に予め書き込んでおく他、入出力インタフェース2206を介して外部からEEPROM2204にインストールしたり、更新したりすることができる。
ここで、本明細書において、コンピュータがプログラムに従って行う処理は、必ずしもフローチャートとして記載された順序に沿って時系列に行われる必要はない。すなわち、コンピュータがプログラムに従って行う処理は、並列的あるいは個別に実行される処理(例えば、並列処理あるいはオブジェクトによる処理)も含む。
また、プログラムは、1のコンピュータ(プロセッサ)により処理されるものであっても良いし、複数のコンピュータによって分散処理されるものであっても良い。さらに、プログラムは、遠方のコンピュータに転送されて実行されるものであっても良い。
さらに、本明細書において、システムとは、複数の構成要素(装置、モジュール(部品)等)の集合を意味し、すべての構成要素が同一筐体中にあるか否かは問わない。したがって、別個の筐体に収納され、ネットワークを介して接続されている複数の装置、及び、1つの筐体の中に複数のモジュールが収納されている1つの装置は、いずれも、システムである。
また、例えば、1つの装置(または処理部)として説明した構成を分割し、複数の装置(または処理部)として構成するようにしてもよい。逆に、以上において複数の装置(または処理部)として説明した構成をまとめて1つの装置(または処理部)として構成されるようにしてもよい。また、各装置(または各処理部)の構成に上述した以外の構成を付加するようにしてももちろんよい。さらに、システム全体としての構成や動作が実質的に同じであれば、ある装置(または処理部)の構成の一部を他の装置(または他の処理部)の構成に含めるようにしてもよい。
また、例えば、本技術は、1つの機能を、ネットワークを介して複数の装置で分担、共同して処理するクラウドコンピューティングの構成をとることができる。
また、例えば、上述したプログラムは、任意の装置において実行することができる。その場合、その装置が、必要な機能(機能ブロック等)を有し、必要な情報を得ることができるようにすればよい。
また、例えば、上述のフローチャートで説明した各ステップは、1つの装置で実行する他、複数の装置で分担して実行することができる。さらに、1つのステップに複数の処理が含まれる場合には、その1つのステップに含まれる複数の処理は、1つの装置で実行する他、複数の装置で分担して実行することができる。換言するに、1つのステップに含まれる複数の処理を、複数のステップの処理として実行することもできる。逆に、複数のステップとして説明した処理を1つのステップとしてまとめて実行することもできる。
なお、コンピュータが実行するプログラムは、プログラムを記述するステップの処理が、本明細書で説明する順序に沿って時系列に実行されるようにしても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで個別に実行されるようにしても良い。つまり、矛盾が生じない限り、各ステップの処理が上述した順序と異なる順序で実行されるようにしてもよい。さらに、このプログラムを記述するステップの処理が、他のプログラムの処理と並列に実行されるようにしても良いし、他のプログラムの処理と組み合わせて実行されるようにしても良い。
なお、本明細書において複数説明した本技術は、矛盾が生じない限り、それぞれ独立に単体で実施することができる。もちろん、任意の複数の本技術を併用して実施することもできる。例えば、いずれかの実施の形態において説明した本技術の一部または全部を、他の実施の形態において説明した本技術の一部または全部と組み合わせて実施することもできる。また、上述した任意の本技術の一部または全部を、上述していない他の技術と併用して実施することもできる。
<構成の組み合わせ例>
なお、本技術は以下のような構成も取ることができる。
(1)
他の情報処理装置と通信を行って、画像データを含むフレームのデータを高速データ送信する際に、拡張パケットヘッダおよびパケットデータを含む拡張パケットを前記他の情報処理装置に送信する通信部と、
セッション鍵を導出し、前記セッション鍵を用いて前記パケットデータの第1保護データを生成する第1保護部と、
前記第1保護データを生成するたびに前記セッション鍵へ対してのナンス値を更新するナンス更新部と
を備え、
前記画像データは、前記パケットデータ内に格納され、
前記高速データ送信は、前記ナンス値の一部または全部の送信を含み、
前記ナンス値の一部または全部は、前記拡張パケットヘッダ外に格納されて送信される
情報処理装置。
(2)
前記通信部は、前記高速データ送信に関連するコマンドが前記他の情報処理装置から送信されてくる低速コマンド送信で、前記高速データ送信の開始を要求する高速データ送信開始命令を受信し、
前記高速データ送信は、前記低速コマンド送信と比較して高速であって、前記高速データ送信開始命令の受信に応じて開始され、前記フレームが開始されることを示すフレームスタートの送信、および、前記フレームが終了されることを示すフレームエンドの送信が少なくとも行われ、
前記フレームは、複数個が連続的かつ周期的に送信されることが可能であり、前記フレームエンドと次の前記フレームスタートとの間に前記画像データが送信されないフレームブランキングを含む
上記(1)に記載の情報処理装置。
(3)
前記低速コマンド送信は、前記情報処理装置内の情報を前記プロセッサへ読み出すことを要求する読み出し命令の送信を含み、
前記ナンス値の一部または全部は、前記読み出し命令に応じた読み出し応答として、前記フレームブランキングの期間内に送信される
上記(2)に記載の情報処理装置。
(4)
前記フレームは、前記フレームスタートと前記フレームエンドとの間の期間内に前記高速データ送信される埋込データを含み、
前記埋込データは、前記画像データに関連するメタデータを含み、
前記ナンス値の一部または全部は、前記埋込データ内に格納されて送信される
上記(2)または(3)に記載の情報処理装置。
(5)
前記低速コマンド送信は、前記情報処理装置内の情報を前記プロセッサへ読み出すことを要求する読み出し命令の送信を含み、
前記フレームは、前記フレームスタートと前記フレームエンドとの間に前記画像データが送信されないラインブランキングを含み、
前記ナンス値の一部または全部は、前記読み出し命令に応じた読み出し応答として、前記ラインブランキングの期間内に送信される
上記(2)から(4)までのいずれかに記載の情報処理装置。
(6)
前記フレームは、第1バーチャルチャネルである前記画像データとは異なる第2バーチャルチャネルのデータを含み、
前記ナンス値の一部または全部は、前記第2バーチャルチャネルのデータ内に格納されて送信される
上記(1)から(5)までのいずれかに記載の情報処理装置。
(7)
前記ナンス値の一部の残りの一部または全部は、前記拡張パケットヘッダ内に格納されて送信される
上記(1)から(6)までのいずれかに記載の情報処理装置。
(8)
前記高速データ送信は、前記フレームが開始されることを示すフレームスタートの送信、および、前記フレームが終了されることを示すフレームエンドの送信を含み、
前記ナンス値の一部または全部は、前記フレームスタート内またはフレームエンド内に格納されて送信される
上記(1)から(7)までのいずれかに記載の情報処理装置。
(9)
前記ナンス値の一部または全部は、前記第1保護データを演算する際の初期化ベクトルの一部として用いられ、
前記初期化ベクトルは、前記通信の拡張仮想チャネルに関連する情報を含む
上記(1)から(8)までのいずれかに記載の情報処理装置。
(10)
前記ナンス値の一部または全部は、前記第1保護データを演算する際の初期化ベクトルの一部として用いられ、
前記初期化ベクトルは、前記通信の拡張データタイプに関連する情報を含む
上記(1)から(9)までのいずれかに記載の情報処理装置。
(11)
前記ナンス値の一部または全部は、前記第1保護データを演算する際の初期化ベクトルの一部として用いられ、
前記初期化ベクトルは、前記通信のSPDM(Security Protocol and Data Model)セッションIDに関連する情報を含む
上記(1)から(10)までのいずれかに記載の情報処理装置。
(12)
前記ナンス値の一部または全部は、前記第1保護データを演算する際の初期化ベクトルの一部として用いられ、
前記初期化ベクトルは、SPDMまたはHDCP(High-bandwidth Digital Content Protection)を識別する情報を含む
上記(1)から(11)までのいずれかに記載の情報処理装置。
(13)
前記ナンス値の一部または全部は、前記第1保護データを演算する際の初期化ベクトルの一部として用いられ、
前記初期化ベクトルは、前記通信のソースIDに関連する情報を含む
上記(1)から(12)までのいずれかに記載の情報処理装置。
(14)
前記ナンス値の一部または全部は、前記第1保護データを演算する際の初期化ベクトルの一部として用いられ、
前記初期化ベクトルは、前記通信の最終目的地IDに関連する情報を含む
上記(1)から(13)までのいずれかに記載の情報処理装置。
(15)
所定カウント条件を満たす拡張パケットを送信するたびにメッセージカウント値を更新するメッセージカウンタをさらに備え、
前記メッセージカウント値は、前記拡張パケットヘッダ内に格納され、
前記ナンス値および前記メッセージカウント値は、更新が同期される
上記(1)から(14)までのいずれかに記載の情報処理装置。
(16)
所定カウント条件を満たす拡張パケットを送信するたびにメッセージカウント値を更新するメッセージカウンタをさらに備え、
前記メッセージカウント値は、前記拡張パケットヘッダ内に格納され、
前記ナンス更新部と前記メッセージカウンタとは、別体であり、前記ナンス値と前記メッセージカウント値とは、更新が非同期である
上記(1)から(15)までのいずれかに記載の情報処理装置。
(17)
前記拡張パケットは、拡張パケットフッタを含み、前記第1保護部は、前記セッション鍵を用いて完全性演算値を生成し、
前記完全性演算値は、少なくとも前記パケットデータを保護し、前記拡張パケットフッタ内に格納される
上記(1)から(16)までのいずれかに記載の情報処理装置。
(18)
前記第1保護部は、前記セッション鍵を用いて完全性演算値を生成し、
前記完全性演算値は、少なくとも前記画像データを保護し、前記画像データとは異なるパケットデータ内に格納される
上記(1)から(17)までのいずれかに記載の情報処理装置。
(19)
画像データを出力する画素と、
他の情報処理装置と通信を行って、前記画像データを含むフレームのデータを高速データ送信する際に、拡張パケットヘッダおよびパケットデータを含む拡張パケットを前記他の情報処理装置に送信する通信部と、
セッション鍵を導出し、前記セッション鍵を用いて前記パケットデータの第1保護データを生成する第1保護部と、
前記第1保護データを生成するたびに前記セッション鍵へ対してのナンス値を更新するナンス更新部と
を有し、
前記画像データは、前記パケットデータ内に格納され、
前記高速データ送信は、前記ナンス値の一部または全部の送信を含み、
前記ナンス値の一部または全部は、前記拡張パケットヘッダ外に格納されて送信される
情報処理装置を備える移動体装置。
(20)
他の情報処理装置と通信を行って、画像データを含むフレームのデータを高速データ送信する際に、拡張パケットヘッダおよびパケットデータを含む拡張パケットを前記他の情報処理装置に送信する通信部と、
セッション鍵を導出し、前記セッション鍵を用いて前記パケットデータの第1保護データを生成する第1保護部と、
前記第1保護データを生成するたびに前記セッション鍵へ対してのナンス値を更新するナンス更新部と
を有し、
前記画像データは、前記パケットデータ内に格納され、
前記高速データ送信は、前記ナンス値の一部または全部の送信を含み、
前記ナンス値の一部または全部は、前記拡張パケットヘッダ外に格納されて送信される
情報処理装置を備える通信システム。
なお、本実施の形態は、上述した実施の形態に限定されるものではなく、本開示の要旨を逸脱しない範囲において種々の変更が可能である。また、本明細書に記載された効果はあくまで例示であって限定されるものではなく、他の効果があってもよい。