0 Daumen
744 Aufrufe

Aufgabe Hamming-Code prüfen:

(a) Nehmen Sie an, Sie haben das (13,9)-Hamming-Code-gesicherte Codewort 0101011000011 empfangen (gerade Parität). Prüfen Sie das Codewort und korrigieren Sie es, wenn nötig (unter der Annahme, dass höchstens ein Bit gekippt ist). Geben Sie den kompletten Lösungsweg an.

(b) Geben Sie eine Schaltung mit 4 Eingangsleitungen \( d_{1}, d_{2}, d_{3} \) und \( d_{4} \) und drei Ausgangsleitungen \( p_{1}, p_{2} \), und \( p_{3} \) an, die die Prüfbits \( \left(p_{1}, p_{2}, p_{3}\right) \) für das Datenwort \( d_{1} d_{2} d_{3} d_{4} \) eines (7,4)-Hammingcodes (gerade Parität) berechnet.

Verwenden Sie nur Gatter mit maximal 2 Eingängen.

Avatar von

1 Antwort

0 Daumen

Antwort mit KI erzeugt

Hamming-Code: Prüfen Code

Bevor wir zu den zwei Teilen der Aufgabe übergehen, lassen Sie uns kurz den Hamming-Code und seine grundlegende Funktionsweise rekapitulieren. Hamming-Codes dienen der Fehlererkennung und -korrektur. Ein \( (13,9) \)-Hamming-Code bedeutet, dass von den 13 Bits des Codes 9 Bits für die Daten und 4 Bits für die Paritätsprüfung verwendet werden. Die Paritätsbits sind so platziert, dass sie die Positionen \( 2^i \) einnehmen (für \( i = 0, 1, 2, \dots \)). Hier wird von einer geraden Parität ausgegangen, was bedeutet, dass die Anzahl der Einsen in jedem vom Paritätsbit abgedeckten Bereich gerade sein sollte.

Teil (a) Analyse und Korrektur des (13,9)-Hamming-Codes

Gegeben ist das Codewort \( 0101011000011 \). Um das Codewort zu prüfen und gegebenenfalls zu korrigieren, prüfen wir jedes Paritätsbit:

1. Paritätsbit \( p_1 \) an Position 1: Überprüft jede zweite Position (1, 3, 5, ...).

Bits: \( \underline{0}1\underline{0}1\underline{0}1\underline{0}0\underline{0}0\underline{1}1 \)

Anzahl der Einsen: 2, also keine Verletzung der geraden Parität.

2. Paritätsbit \( p_2 \) an Position 2: Überprüft 2-Bits-Blöcke beginnend bei Position 2.

Bits: \( 0\underline{1}01\underline{1}00\underline{0}01\underline{1} \)

Anzahl der Einsen: 3, also eine Verletzung der geraden Parität.

3. Paritätsbit \( p_4 \) an Position 4: Überprüft 4-Bits-Blöcke beginnend bei Position 4.

Bits: \( 010\underline{1}010\underline{0}001\underline{1} \)

Anzahl der Einsen: 3, auch hier eine Verletzung der geraden Parität.

4. Paritätsbit \( p_8 \) an Position 8: Überprüft 8-Bits-Blöcke beginnend bei Position 8.

Bits: \( 0101011\underline{0}0001\underline{1} \)

Anzahl der Einsen: 2, keine Verletzung der geraden Parität.

Die Position des fehlerhaften Bits ist die Summe der Positionen, bei denen eine Paritätsverletzung festgestellt wurde: \( 2 + 4 = 6 \).

Das bedeutet, dass das sechste Bit (von links gezählt) falsch ist. Um den Fehler zu korrigieren, kippen wir das sechste Bit:

Korrigiertes Codewort: \( 010101\color{red}{\textbf{0}}00011 \).

Teil (b) Schaltungsentwurf für (7,4)-Hamming-Code

Um die Prüfbits für ein Datenwort \( d_1 d_2 d_3 d_4 \) eines (7,4)-Hammingcodes mit gerader Parität zu berechnen, müssen die Paritätsbits \( p_1 \), \( p_2 \), und \( p_3 \) berechnet werden:

- \( p_1 \) prüft Positionen 1, 3, 5, 7.
- \( p_2 \) prüft Positionen 2, 3, 6, 7.
- \( p_3 \) prüft Positionen 4, 5, 6, 7.

Dabei sind \( d_1 \), \( d_2 \), \( d_3 \), und \( d_4 \) die Datenbits und \( p_1 \), \( p_2 \), und \( p_3 \) die Prüfbits.

Für die Berechnung der Prüfbits:

- \( p_1 = d_1 \oplus d_2 \oplus d_4 \) (XOR-Operation)
- \( p_2 = d_1 \oplus d_3 \oplus d_4 \)
- \( p_3 = d_2 \oplus d_3 \oplus d_4 \)

Der benötigte Quellcode zum Entwurf der Logikschaltung in Verilog oder ähnlichem könnte so aussehen:

verilog
module hamming74(d1, d2, d3, d4, p1, p2, p3);
input d1, d2, d3, d4;
output p1, p2, p3;

assign p1 = d1 ^ d2 ^ d4; // XOR für p1
assign p2 = d1 ^ d3 ^ d4; // XOR für p2
assign p3 = d2 ^ d3 ^ d4; // XOR für p3

endmodule


Die Schaltung für diese Berechnungen würde 3 XOR-Gatter enthalten, wobei jedes Gatter zwei Eingänge hat. Für die Berechnung eines jeden Prüfbits könnte man die Eingangsdaten entsprechend durch die Gatter führen.
Avatar von

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community