Hamminga Code:Wykrywanie i korygowanie błędów z przykładami

⚡ Inteligentne podsumowanie

Kod Hamminga to liniowy kod korekcji błędów, który dodaje redundantne bity parzystości na pozycjach potęgi dwójki, umożliwiając odbiornikowi wykrycie błędów dwubitowych i automatyczną korekcję błędów jednobitowych podczas transmisji danych.

  • 🧭 Cel: Kod Hamminga wykrywa i koryguje błędy transmisji poprzez osadzanie bitów parzystości, które dokładnie wskazują położenie uszkodzonego bitu.
  • 🔢 Nadmiarowe bity: Liczba bitów parzystości (p) spełnia regułę 2^p ≥ n + p + 1, gdzie n jest liczbą bitów danych.
  • 📍 Umiejscowienie: Bity parzystości zajmują pozycje potęgi dwójki — 1, 2, 4 i 8 — natomiast bity danych zajmują pozostałe pozycje.
  • 🧮 Hamminga (7,4): Powszechnie stosowana forma kodowania polega na kodowaniu czterech bitów danych w postaci siedmiu bitów przy użyciu trzech bitów parzystości.
  • 🧯 Ograniczenie: Standardowy kod Hamminga koryguje tylko błędy jednobitowe; dodatkowy bit parzystości ogólnej umożliwia wykrywanie podwójnych błędów (SECDED).
  • 🤖 Pomoc AI: Dekodery uczenia maszynowego pomagają oznaczać zaszumione kanały i wzorce błędów, których same stałe kody mogą nie wykryć.

Wykrywanie i korekcja błędów kodu Hamminga za pomocą bitów parzystości

Co to jest błąd?

TransmitDane TED mogą ulec uszkodzeniu podczas komunikacji. Prawdopodobnie będą one zakłócane przez zakłócenia zewnętrzne lub inne uszkodzenia fizyczne. W takiej sytuacji dane wejściowe nie mogą być takie same jak dane wyjściowe. Ta niezgodność nazywana jest „błędem”.

Błędy danych mogą spowodować utratę ważnych lub bezpiecznych danych. Większość transferu danych w systemach cyfrowych odbywa się w formie „transferu bitów”, a nawet niewielka zmiana pojedynczego bitu może wpłynąć na wydajność całego systemu. W sekwencji danych, jeśli 1 zostanie zamienione na 0 lub 0 na 1, nazywa się to „błędem bitowym”.

Rodzaje błędów

Istnieją trzy główne typy błędów bitowych, które występują podczas przesyłania danych. transmitod nadawcy do odbiorcy. Poniższy diagram ilustruje, jak każdy typ wpływa na sekwencję danych:

Diagram porównujący błędy jednobitowe, wielobitowe i grupowe w sekwencji danych binarnych

  • Błędy jednobitowe
  • Wiele błędów bitowych
  • Błędy serii

Błędy jednobitowe

Zmiana jednego bitu w całej sekwencji danych nazywana jest „błędem pojedynczego bitu”. Występowanie błędu pojedynczego bitu nie jest częste. Najczęściej występuje w równoległym systemie komunikacyjnym, ponieważ dane są przesyłane bitowo na oddzielnych liniach, więc istnieje większe prawdopodobieństwo, że jedna linia będzie zaszumiona, a pozostałe pozostaną czyste.

Wiele błędów bitowych

Gdy dwa lub więcej bitów sekwencji danych zmienia się pomiędzy transmitmiędzy odbiornikiem a odbiornikiem, zjawisko to znane jest jako „błąd wielobitowy”.

Tego typu błąd występuje zarówno w sieciach transmisji danych szeregowych, jak i równoległych.

Błędy wybuchowe

Zmiana zestawu kolejnych bitów w sekwencji danych nazywana jest „błędem serii”. Długość błędu serii mierzona jest od pierwszego zmienionego bitu do ostatniego zmienionego bitu.

Czym jest wykrywanie i korygowanie błędów?

