電気通信において、縦方向冗長検査(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 を使用した巡回冗長検査と同等です が、そのように見るとビット ストリームの独立性は明確ではありません。
参考文献
- ^ RFC 935:「信頼性の高いリンク層プロトコル」。
- ^「エラー、エラー検出、およびエラー制御: データ通信とコンピュータネットワーク: ビジネス ユーザーのアプローチ」。
- ^ “Chapter1” . 2013年6月13日時点のオリジナルよりアーカイブ。2012年8月20日閲覧。
- ^ Gary H. Kemmetmueller. 「2次元パリティチェックを使用したRAMエラー訂正」。
- ^ オースターバーン。 「縦方向パリティ」。
- ^「エラー、エラー検出、およびエラー制御」。
- ^ ISO 1155:1978情報処理 - 情報メッセージ内のエラーを検出するための縦方向パリティの使用。
- ^ RFC 914.「パーソナルコンピュータをインターネットに接続するためのThinwireプロトコル」。付録D:「シリアルラインインターフェースプロトコル(SLIP)」。
この記事には、連邦規格1037Cのパブリックドメイン資料が含まれています。一般調達局。2022年1月22日時点のオリジナル記事からのアーカイブ。( MIL-STD-188 をサポート)。