FlexRayプロトコルの概要(その1):次世代車載ネットワーク FlexRay入門(2)(2/2 ページ)
今回は、FlexRayプロトコルのうち「通信構造/バスアクセス」「タイミング」「フレームフォーマット」「通信コントローラの状態遷移」の概要を紹介する
3.フレームフォーマット
次に、これまで紹介してきたスロットで送信されるフレームの具体的な構造や主な種類を紹介します。
フレームは「ヘッダー(Header)」「ペイロード(Payload)」「トレーラー(Trailer)」の3つのセグメントから構成されており、この構造はスタティックセグメントで送信されるフレーム(=スタティックフレーム)とダイナミックセグメントにて送信されるフレーム(=ダイナミックフレーム)で共通です。
それぞれのセグメントに格納されるデータは以下になります。
- ヘッダー(40ビット)
- リザーブ(Reserved)(1ビット):今後の拡張のための予約ビットです。通常「0」が設定されます。
- ペイロードプリアンブルインジケーター(Payload Preamble Indicator)(1ビット):ペイロードの一部を特別な目的に使用するかどうかを示します。
- Nullフレームインジケーター(Null Frame Indicator)(1ビット):フレームがNullフレームかどうかを示します。
- 同期フレームインジケーター(Sync Frame Indicator)(1ビット):フレームが同期フレームかどうかを示します。
- スタートアップフレームインジケーター(Startup Frame Indicator)(1ビット):フレームがスタートアップフレームかどうかを示します。
- フレームID(Identifier)(11ビット):フレームIDを定義します。取り得る値は1〜2047。0は無効です。
- ペイロード長(Payload Length)(7ビット):ペイロード部分の長さを単位「Word」で示します(※1Word=バイト)。
- ヘッダーCRC(Header CRC)(11ビット):ヘッダー中の同期フレームインジケーター、スタートアップフレームインジケーター、フレームID、ペイロード長部分を保護するCRC(Cyclic Redundancy Check/巡回冗長検査)コードです。
- サイクルカウント(Cycle Count)(6ビット):サイクルカウンタ数を示します。取り得る値は0〜63です。
- ペイロード(0〜2032ビット)
- データが格納される部分です。最大127Words(=254バイト)のデータを定義できます。
- トレーラー(24ビット)
- フレームCRC(Frame CRC):ヘッダー全体とペイロードを保護するCRCです。
ペイロードプリアンブルインジケーター
ペイロードの一部を特別な目的に使用するかどうかを示すビットとなり、その用途はスタティックフレームとダイナミックフレームで異なります。
スタティックフレームではペイロードセグメントの最初の0〜12バイトにネットワークマネジメントの情報を、ダイナミックフレームではペイロードセグメントの最初の2バイトにメッセージIDを定義できます。
Nullフレーム
ペイロードに使用できるデータを載せていないフレーム、つまり“データが使われない”フレームです。フレームのヘッダーセグメントのNullフレームインジケーターが「0」のとき、そのフレームはNullフレームとなり、ペイロードデータはすべて「0」となります。このフレームは、例えばサイクルマルチプレキシングの未使用スロットでの送信など、送るべきデータがないとき、またはコントローラでのフィルター条件に合致した場合、スタティックセグメントでのみ送信されます。
同期フレーム
同期補正を実行する際に使用されるフレームです。
スタートアップフレーム
クラスタ全体の通信開始時に、同期を図るために使用するフレームです。
4.通信コントローラの状態遷移(POC:Protocol Operation Control)
連載第1回で紹介したように、FlexRayノードにはホスト、通信コントローラ、バスドライバーといった複数の機能体が搭載されており、その中の通信コントローラにはプロトコルを制御する「プロトコルオペレーションコントロール(POC)」というメカニズムが備わっています。ここでは、このPOCの状態がどのように遷移するのかを簡単に説明します。
各プロセスとPOCとの関係は次の図で表せます(POCとアプリケーションの一部であるホストとの通信を行うインターフェイスをコントローラホストインターフェイス(CHI)といいます)。
このPOCが取り得る状態や遷移条件などの関連性を示した図が以下になります。通常、これらの状態はホストからCHIを経由して変更されますが、下図の(*)部分はPOC自身によって、(**)部分はPOCまたはCHIによって変更されます。
ここで懸案となるのが、“致命的なエラーが発生した状態”であるホールト(halt)に遷移する条件です。FlexRayではプロトコルの判断により通信を中止することはなく、エラーの種類やノーマルアクティブからノーマルパッシブに遷移する条件、ホールトに遷移する条件などはあくまでもアプリケーションで行われます。POCは実際のエラー処理を行います。
以上、今回はFlexRayの通信構造やタイミングなど、基本的な部分を簡単に説明しました。次回はエンコーディング/デコーディングや同期方法など、プロトコルの他項目を紹介します。ご期待ください。(次回に続く)
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
Copyright © ITmedia, Inc. All Rights Reserved.