概要
本稿では、ワイヤレス・システムのテストを実施するにあたって検討すべき重要な事柄について説明します。具体的には、システム・レベルのテストにおけるタイミングと同期について詳しく解説します。特に、トランスミッタ・ブロックとレシーバー・ブロックの間で、一定の誤差マージンの範囲内でデータを転送するためには、タイミングと同期がどれほど重要であるのかを明らかにします。本稿で説明する内容は、ワイヤレス・システムのテスト・ケースの作成に役立てることができます。そうしたテスト・ケースにより、機能に関する仕様やそれ以外の仕様、システム境界、バグについて検証することで、システムの同期を確保し、信頼性を高めることが可能になります。
はじめに
ワイヤレス技術の急速な進歩により、通信の分野では新しい時代への扉が開かれました。現在、ワイヤレス通信はあらゆる場面で活用されています。例えば、通信、医療、自動車、宇宙探査といった分野でイノベーションの促進に大いに貢献しています。ワイヤレス通信の市場は、既に十分に確立されています。ただ、現在でも31%のCAGR(年平均成長率)という力強い成長を見せています。その市場規模は、2019年の時点で1兆4313億米ドル(約163兆円)のレベルでした。それが、2024年までには5兆5194億米ドル(約629兆円)の規模に達する見込みです。ワイヤレス技術は現在も進化を続けており、より高い精度、運用効率、データ・レート、コストの削減効果が得られるようになっています。その結果、迅速な意思決定が可能になり、更なる可能性が開かれつつあります。しかし、そうした進化にはデバイスの機能の増加が伴います。そうすると、ワイヤレス・システムのテストの複雑さも増大します。
どのようなワイヤレス・システムでも、正確なタイミングと同期は重要な要素です。これらは、適切な動作を実現するための基本的な要件だと言えます。ここで言うタイミングと同期の処理とは、システム内のトランスミッタとレシーバーの両方のクロックを、所定の許容誤差の範囲内に収めることです。それにより、パケットの完全性が最大限に確保され、データ・フローが最適化されます。ワイヤレス・システムを開発したりテストしたりする際には、タイミングと同期について詳細に検討することが必須です。しかし、よく知られているようにクロック源にはドリフトが存在します。そのため、タイミングと同期に関する要件を満たすのは容易ではありません。ドリフトがマイクロ秒単位の些細なものであったとしても、時間の経過に伴って誤差が蓄積されれば、システムの同期が損なわれてしまうおそれがあります。完璧に同期が確立されたワイヤレス・システムが得られるのは、クロックが完璧にマッチングしている場合だけです。しかし、現実のシステムでそれを実現するのは非常に困難です。ドリフトはクロックの本質的な性質です。そのドリフトによってクロックのカウント時間に差異が生じ、最終的には同期が損なわれる可能性があるのです。
厳密な同期が確立されていないシステムでは、送信能力が十分に得られなくなり、データの質が低下するおそれがあります。また、データの完全性が失われることで、動作障害に至る可能性もあります。アプリケーションの中には、人々の健康、セキュリティの確保、安全性の維持に関わるものがあります。そうしたアプリケーションの動作に不具合が生じるというのは、極めて重大な問題です。場合によっては、法的な責任を問われたり、顧客の信用を失ったりすることもあり得ます。
このように、システムに対しては、正確な同期が強く求められます。そのため、精度や可動度などの要件に応じ、同期を確立するためには様々な手法が適用されます。例えば、図1~図3に示すような手法が存在します。
送信側と受信側に基づく同期
受信側と受信側に基づく同期
遅延の測定に基づく同期
送信側(Tx)と受信側(Rx)に基づく同期では、双方向にメッセージを交換します。その一例としては、TPSN(Timing-sync Protocol for Sensor Networks)が挙げられます。TPSNでは、ノード間で同期パルスのパケットを送受信することでネットワークの同期を確立します。そのために、まずはタイムスタンプを利用し、それぞれの伝送における時間オフセットを計算します。それにより、クロックの時間差を特定します。その値を利用することで、ノード間の同期を確立することが可能になります。
一方向のメッセージ交換を利用する同期の例としては、SFD(Start of Frame Detect)に基づく方法が挙げられます。この種の同期は、RBS(Reference Broadcast Synchronization)で使われています。
遅延の測定に基づく同期では、受信側と受信側に基づく同期と同様に、一方向のメッセージ交換を行います。但し、遅延の値の測定が行われる点が異なります。この手法の例としては、DMTS(Delay Measurement Time Synchronization)が挙げられます。
タイミングと同期に関するパラメータ
ここでは、TPSNを採用したワイヤレス・システムにおいて、タイミングと同期に関連して使用される様々なパラメータについて説明します。まず、各パラメータがシステムの全体的な機能に与える影響について確認します。その上で、安定性が高く同期が確立されたシステムを実現するためには、それらのパラメータをどのように設定すればよいのか説明します。これらのパラメータは、ワイヤレス・システムについてシステム・レベルのテストを実施する際、タイミングと同期に関連するバグやシステム境界を特定する上で役に立ちます。
同期リファレンス
無線システムを利用すれば、次のようなことが可能になります。すなわち、ソフトウェアによって、同期リファレンス・ポイントを使ってコマンドの正確な送受信をスケジュールできるようになります。リファレンス・ポイントに正のオフセットを加えてイベントをスケジュールすることにより、トランスミッタとレシーバーの間の同期をとることが可能になります。以下、ワイヤレス・システムで一般的に使用されるリファレンス・ポイントを列挙し、それぞれの概要を説明します。
Sync Now
同期リファレンス・ポイントは、sync コマンド(set_sync_ref(NOW))が処理される時間に設定されます。
図 4 は、set_sync_ref(NOW) コマンドによって設定されたリファレンスを基準としてパケットが送信される様子を表したものです。
Sync SFD
同期リファレンス・ポイントは、フレームの開始時点(SOF:Start of Frame)に設定されます。これは、有効な sync ワードが検出されたことを表します。
コマンド(set_sync_ref(SFD))が送信されたら、リファレンス・ポイントは、その後の最初のフレーム開始検出(SFD)の直後の時点に設定されます。図 5 において、2 つ目の送信パケットは、SFDのリファレンス・ポイントを基準として送信されています。
Sync Latest
この同期モードでは、SOF が現れる度に、その時点が同期リファレンス・ポイントとして設定されます。図6 に示すように、有効なパケットの sync ワードを受信する度に、同期リファレンス・ポイントが最新の SOF のタイムスタンプに更新されます。
これらの同期モードを使用することにより、2つのノード間の同期をとることができます。しかし、先述したように、ハードウェア・ベースのクロックにはドリフトが生じます。つまり、その周波数は時間が経過するにつれて変化し、不適切な値になる可能性があるということです。この事実を強く認識しておかなければなりません。ドリフトの影響により、任意の時点における複数のクロックは、互いに異なるものになっている可能性があるからです。そうしたドリフトや周波数のずれの影響を最小限に抑えるには、どうすればよいのでしょうか。そのためには、送信クロックと受信クロックの同期リファレンス・ポイントを繰り返し更新するとよいでしょう。
時間オフセット
時間オフセットとは、時間の取得の開始時または同期リファレンス・ポイントと、現在の時刻の間の時間差のことです(図7)。このパラメータは、送信時または受信時に使用されます。
送信/受信コマンドを実行するためには、ある程度の時間を確保する必要があります。つまり、最小許容時間(Minimum Time Offset Start)が存在します。このパラメータは、API(Application Programming Interface)と無線による処理によって生じる遅延に基づいて計算されます。その値よりも短い時間内に送受信が開始されると、スケジュール・エラーが発生して送信/受信処理が失敗に終わる可能性があります。
図8に示すのは、時間オフセットが最小許容時間よりも短い場合の例です。このようなケースには、時間オフセットが経過した後の時間に、コマンドがスケジュールされることになります。
同じ同期リファレンスを基準とする2つの送受信コマンド(Tx-TxまたはRx-Rx)を連続して実行するケースもあり得ます。その場合、最初のパケットのサイズが、2つ目のコマンドを正しく実行するための時間オフセットを決定する重要な要素になります。最初のパケットのサイズが大きいほど、2つ目のコマンドの時間オフセットを長くとらなければなりません。さもなければ、処理が正しく行われることを保証できなくなります。時間オフセットが最小許容時間よりも短い場合には、最初のパケットの処理をまだ実行している間に2つ目のパケットがスケジュールされることになります。結果として、その処理は失敗に終わります(図9)。
最大時間オフセット
もう1つ、最大時間オフセットというパラメータも存在します。これは、設定された時間外にパケットがスケジュールされることを防ぐために使用されます。同期リファレンスからあまりにも離れた時間にパケットをスケジュールすると、クロックのドリフトが原因で、信号検出のタイムアウトまたはSOFのタイムアウトが発生する可能性があります。これらのタイムアウトについては後述します。
ターンアラウンド時間
ターンアラウンド時間とは、物理(PHY)層を受信モードから送信モード(またはその逆)に切り替えるために必要な時間のことです。ターンアラウンド時間の最中には、RF対応のアナログ・フロント・エンドを構成するコンポーネントが起動して安定な状態へと移行します。それにはかなりの時間がかかります。また、遅延が小さいことが求められるフィードバック・アプリケーションでは、この時間が非常に重要な意味を持ちます。そうしたアプリケーションの例としては、遠隔制御されるロボット・アームやその他の機械類など、産業分野で使われるシステムのプロセス制御ループが挙げられます。なお、ターンアラウンド時間は、半二重型のトランシーバーだけに適用されます。
ターンアラウンド時間は、パケットの受信後にPHY層の準備が整ったら、即座にパケットを送信する必要がある場合(あるいはその逆の場合)に使用されます。
ここで図10をご覧ください。これは、受信パケットと送信パケットの2つをやり取りする例です。図中のsched_rx_packet(0)コマンドにより、トランシーバーはパケットを受信する準備に入ります。この例では、オフセットは0に設定しています。この設定は、トランシーバーはPHY層の準備が整い次第、直ちにパケットの受信を開始するということを意味します。また、パケットの受信中にsched_tx_packet(0)コマンドが送信されています。その結果、PHY層はターンアラウンドの状態に遷移します。ここで、ソフトウェアは次のような処理を行います。すなわち、リファレンス・ポイントを基準とし、それにターンアラウンド時間の値を加算して、受信の完了後に送信するパケットのスケジューリングを行います。
続いて図11をご覧ください。これは、ソフトウェアにおいてターンアラウンド時間が設定されていない場合に何が起きるのかを示したものです。ターンアラウンド時間が設定されていないことから、スケジューラは、最初のパケットの直後に次のパケットを送信するよう設定を行います。スケジューラとしては、PHY層の状態の切り替えが完了しておらず、送信/受信の準備が整っていないことを知る術はありません。そのため、次のパケットの送信は失敗に終わります。
上記の例は、ターンアラウンド時間を設定することの重要性を物語っています。この設定を行わなければ、送信中にスケジュールされる受信処理(あるいはその逆)が正しく実行されるかどうかを判断する手段がありません。ターンアラウンド時間の値は、PHY層が送信モードから受信モードに切り替わるまでにかかる時間に基づいて設定する必要があります。特に、RFデバイスを送信モードと受信モードの間で頻繁に切り替える場合には、ターンアラウンド時間が非常に重要になります。
パケット間隔
パケット間隔とは、前のフレームの最後のビットと次のフレームの最初のビットの間の時間のことです(フレームはどちらも無線で伝送されるケースを考えています)。ターンアラウンド時間と同様に、パケット間隔は、別のパケットの送信/受信中にパケットを送信する場合のリファレンスとして使用されます。ターンアラウンド時間との違いは、パケット間隔は同じ種類の2つのパケット(Tx-TxまたはRx-Rx)に対して使われる点にあります。パケット間隔は、トランシーバーが次のパケットに向けてPHY層の準備を整えるために使用されます。
図12をご覧ください。この図では、2つの送信パケットをやり取りするケースを例にとっています。この場合、sched_tx_packet(0)コマンドによって、トランシーバーはパケットの送信を直ちに開始する準備に入ります。この例では、最初のパケットの送信がまだ完了していないうちに、別のsched_tx_packet(0)コマンドが送信されています。その場合、スケジューラは現在のパケットの送信が完了したら即座に次のパケットの送信を開始するように設定を行います。ここで、スケジューラは、次のパケットを送信する時間のリファレンスとしてパケット間隔の値を使用します。この値は、PHY層の立上がり時間と立下がり時間に基づいています。それにより、次のパケットの送信/受信に向けたPHY層の準備が整っていることが保証されます。
図13に示したのは、パケット間隔が設定されていない場合の例です。スケジューラは、最初のパケットの送信/受信が完了した直後に次のパケットの送信が行われるように設定します。ターンアラウンド時間の場合と同様に、スケジューラは、次の送信/受信に向けたPHY層の準備が整っていないことを把握することはできません。そのため、エラーが発生します。
タイムアウト
ワイヤレス・システムでは、デバイスが無限に応答を待ち続ける状態になることを防ぐためにタイムアウトが使われます。タイムアウトには、デバイスが有効な応答を待つことができる許容時間が設定されます。その時間内に有効な応答を受信できなかった場合には、エラーが報告されます。一般的なタイムアウトとしては、以下のようなものがあります。
SOF タイムアウト
SOF タイムアウトは、無効な sync が検出された場合に発生します。また、sync ワードを受信する前に SOF タイマーが切れた場合にも発生します。
図 14 は、SOF タイマーが切れる前に有効な同期アドレスが検出される様子を示したものです。一方、図 15 は割り当てられた時間内に有効な同期アドレスが検出されなかった場合の様子を表しています。このような場合には、SOF タイムアウトが発生します。
SD タイムアウト
SD(Signal Detect)タイムアウトは、信号検出を行っている期間中に有効なプリアンブルが検出されなかった場合や、プリアンブルを受信する前にタイマーが切れてしまった場合に発生します(図 16、図 17)。
図18は、タイマーの期間中に有効なプリアンブルが検出された場合の例です。これであれば、タイムアウトは発生しません。
重要なのは、タイムアウトの値を適切に設定することです。小さすぎる値や大きすぎる値を設定してはなりません。タイムアウトの値が小さすぎると、有効なパケットが存在するのに検出できないという偽タイムアウトの問題が生じます。一方、タイムアウトの値が大きすぎる場合には偽タイムアウトは発生しにくくなります。しかし、デバイスがアクティブな状態を維持する時間が長くなり、より多くの電力が無駄に消費されるという問題が発生します。
まとめ
アプリケーションによっては、データの完全性が非常に重要な要件になります。特に、ワイヤレス・システムにおいて同期は重要な要素です。システムの同期に影響を及ぼし得る要因は数多く存在します。そのため、タイミングのパラメータに対する関連性と性質について十分な知識を持っておかなければなりません。そうすれば、高い信頼性が求められるワイヤレス・システムについて、システム・レベルのテストを開発したり実施したりする際、大いに役立つはずです。