W cyfrowym systemie komunikacji błędy mogą pojawiać się podczas przesyłania danych z jednego urządzenia do drugiego. Jeśli błędy te nie zostaną wykryte i skorygowane, dane zostaną utracone. Aby komunikacja była efektywna, dane muszą być przesyłane z dużą dokładnością, co osiąga się poprzez identyfikację błędów, a następnie ich korektę.

Wykrywanie błędów jest metodą znajdowania błędów obecnych w danych transmitted z transmitdo odbiornika w Komunikacji danych pomimo napiętego harmonogramu

Kody redundancji służą do znajdowania tych błędów poprzez dodawanie dodatkowych bitów do danych, gdy są one transmitTe dodatkowe bity nazywane są „kodami wykrywania błędów”. Trzy najpopularniejsze typy kodów wykrywania błędów to:

  • Sprawdzanie parzystości
  • Cykliczna kontrola nadmiarowa (CRC)
  • Wzdłużna kontrola redundancji (LRC)

Sprawdzanie parzystości

  • Nazywa się to również kontrolą parzystości.
  • Zapewnia opłacalny mechanizm wykrywania błędów.
  • W tej technice nadmiarowy bit dodawany do każdej jednostki danych nazywany jest bitem parzystości. Jest on ustawiany tak, aby łączna liczba jedynek w jednostce była parzysta (parzystość) lub nieparzysta (parzystość).

Kontrola redundancji wzdłużnej

W tej technice wykrywania błędów blok bitów jest organizowany w tabeli. Metoda LRC oblicza bit parzystości dla każdej kolumny, a ten zestaw bitów parzystości jest przesyłany wraz z danymi oryginalnymi. Blok bitów parzystości pomaga odbiornikowi sprawdzić redundancję i wykryć błędy.

Cykliczna kontrola nadmiarowa

Kontrola cyklicznej redundancji polega na dodaniu sekwencji zbędnych bitów na końcu jednostki danych, tak aby powstała jednostka danych stała się podzielna przez drugą, z góry ustaloną liczbę binarną.

W miejscu docelowym dane przychodzące są dzielone przez tę samą liczbę. Jeśli nie ma reszty, jednostka danych jest uznawana za poprawną i akceptowana. W przeciwnym razie oznacza to, że jednostka danych została uszkodzona podczas transmisji i musi zostać odrzucona.

Co to jest Hamming Code?

Kod Hamminga to kod liniowy, który jest przydatny do wykrywania do dwóch natychmiastowych błędów bitowych i korygowania błędów pojedynczych bitów. Tego rodzaju korekcja błędów zazwyczaj działa na poziomie łącza danych, ramkując dane i sprawdzając ich integralność między sąsiednimi węzłami.

W kodzie Hamminga źródło koduje wiadomość, dodając zbędne bity. Te zbędne bity są wstawiane i generowane w określonych miejscach wiadomości, aby przeprowadzić proces wykrywania i korekcji błędów.

Historia Hamminga Code

  • Kod Hamminga to technika opracowana przez R.W. Hamminga służąca do wykrywania i korygowania błędów.
  • Można ją stosować do jednostek danych o dowolnej długości i wykorzystuje ona relację między bitami danych i bitami redundancji.
  • Hamming pracował nad problemem korekcji błędów i opracował coraz bardziej rozbudowany zestaw algorytmów.
  • W 1950 roku opublikował kod Hamminga, który do dziś jest szeroko stosowany w takich zastosowaniach, jak pamięć ECC.

Zastosowania Hamminga Code

Oto kilka typowych zastosowań kodu Hamminga:

  • Satelity
  • Pamięć komputera (ECC RAM)
  • Modemy
  • PlasmaCAM
  • Otwórz złącza
  • Przewód ekranowany
  • Procesory wbudowane

Zalety metody Hamminga Code

  • Kod Hamminga sprawdza się w sieciach, w których strumienie danych narażone są na błędy pojedynczych bitów.
  • Nie tylko wykrywa błąd bitowy, ale także pomaga zidentyfikować bit zawierający błąd, dzięki czemu można go naprawić.
  • Łatwość stosowania kodów Hamminga sprawia, że ​​doskonale nadają się one do pamięci komputerowej i korekcji pojedynczych błędów.

