高速シリアル通信プロトコルSerialLite ――オープン・ソースでコンパクトなプロトコル
データ・パケットとプライオリティ・パケットは,ヘッダ・バイトが異なります.機能上,これらは以下の方法で区別されます.
(1)データ・パケット
- 受信と同時にデータを送るcut-throughデータ・フローが実装されている.
- パケットの大きさに制限はない.
- 256チャネルまでのデータを多重化できる.
- エラーのリトライはできない.
(2)プライオリティ・パケット
- すべてのデータを受信するまでいかなるデータも送らないstore-and-forwardデータ・フローが実装されている.
- パケットは最大256バイト.
- 16チャネルまでのデータを多重化できる.
- エラーのリトライはオプション.
データ・パケットのほうが柔軟性があり,cut-throughフローによる低いレイテンシを提供します.また,少ないメモリで実装できます.プライオリティ・パケットは,store-and-forwardバッファのため,より多くのメモリを必要とします.全体のパケットが届くまでデータ送信を開始できないので,レイテンシも高くなりますが,パケットが短いため,レイテンシをきちんと管理できます.プライオリティ・パケットは,データと同じ手段でシステム・メッセージを送りたいときに使われます.高速な伝送を確実にするため,これらのパケットは図5のように自動的に挿入,もしくはデータ・パケット内にネスティングされます.
パケットはCRC(cyclic redundancy check,CRC-16かCRC-32のどちらか)によって,データの信頼性を確保することができます.CRCを使うかどうかはオプションであり,システム要求と使用可能なリソースをもとに選択します.CRCはデータ・パケットとプライオリティ・パケットのそれぞれについて個別に設定することができます.
図6に示すように,CRC保護は,データ,PADバイト,ヘッダの第2バイト(多重通信とエラー・リトライのために必要な情報)をカバーします.
図5 パケットのネスティング
図6 CRCのカバー範囲