ハミングコードとは:歴史、働き、そしてその応用

問題を排除するために楽器を試してください





デジタルシステムでは、 コミュニケーション 外部ノイズやその他の物理的な障害が原因で破損する可能性があります。送信されたデータが指定された入力データと一致しない場合、それは「エラー」と呼ばれます。データエラーは、デジタルシステムの重要なデータを削除する可能性があります。データの転送は、デジタルシステムではビット(0および1)の形式で行われます。ビットのいずれかが変更されると、システム全体のパフォーマンスに影響を与える可能性があります。ビット「1」がビット「0」に、またはその逆に変更された場合、それはビットエラーと呼ばれます。違いがある エラーの種類 シングルビットエラー、マルチプルエラー、バーストエラーなど。この記事では、エラー訂正と検出、およびハミングコードについて説明します。

エラー検出および訂正とは何ですか?

デジタル通信では、あるシステム/ネットワークから別のシステム/ネットワークへの情報の転送でエラーが発生すると、データが失われます。したがって、エラーを見つけて修正することが重要です。いくつかのエラー 検出 修正方法は、効果的なコミュニケーションのためにエラーを検出して修正するために使用されます。これらの方法を使用すると、データをより正確に転送できます。




エラー検出は、デジタルシステムで送信機/送信機から受信機に送信されるエラーを検出するために使用される方法として定義されます。エラーを見つけるために、送信中に冗長コードがデータに追加されます。これらはエラー検出コードと呼ばれます。

エラー訂正は、送信機から受信機に送信されるデータの訂正です。エラー訂正は2つのタイプで行うことができます。



後方エラー訂正

このタイプのエラー訂正では、受信者がエラーを検出した場合、受信者は送信者にデータの再送信を要求します。

前方誤り訂正

受信者が受信したデータがエラーを検出すると、エラー修正コードを実行して、データを自動的に修正および回復します。


「m」個のデータビットと「r」個の冗長ビットがある場合、情報の組み合わせは2rになります。

2r> = m + r + 1

エラー検出コードの種類

受信データのエラーは、3種類のエラー検出コードで検出できます。それらは、パリティチェック、巡回冗長検査(CRC)、および縦方向冗長検査です。

パリティチェック

偶数パリティまたは奇数パリティの場合にビット数を偶数または奇数にするために、パリティビットと呼ばれる冗長ビットが追加されます。受信機は、フレーム内のビット数(1)をカウントして、パリティビットを追加します。これはパリティチェックと呼ばれます。フレーム内の1の数が偶数の場合、ゼロ値でビット「1」を追加することにより、偶数パリティが使用されます。同様に、1の数が奇数の場合、値「1」のビットを追加することにより、奇数パリティが使用されます。

エラー検出

エラー検出

したがって、受信者がソースから受信したフレーム/日付が破損していないことを確認するために使用されます。このタイプのエラー検出では、1の数は受信フレーム内にある必要があります。すべてのタイプのエラー検出の中で非常に安価です。

縦方向の冗長性チェック(LRC)

ビットのセット/ブロックが編成されている場合、LRCメソッドを使用してすべてのフレームのパリティビットをチェックできます。元のデータと一緒にパリティビットのセットを送信し、冗長性をチェックするのに役立ちます。

巡回冗長検査

彼のタイプは、ソースから受信したデータ/フレームが有効かどうかを検出するために使用されます。これは、送信する必要のあるデータの2進除算に関与し、多項式を使用します(除数を生成するため)。前 トランスミッション 、除算操作は、余りを計算するためにデータ/ビット/フレームで送信者によって実行されます。

巡回冗長検査-チェック

巡回冗長検査

送信者からの実際のデータの送信中に、実際のデータの最後に余りが追加されます。実際のデータと残りの組み合わせは、コードワードと呼ばれます。データはコードワードの形式で送信されます。このプロセスでは、データが破損している場合、データは受信者によって拒否されます。それ以外の場合、データは受け入れられます。

ハミングコードとは何ですか?

ハミングコードは、最大2つの中間エラーまでのエラー検出プロセスで使用される線形コードとして定義されます。また、シングルビットエラーを検出することもできます。この方法では、冗長ビットが送信者によってデータ/メッセージに追加され、データがエンコードされます。エラー検出と訂正を行うために、これらの冗長ビットはエラー訂正プロセスの特定の位置に追加されます。

ハミングコード

ハミングコード

ハミングコードの歴史

1950年、リチャードW.ハミングは、データのエラーを検出して修正するためのハミングコードを発明しました。より信頼性の高いコンピューターが進化した後、彼は1エラー訂正コード用のハミングコードを導入し、その後、2エラー検出コードまで拡張しました。パリティチェックではデータのエラーを検出して修正できないため、ハミングコードが作成されます。ハミングコードは、実際のデータと冗長ビットの間の任意のブロック長のデータに挿入されます。彼はエラー訂正方法の問題に取り組むための一連のアルゴリズムを開発し、これらのコードはECCメモリで広く使用されています。

