FlexRayプロトコルの概要(その2):次世代車載ネットワーク FlexRay入門(3)(1/3 ページ)
「FlexRayプロトコルの概要」第2弾。今回は、「エンコーディング/デコーディング」や「同期方法」など、FlexRayプロトコルのその他の項目を紹介する。
連載第2回「FlexRayプロトコルの概要(その1)」では、「通信構造/バスアクセス」「タイミング」「フレームフォーマット」「通信コントローラの状態遷移」の概要を紹介しました。
第3回はFlexRayプロトコルの他の項目、「エンコーディング/デコーディング」「同期方法」「スタートアップ」について説明します。
フレームやシンボルといった通信データをノードが送信する際に、どのようにビット列にエンコーディング(符号化)され、また受信ノードにてどのようにデコーディング(復号)されて、信頼性の高い、確実な通信が実現されているのかを紹介します。
以下の図1は、ダイナミックフレームをエンコーディングした際のビット列になります。「DTS」という部分以外はスタティックフレームも同じ構造を持っています。
図1 フレームのエンコーディング(※ベクター・ジャパンの資料を基に作成)
※CID(Channel Idle Delimiter):連続したHighビット(11ビット)。フレームの後、次のチャンネルアイドルまでの「マージン」部分となる
- TSS(Transmission Start Sequence):
- フレームの先頭を示す連続したLowビット(3〜15ビット)。アクティブスターや受信ノードにて、このTSSを短くする(切り捨てる)ことによって、バスドライバーの処理などで発生する遅延時間をできるだけ小さくする
- FSS(Frame Start Sequence):
- TSSの終了を示す1ビット−High(論理‘1’)
- BSS(Byte Start Sequence):
- 8ビットのデータが続くことを示す2ビット−High/Low(論理‘10’)。受信ノードでは、この‘10’の立ち下がりエッジを利用してタイミングの補正を行う
- 通信データの各バイトは、このBSSに続く8ビットで送信される。BSS(2ビット)とそれに続く8ビットの計10ビットがバイトエンコーディングの基本的な単位となる
- フレームの最後を示す2ビット−Low/High(論理‘01’)
- DTS(Dynamic Trailing Sequence):
- ダイナミックフレームのFES直後に付加される。スタティックフレームでは、このシーケンスは付加されない。可変のLow/HighでLowの長さでフレーム長を調整する
大きく2つのプロセスに分けられます。
(1)受信信号サンプリング/ノイズフィルター実施
(2)ビットクロック調整/ビット値の決定
図2 デコーティングの概観(※ベクター・ジャパンの資料を基に作成)
サンプリング→多数決フィルターで値を調整→ビットクロックを調整→ビット値を決定
(1)受信信号サンプリング/ノイズフィルター実施
まず通信コントローラが受け取った受信(RxD)信号に対して、各ノードのサンプルクロックを基に1ビット当たり8個のサンプルを取ります。FlexRayでのバス信号はノイズを低減するための差動信号になっていますので、このままでは大きなノイズまで取得してしまいます。そのため、“多数決(Majority Voting)”フィルターという処理を実施し、ノイズを取り除きます。
図3 差動信号から受信信号(RxD)に変換(※ベクター・ジャパンの資料を基に作成)
※FlexRayの差動信号はバス・プラス(BP)とバス・マイナス(BM)と呼ばれる2つの信号線間で測定される
図4 多数決(Majority Voting)フィルターの詳細(※ベクター・ジャパンの資料を基に作成)
・サンプルクロックごとに多数決フィルター用のサンプルを5つ取る。サンプルクロックの立ち上がりエッジ(図の赤丸部分)の値をサンプル値として取得し、FIFO(ファーストインファーストアウト)で保持する
・5つのサンプル中で‘0’と‘1’、多い方を「フィルター後の値」として採用する。これによりノイズを除去する
・受信信号が変化に合わせてフィルター後の値も変化するが、2サンプルクロック分の遅延を伴う
(2)ビットクロック調整/ビット値の決定
多数決フィルターにて値を調整した後、今度はビットレベルのタイミングについて調整を行い、最終的なビット値を決めます。
ビットクロック調整はビット列のBSS部分など、決まったタイミングで必ず発生する立ち下がりエッジ(1→0)を基準として行います。各ノードでは、サンプルクロックを基に1ビット当たり8つのサンプルをサンプルカウンターでカウントしており、立ち下がりエッジを検出してから次のクロックでサンプルカウンターを“2”にリセットします。これにより、立ち下がりエッジを検出したクロックでカウンターが“1”にリセットされる場合と同等の動作となり、タイミングが修正されます。この後、サンプルカウンターが“5”のときの“多数決フィルター後の値”をビット値として採用します。
図5 ビットクロックの調整/ビット値の決定の例
(※ベクター・ジャパンの資料を基に作成)
・ビット同期用のエッジを検出してから次のクロックを“2”にリセットして調整
・サンプルカウンターが“5”のときの多数決フィルターで調整された値を確認
・それを参照してビット値を決定
Copyright © ITmedia, Inc. All Rights Reserved.