縦断的冗長性チェック

電気通信において、縦方向冗長検査(LRC)または水平冗長検査は、並列ビットストリームのグループのそれぞれに対して独立して適用される冗長検査の一種です。データは伝送ブロックに分割され、そこに追加の検査データが追加されます。

この用語は通常、ビットストリームごとに1つのパリティビットに適用され、他のすべてのビットストリームとは独立して計算されます(BIP-8)。[ 1 ] [ 2 ]

データ ブロックの末尾にあるこの「余分な」 LRC ワードは、チェックサム巡回冗長検査(CRC) と非常によく似ています。

最適な長方形コード

単純な縦方向パリティではエラー検出のみ可能ですが、横方向冗長検査(TRC)などの追加のエラー制御符号化と組み合わせることでエラーを訂正できます。横方向冗長検査は専用の「パリティトラック」に格納されます。

データの送信ブロックで1ビットのエラーが発生した場合、このような2次元パリティチェック、または「2座標パリティチェック」[ 3 ]により、 受信側はTRCを使用してエラーが発生したバイトを検出し、LRCを使用してエラーが発生したトラックを正確に検出して、どのビットにエラーがあるかを正確に検出し、そのビットを反転することで訂正することができます。[ 4 ] [ 5 ] [ 6 ]

擬似コード

国際規格ISO 1155 [ 7 ]では、バイト列の縦方向冗長検査は、次のアルゴリズムによって ソフトウェアで計算できると規定されている。

lrc  := 0 バッファ内のバイトbに対して、 lrc  := ( lrc + b )かつ0xFF を実行します。lrc :  = ((( lrc XOR 0xFF) + 1)かつ0xFF) を実行します。

これは、「2 8を法とするすべてのバイトの合計の 8 ビットの 2 の補数値」として表現できます (x AND 0xFFは と同等です)。 x MOD 28

その他の形態

多くのプロトコルは、XORベースの縦方向冗長検査バイト(ブロックチェックキャラクタまたはBCCと呼ばれることが多い)を使用しています。これには、シリアルラインインタフェースプロトコル(SLIP、後に有名になったシリアルラインインターネットプロトコルと混同しないように注意)、[ 8 ]電気メーター読み取り用の IEC 62056-21規格、 ISO/IEC 7816で定義されているスマートカード、およびACCESS.busプロトコルが含まれます。

このような 8 ビット LRC は、多項式x 8 + 1 を使用した巡回冗長検査と同等です が、そのように見るとビット ストリームの独立性は明確ではありません。

参考文献

  1. ^ RFC 935:「信頼性の高いリンク層プロトコル」。 
  2. ^「エラー、エラー検出、およびエラー制御: データ通信とコンピュータネットワーク: ビジネス ユーザーのアプローチ」
  3. ^ “Chapter1” . 2013年6月13日時点のオリジナルよりアーカイブ2012年8月20日閲覧。
  4. ^ Gary H. Kemmetmueller. 「2次元パリティチェックを使用したRAMエラー訂正」
  5. ^ オースターバーン。 「縦方向パリティ」
  6. ^「エラー、エラー検出、およびエラー制御」
  7. ^ ISO 1155:1978情報処理 - 情報メッセージ内のエラーを検出するための縦方向パリティの使用
  8. ^ RFC 914.「パーソナルコンピュータをインターネットに接続するためのThinwireプロトコル」。付録D:「シリアルラインインターフェースプロトコル(SLIP)」。