> hamming | (7,4) | ecc <
// Código Hamming – código de correção de erros para transmissão de dados confiável
Correção de erros
Detecta e corrige automaticamente erros de um único bit nos dados.
Detecção de erros duplos
Pode detectar (mas não corrigir) erros de dois bits em cada bloco.
Baixa sobrecarga
Apenas 3 bits de paridade para cada 4 bits de dados (75% de eficiência).
>> informações técnicas
Como funciona o código Hamming:
O código Hamming(7,4) adiciona 3 bits de paridade a cada 4 bits de dados, criando blocos de 7 bits. Os bits de paridade são colocados em posições que são potências de 2 (1, 2, 4). Quando ocorrem erros, o síndrome (resultado da verificação de paridade) aponta diretamente para a posição do bit com erro.
Estrutura Hamming(7,4):
Dados: 1011 (4 bits) Posições: P1 P2 D1 P3 D2 D3 D4 Hamming: 1 0 1 1 0 1 1 P1 = D1 ⊕ D2 ⊕ D4 = 1 ⊕ 0 ⊕ 1 = 0 P2 = D1 ⊕ D3 ⊕ D4 = 1 ⊕ 1 ⊕ 1 = 1 P3 = D2 ⊕ D3 ⊕ D4 = 0 ⊕ 1 ⊕ 1 = 0
Por que usar o código Hamming:
- >Correção de erro em memória
- >Comunicação via satélite
- >Sistemas de armazenamento de dados
- >Transmissão em redes
- >Arranjos RAID
>> perguntas frequentes
O que é o código Hamming?
O código Hamming é um código de correção de erros criado por Richard Hamming em 1950. Ele adiciona bits de paridade aos dados que permitem detectar e corrigir automaticamente erros de um único bit.
O que significa (7,4)?
Hamming(7,4) significa 7 bits no total, com 4 bits de dados e 3 bits de paridade. Ele pode corrigir qualquer erro de um único bit no bloco de 7 bits. Outras variantes incluem (15,11) e (31,26).
Como funciona a correção de erros?
Ao receber os dados, os bits de paridade são recalculados. Se não coincidirem, o síndrome (a diferença) indica diretamente qual bit está incorreto. O erro é corrigido invertendo esse bit.
Hamming vs outros códigos ECC?
O código Hamming é simples e eficiente para erros de um único bit. Códigos mais complexos, como Reed-Solomon, podem corrigir vários erros, mas com maior sobrecarga. Hamming é ideal para canais com pouco ruído.
// Referência rápida
| Pos | bit | covered by |
|---|---|---|
| 1 | p1 | p1 |
| 2 | p2 | p2 |
| 3 | d1 | p1 p2 |
| 4 | p3 | p3 |
| 5 | d2 | p1 p3 |
| 6 | d3 | p2 p3 |
| 7 | d4 | p1 p2 p3 |
// Exemplo resolvido
Data 1011 -> positions 3,5,6,7 = 1,0,1,1 p1 = d3^d5^d7 = 1^0^1 = 0 p2 = d3^d6^d7 = 1^1^1 = 1 p3 = d5^d6^d7 = 0^1^1 = 0 Codeword (pos 1..7) 0110011 Received 0110111 (bit 5 flipped) Syndrome s3 s2 s1 = 1 0 1 = 5 -> flip bit 5 -> 0110011 corrected
>> Mais perguntas
P: O que significa (7,4) no código de Hamming?
R: 4 bits de dados são completados com 3 bits de paridade, formando uma palavra de 7 bits. Os bits de paridade ficam nas posições potência de 2: 1, 2 e 4. A distância mínima é 3: corrige um erro e detecta dois, sem corrigi-los.
P: Como a síndrome indica a posição do erro?
R: Cada bit de paridade verifica as posições cujo número tem o bit correspondente ativado. Os três resultados formam em binário a posição do bit errado (0 = sem erro). No exemplo, 101 aponta a posição 5.
P: O que é o Hamming estendido (SECDED)?
R: Um bit de paridade global transforma o (7,4) em (8,4): corrige 1 erro e detecta 2. A memória ECC usa o mesmo princípio, geralmente como (72,64) com 8 bits de controle para 64 de dados.