Wady metody Hamminga Code

  • Jest to kod do wykrywania i korekcji błędów na poziomie jednego bitu. Jeśli okaże się, że wiele bitów jest błędnych, wynik może zmienić inny bit, który był poprawny, co jeszcze bardziej zniekształci dane.
  • Algorytm kodu Hamminga może rozwiązać tylko problemy jednobitowe.

Jak zakodować wiadomość w systemie Hamminga Code

Proces kodowania wiadomości przez nadawcę obejmuje trzy następujące kroki:

  • Oblicz całkowitą liczbę bitów nadmiarowych.
  • Określ położenie zbędnych bitów.
  • Oblicz wartość każdego zbędnego bitu.

Po umieszczeniu nadmiarowych bitów w wiadomości, do odbiorcy wysyłane jest pełne słowo kodowe.

Krok 1) Oblicz całkowitą liczbę bitów nadmiarowych.

Załóżmy, że wiadomość zawiera n bity danych i p nadmiarowe bity, dodane tak, że 2p może wskazywać co najmniej (n + p + 1) różnych stanów.

Tutaj (n + p) odpowiada za lokalizację błędu w każdej z pozycji bitów (n + p), a jeden dodatkowy stan oznacza brak błędu. Ponieważ p bitów parzystości może wskazywać 2p stany, 2p musi być co najmniej równe (n + p + 1).

Krok 2) Umieść zbędne bity w odpowiednich miejscach.

Nadmiarowe bity umieszczane są na pozycjach bitowych, które są potęgami liczby 2 — na przykład 1, 2, 4, 8 i 16. Są one nazywane p1 (na pozycji 1), s. XNUMX2 (na pozycji 2), s. XNUMX3 (na pozycji 4) i tak dalej.

Krok 3) Oblicz wartość każdego zbędnego bitu.

Każdy nadmiarowy bit to bit parzystości, który określa liczbę jedynek w swojej grupie jako parzystą lub nieparzystą. Istnieją dwa rodzaje parzystości:

  • Parzystość parzysta: łączna liczba jedynek na pokrytych pozycjach jest parzysta.
  • Nieparzystość: całkowita liczba jedynek na pokrytych pozycjach jest nieparzysta.

Każdy bit parzystości pokrywa konkretny zestaw pozycji, określony przez binarną reprezentację numerów pozycji:

  • p1 sprawdza każdą pozycję, której wartość binarna ma 1 w najmniej znaczącym bicie — pozycje 1, 3, 5, 7, 9, 11 itd.
  • p2 sprawdza każdą pozycję, której wartość binarna ma 1 na drugim bicie od prawej — pozycje 2, 3, 6, 7, 10, 11 itd.
  • p3 sprawdza każdą pozycję, której wartość binarna ma 1 na trzecim bicie od prawej — pozycje od 4 do 7, od 12 do 15 itd.

Przykład rozwiązania (7,4): Rozważ cztery bity danych 1011. Wymagane są trzy bity parzystości (23 = 8 ≥ 4 + 3 + 1), co daje siedmiobitowe słowo kodowe przedstawione jako p1 p2 d1 p3 d2 d3 d4Umieszczenie danych ustawia pozycje 3, 5, 6, 7 = 1, 0, 1, 1. Używając parzystości: p1 obejmuje pozycje 1, 3, 5, 7 (bity 1, 0, 1 → p1 = 0); p2 obejmuje 2, 3, 6, 7 (bity 1, 1, 1 → p2 = 1); p3 obejmuje 4, 5, 6, 7 (bity 0, 1, 1 → p3 = 0). Ten transmithasło ted jest zatem 0110011.

Jak zdekodować wiadomość w systemie Hamminga Code

Odbiorca odbiera przychodzącą wiadomość i wykonuje przeliczenia w celu znalezienia i poprawienia błędów. Proces przeliczania obejmuje następujące kroki:

  • Policz liczbę zbędnych bitów.
  • Prawidłowo rozmieść wszystkie zbędne bity.
  • Wykonaj kontrolę parzystości.

