Computer ArchitectureUnit 1011 min read
Error Detection & Correction: Codes, Hamming, Parity, CRC
Unit 10 of Computer Architecture covers parity bits, Hamming codes, cyclic redundancy checks (CRC), and error correction techniques used in data transmission, storage, and real-world systems like Ncell’s SMS delivery and eSewa’s transaction validation.
TAKEAWAYS:
- Parity bits detect single-bit errors in data using even/odd checks, but cannot correct them.
- Hamming codes add redundant bits to locate and fix errors in binary data (e.g., correcting flipped bits in a 7-bit codeword).
- Cyclic Redundancy Check (CRC) uses polynomial division to detect burst errors in large data blocks (e.g., file downloads or network packets).
- Error correction techniques like Hamming codes or Reed-Solomon codes trade storage for reliability in systems like QR codes or satellite communications.
- Real-world applications include SMS delivery (Ncell), online transactions (eSewa), and data storage (hard drives).
- Trade-offs exist between error detection (parity/CRC) and correction (Hamming/Reed-Solomon) in terms of redundancy and computational overhead.
1. Why Error Detection and Correction?
Data transmitted or stored can corrupt due to noise, interference, or hardware faults. Errors manifest as:
- Single-bit errors: A single bit flips (e.g.,
1→0or0→1). - Burst errors: Multiple consecutive bits flip (common in noisy channels).
- Random errors: Unpredictable bit flips (e.g., cosmic rays in memory).
Goal: Detect or correct errors without retransmitting all data, saving time and bandwidth.
2. Error Detection Techniques
A. Parity Bit (Single-Error Detection)
How it works:
Add an extra bit (parity bit) to a data word to make the total number of 1s even (even parity) or odd (odd parity).
- Even parity: Total
1s in data + parity bit = even. - Odd parity: Total
1s in data + parity bit = odd.
Example:
Data: 1011 (3 1s)
- Even parity: Add
1→10111(41s). - Odd parity: Add
0→10110(31s).
Detection:
- Receiver recalculates parity. If mismatch → error detected.
- Limitation: Detects only single-bit errors. Fails for even-numbered errors (e.g., two bits flip).
Visual: Parity Bit Calculation
Real-World Use:
- Ncell SMS delivery: Uses parity checks to detect corrupted text messages during transmission.
- Hard drives: Use parity bits in RAID configurations to detect failed sectors.
B. Checksum (Multi-Error Detection)
How it works:
- Split data into blocks (e.g., 16-bit words).
- Sum all blocks modulo
2^n(e.g.,2^16). - Transmit the checksum separately.
- Receiver recalculates checksum. If mismatch → error detected.
Example:
Data blocks: 1010, 1100, 0011
Sum: 1010 + 1100 + 0011 = 10001 (17 bits)
Checksum: 10001 mod 65536 = 10001 (transmitted as 10001).
Receiver recalculates sum + checksum. If 0 → no error.
Limitation:
- Detects most errors but fails for certain patterns (e.g., two errors that cancel out in modulo arithmetic).
Real-World Use:
- TCP/IP protocols: Use checksums in headers to detect corrupted packets.
- eSewa transactions: Checksums verify integrity of payment data before processing.
C. Cyclic Redundancy Check (CRC)
How it works:
- Treat data as a binary polynomial (e.g.,
1011→x³ + x² + 0x + 1). - Divide by a predefined generator polynomial (e.g.,
x⁴ + x + 1for CRC-4). - Append the remainder (CRC bits) to the data.
- Receiver performs the same division. If remainder ≠
0→ error detected.
Example (CRC-4 with generator 10011):
Data: 110100 (polynomial: x⁵ + x⁴ + 0x³ + 0x² + 0x + 0)
- Append
0000(for 4-bit CRC) →1101000000. - Divide by
10011(binary forx⁴ + x + 1):1101000000 ÷ 10011 → Quotient: 11101, Remainder: 1100 (CRC bits). - Transmit:
1101001100. - Receiver divides
1101001100by10011. If remainder ≠0→ error.
Advantages:
- Detects burst errors (multiple consecutive bit flips).
- Configurable strength (e.g., CRC-8, CRC-16, CRC-32).
Disadvantages:
- Computationally intensive for hardware.
- Cannot correct errors (only detect).
Visual: CRC Division Process
sequenceDiagram
participant Sender as Sender
participant Receiver as Receiver
Sender->>Receiver: Data + CRC (e.g., 1101001100)
Receiver->>Receiver: Divide by generator (10011)
alt Remainder = 0
Receiver->>Sender: No error
else Remainder ≠ 0
Receiver->>Sender: Error detected
endReal-World Use:
- YouTube video streaming: Uses CRC-32 to detect corrupted packets during buffering.
- Daraz order processing: CRC ensures order data integrity before database storage.
3. Error Correction Techniques
A. Hamming Codes (Single-Bit Error Correction)
How it works:
- Add redundant parity bits at specific positions to locate and correct single-bit errors.
- Positions of parity bits: Powers of 2 (
1, 2, 4, 8, ...). - Each parity bit covers a subset of data bits (e.g., parity bit
P1covers bits where the least significant bit of their position is1).
Example (7-bit Hamming Code for 4-bit data):
| Bit Position | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|
| Data/Parity | P1 | P2 | D1 | P4 | D2 | D3 | D4 |
Steps:
- Calculate parity bits:
P1: Covers bits1, 3, 5, 7→P1 = D1 ⊕ D2 ⊕ D4.P2: Covers bits2, 3, 6, 7→P2 = D1 ⊕ D3 ⊕ D4.P4: Covers bits4, 5, 6, 7→P4 = D2 ⊕ D3 ⊕ D4.
- Transmit:
P1 P2 D1 P4 D2 D3 D4. - Receiver:
- Recalculate
P1,P2,P4. - Form a syndrome (3-bit error location):
Syndrome = (P1' ⊕ P1) (P2' ⊕ P2) (P4' ⊕ P4). - If syndrome ≠
000→ error at position = syndrome value (binary).
- Recalculate
Example Trace:
- Transmitted:
1 1 1 0 1 0 1(P1=1, P2=1, P4=0, data=1101). - Received (with error at bit 6):
1 1 1 0 1 1 1. - Recalculated parities:
P1' = 1 ⊕ 1 ⊕ 1 = 1,P2' = 1 ⊕ 1 ⊕ 1 = 1,P4' = 1 ⊕ 1 ⊕ 1 = 1. - Syndrome:
(1⊕1)(1⊕1)(1⊕0) = 001→ error at bit 1 (but syndrome001= bit 1 is incorrect; actual error is at bit 6. Correction: Syndrome is the binary representation of the erroneous bit position. Here,001is bit 1, but the error is at bit 6. Fix: Syndrome is calculated as(P1'⊕P1)(P2'⊕P2)(P4'⊕P4) = (1⊕1)(1⊕1)(1⊕0) = 001(bit 1). Mistake in example: The syndrome should correspond to the actual error position. Let’s correct this:
Corrected Example:
- Transmitted:
1 1 1 0 1 0 1(P1=1, P2=1, P4=0, data=1101). - Received (error at bit 6):
1 1 1 0 1 1 1. - Recalculated parities:
P1' = D1 ⊕ D2 ⊕ D4 = 1 ⊕ 1 ⊕ 1 = 1(matches transmitted P1).P2' = D1 ⊕ D3 ⊕ D4 = 1 ⊕ 0 ⊕ 1 = 0(transmitted P2=1 → error).P4' = D2 ⊕ D3 ⊕ D4 = 1 ⊕ 0 ⊕ 1 = 0(transmitted P4=0 → no error).
- Syndrome:
(P1'⊕P1)(P2'⊕P2)(P4'⊕P4) = (1⊕1)(0⊕1)(0⊕0) = 010→ binary010= decimal2. But bit 2 isP2, which is a parity bit, not data. Issue: Syndrome010(bit 2) is invalid for data correction. Real Fix: The syndrome010indicates an error in the bits covered byP2(bits 2,3,6,7). To find the exact bit:- Check bits covered by
P2: bits 3,6,7 (bit 2 is parity). - Compare received bits with recalculated parity:
- Bit 3:
1(received), parity expects1(fromP2'=0and other bits). - Bit 6:
1(received), but should be0(fromP2'=0and other bits). - Bit 7:
1(received), but should be1(consistent).
- Bit 3:
- Error at bit 6: Flip it to
0.
- Check bits covered by
Visual: Hamming Code Syndrome Calculation
stateDiagram-v2
[*] --> Receive: Codeword
Receive --> Calculate: Parity bits (P1', P2', P4')
Calculate --> Form: Syndrome (P1'⊕P1, P2'⊕P2, P4'⊕P4)
Form --> Check: Syndrome == 000
Check --> Yes: No error
Check --> No: Locate error at syndrome position
Locate --> Correct: Flip erroneous bit
Correct --> [*]Advantages:
- Corrects single-bit errors.
- Detects double-bit errors (but cannot correct them).
Disadvantages:
- Overhead: For
mparity bits, can correct up tot = floor((m-1)/2)errors. - Complexity increases with data size.
Real-World Use:
- QR codes: Use Reed-Solomon (a Hamming-like code) to recover from scratches or damage.
- Satellite communications: Hamming codes correct errors in noisy space-to-Earth links.
B. Comparison Table: Error Detection vs. Correction
| Technique | Detects Errors? | Corrects Errors? | Redundancy Overhead | Use Case |
|---|---|---|---|---|
| Parity Bit | Single-bit | ❌ No | 1 bit | Simple systems (e.g., memory) |
| Checksum | Multi-bit | ❌ No | Variable | Network protocols (TCP/IP) |
| CRC | Burst errors | ❌ No | 8–32 bits | File transfers, storage |
| Hamming Code | Single-bit | ✅ Yes | ~25% | Memory, QR codes |
| Reed-Solomon | Burst errors | ✅ Yes | High | DVDs, satellite links |
4. Advanced: Reed-Solomon Codes (Burst Error Correction)
How it works:
- Extends Hamming codes for burst errors (e.g., 10 consecutive bit flips).
- Used in DVDs, CDs, and QR codes.
- Example: Corrects up to
terrors in a block ofnsymbols.
Real-World Use:
- QR codes: Can recover from up to 30% damage.
- NEPSE stock data: Reed-Solomon ensures accurate transmission of price updates.
## In the Real World
Ncell SMS Delivery:
- Uses parity checks to detect corrupted text messages during transmission over cellular networks.
- If a parity mismatch occurs, the message is retransmitted.
eSewa Online Transactions:
- Employs CRC-32 to verify the integrity of payment data before processing.
- Ensures no bit flips corrupt transaction amounts or user IDs.
Daraz Order Processing:
- Uses Hamming-like codes in database storage to detect and correct errors in order details (e.g., item quantities).
- Prevents incorrect deliveries due to corrupted data.
YouTube Video Streaming:
- CRC-32 checks each packet to detect corruption during buffering.
- If errors are found, packets are retransmitted or corrected using forward error correction (FEC).
QR Codes (Nepal Rail Ticketing):
- Reed-Solomon codes allow tickets to be scanned even if partially damaged (e.g., torn or smudged).
## Exam Tip
Parity vs. CRC:
- Parity detects single-bit errors; CRC detects burst errors.
- Exam trick: Always show the parity calculation step-by-step (e.g., "Data: 1011 → even parity: 10111").
Hamming Codes:
- Key formula: Syndrome =
(P1'⊕P1)(P2'⊕P2).... - Worked example: Given a received codeword, always:
- Recalculate parities.
- Compute syndrome.
- Locate and correct the error (if any).
- Key formula: Syndrome =
CRC:
- Polynomial division: Show the division steps clearly (e.g., "Divide 1101000000 by 10011").
- Common generators: Memorize
x⁴ + x + 1(CRC-4) andx¹⁶ + x¹² + x⁵ + 1(CRC-16).
Applications:
- Link parity to SMS, CRC to file transfers, and Hamming to memory/storage.
- Example question: "How does Ncell detect errors in SMS?" → Answer: Parity bits.
Common Pitfalls:
- Forgetting to include parity bits in syndrome calculation.
- Misinterpreting syndrome: It’s the binary position of the error, not the bit value.
- CRC remainder ≠ 0: Always conclude "error detected," not "error corrected."
## Practice Questions (Exam-Style)
Parity Bit:
- Data:
1101. Add even parity. If received as1111, detect and explain the error.
- Data:
Hamming Code:
- Encode
1011using Hamming (7,4) code. Simulate an error at bit 3 and correct it.
- Encode
CRC:
- Compute CRC-4 for data
101100using generator10011. Show division steps.
- Compute CRC-4 for data
Real-World Scenario:
- "How would you design error detection for a bank’s online transaction system?" Answer: Use CRC-32 for data integrity + Hamming codes for critical fields (e.g., account numbers).
## Summary Visual: Error Detection/Correction Hierarchy
mindmap
root((Error Handling))
Detection
Parity Bit
Checksum
CRC
Correction
Hamming Code
Reed-Solomon
Applications
SMS (Parity)
Transactions (CRC)
QR Codes (Reed-Solomon)Based on the TU BSc CSIT syllabus for Computer Architecture (CSC213), unit 10.
Discussion
Loading…