ハミングコードを使用してメッセージをエンコードするプロセス

送信者がハミングコードを使用してメッセージをエンコードするプロセスには、3つのステップが含まれます。

ステップ1: 最初のステップは、メッセージの冗長ビット数を計算することです

  • たとえば、メッセージに「n」個のビットが含まれ、「p」個の冗長ビットがメッセージに追加された場合、「np」は(n + p + 1)個の異なる状態を示します。
  • ここで、(n + p)はすべてのビット位置でのエラーの場所を表します
  • 1(追加状態)はエラーがないことを表します。
  • 「p」は2 ^ p(2p)状態を示すため、(n + p + 1)状態と同じです。

ステップ2: 冗長ビットを正確/正しい位置に配置します

「p」ビットは、1、2、4、8、16などの2の累乗であるビット位置に挿入されます。これらのビット位置は、p1(位置1)、p2(位置2)、p3(位置)として示されます。 4)など

ステップ3: 冗長ビットの値を計算する

  • ここでは、パリティビットを使用して冗長ビットの値を計算します。
  • パリティビットは、メッセージ内の1の数を偶数または奇数にすることができます。
  • メッセージ内の1の総数が偶数の場合、偶数パリティが使用されます
  • メッセージ内の1の総数が奇数の場合、奇数パリティが使用されます。

ハミングコードでメッセージを復号化するプロセス

ハミングコードを使用して受信者が送信者から受信したメッセージを復号化するプロセスには、次の手順が含まれます。このプロセスは、メッセージ内のエラーを検出して修正するための再計算に他なりません。

ステップ1: 冗長ビット数を数える

冗長ビットを使用してメッセージをエンコードする式は、

2p≥n+ p + 1

ステップ2: すべての冗長ビットの位置を修正します

冗長ビットの「p」番号は、1、2、4、8、16、32などのように2の累乗のビット位置に配置されます。

ステップ3: パリティチェック(奇数パリティおよび偶数パリティ)

パリティビットは、データビットと冗長ビットの1の数に基づいて計算されます。

例えば

p1のパリティは1、3、5、7、9、11、…になります

p2のパリティは2、3、6、7、10、11、…になります

p3のパリティは4-7、12-15、20-23、…

ハミングコードの利点

ハミングコードを使用する主な利点は、データストリームにシングルビットエラーが含まれている場合に費用効果が高いことです。

  • エラー検出を提供し、訂正のためにエラーを含むビットを示します。
  • ハミングコードは非常に簡単で、コンピュータメモリとシングルビットエラー訂正および検出で使用するのに最適です。

ハミングコードのデメリット

  • シングルビットエラー訂正および検出にのみ最適です。複数ビットのエラーが発生した場合、全体が破損する可能性があります。
  • ハミングコードアルゴリズムは、シングルビットエラーのみを解決できます。

ハミングコードの応用

ハミングコードは、で使用されます。

  • コンピューティング
  • 電気通信
  • データ圧縮
  • パズルとターボ符号を解く
  • 衛星
  • プラズマCAM
  • シールド線
  • モデム
  • コンピュータメモリ
  • コネクタを開く
  • 組み込みシステム およびプロセッサ

よくある質問

1)。ハミングコードは2ビットエラーを検出できますか?

ハミングコードは、データストリーム内の最大2ビットのエラーを検出して修正できます

2)。ハミングコードをどのように修正しますか?

ハミングコードは、実際のデータと冗長ビットの間の任意の長さのデータに配置されます。これらのコードは、最小距離が3ビットの場所です。

3)。パリティコードとは何ですか?

パリティコードまたはパリティビットは、受信したフレームにビットを追加して(データには1と0が含まれます)、ビットの総数(1)を偶数または奇数にします。

4)。データ間のハミング距離はどれくらいですか?

同じ長さの2つの異なるデータストリーム間のハミング距離は1の数です。

同じ長さの2つのデータ文字列間のハミング距離は、XOR演算を使用して計算できます。

たとえば、a = 11011001

b = 10011101

ハミング距離は次のように計算できます。

11011001⊕10011101= 01000100(1ビットの数は2)

ハミング距離は、結果のデータストリームの1の数を示します

したがって、d(11011001、10011101)= 2

同様に、010⊕011= 001、d(010、011)= 1。

5)。ハミングコードは循環的ですか?

はい、ハミングコードは、エラー検出コードとして使用できる巡回コードと同等です。

したがって、これはすべてエラー訂正と検出、エラー検出のタイプ、 ハミングコード 、ハミングコードを使用してメッセージを暗号化および復号化するプロセス、ハミングコードのアプリケーション、ハミングコードの長所と短所。ここにあなたへの質問があります、「エラー検出と訂正のアプリケーションは何ですか?」