Krok 1) Policz liczbę zbędnych bitów. Użyj tego samego wzoru, co przy kodowaniu: 2p ≥ n + p + 1, gdzie n jest liczbą bitów danych, a p jest liczbą bitów redundantnych.

Krok 2) Prawidłowe rozmieszczenie wszystkich zbędnych bitów. Każdy zbędny bit znajduje się na pozycji będącej potęgą liczby 2 — na przykład 1, 2, 4 i 8.

Krok 3) Wykonaj kontrolę parzystości. Bity parzystości są przeliczane na podstawie bitów danych i odebranych bitów nadmiarowych:

  • p1 = parzystość(1, 3, 5, 7, 9, 11, …)
  • p2 = parzystość(2, 3, 6, 7, 10, 11, …)
  • p3 = parzystość(4–7, 12–15, 20–23, …)

Przeliczone bity parzystości tworzą liczbę binarną. Jeśli ta liczba wynosi zero, błąd nie występuje; w przeciwnym razie jej wartość wskazuje dokładną pozycję pojedynczego uszkodzonego bitu, który jest następnie odwracany w celu poprawienia komunikatu.

FAQ

Odległość Hamminga to liczba pozycji bitowych, o które różnią się dwa ciągi binarne o tej samej długości. W kodach korekcji błędów minimalna odległość Hamminga między prawidłowymi słowami kodowymi określa liczbę błędów możliwych do wykrycia lub poprawienia. Standardowy kod Hamminga ma minimalną odległość równą 3.

Hamming (7,4) koduje cztery bity danych w siedmiobitowe słowo kodowe poprzez dodanie trzech bitów parzystości. Koryguje każdy błąd jednobitowy i wykrywa błędy dwubitowe. Notacja (n, k) określa całkowitą długość słowa kodowego n i liczbę bitów danych k.

Pojedynczy bit parzystości wykrywa tylko nieparzystą liczbę błędów bitowych i nie jest w stanie ich zlokalizować ani naprawić. Kod Hamminga używa wielu bitów parzystości w pozycjach potęgi dwójki, dzięki czemu precyzyjnie lokalizuje uszkodzony bit i automatycznie go koryguje.

Podstawowy kod Hamminga koryguje błędy jednobitowe, ale może błędnie korygować błędy dwubitowe. Dodanie jednego bitu parzystości obejmującego całe słowo kodowe tworzy SECDED (korekcja pojedynczego błędu, wykrywanie podwójnego błędu), zwiększając minimalną odległość do czterech i niezawodnie wykrywając błędy dwubitowe.

Wykrywanie i korygowanie błędów odbywa się głównie na warstwie łącza danych Model OSI, który kadruje dane i sprawdza ich integralność między sąsiadującymi węzłami. Protokoły warstwy transportowej dodają kontrole kompleksowe, podczas gdy medium fizyczne wprowadza zakłócenia, przed którymi te kody chronią.

Kod Hamminga to liniowy kod blokowy. Przetwarza on blok bitów danych o stałym rozmiarze na raz i dodaje bity parzystości, w przeciwieństwie do kodów splotowych, które kodują ciągły strumień bitów, wykorzystując pamięć poprzednich bitów. Dzięki temu kod Hamminga jest prosty i szybki.

Modele uczenia maszynowego uczą się wzorców szumów kanału i przewidują prawdopodobne błędy bitowe, zwiększając dokładność dekodowania wykraczającą poza ustalone schematy. Dekodery oparte na sztucznej inteligencji dla kodów LDPC i polarnych wspomagają obecnie nowoczesne systemy 5G i pamięci masowej, w których klasyczny kod Hamminga jest niewystarczający.

Drugi pilot GitHub Potrafi tworzyć szkielety funkcji kodera i dekodera, generować maski parzystości i tworzyć projekty testów jednostkowych na podstawie krótkiego komentarza. Zweryfikuj matematykę pozycji bitów i grupę parzystości.pingUważaj, ponieważ indeksowanie off-by-one jest częstym źródłem błędów w generowanym kodzie.

Podsumuj ten post następująco: