Códigos de Paridade: Detecção e Correção de Erros Digitais

Nesta parte do estudo, exploraremos como os códigos de paridade são utilizados para detecção (e, em alguns casos, correção) de erros em sistemas digitais. A confiabilidade nos sistemas de comunicação e armazenamento digitalIntrodução à Eletrônica Digital: Conceitos Básicos e AplicaçõesIntrodução à Eletrônica Digital: Conceitos Básicos e AplicaçõesDescubra os conceitos e aplicações essenciais da Eletrônica Digital, do funcionamento de sinais binários aos transistores, e comece sua jornada tecnológica. depende bastante de técnicas que possam identificar, isolar ou até corrigir falhas na transmissão de bits. A seguir, apresentaremos o conceito de código de paridade, suas variações e exemplos de aplicação.

Motivação e Contexto🔗

Imagine um sistema que transmite dados por um canal sujeito a interferências (ruídos, falhas em conectores, distorções). Qualquer simples inversão de um bitSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalAprenda conversões de sistemas numéricos em eletrônica digital. Descubra métodos para converter entre decimal, binário, octal e hexadecimal com exemplos. pode corromper a informação final. Para combater essa possibilidade, adiciona-se um bitSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalAprenda conversões de sistemas numéricos em eletrônica digital. Descubra métodos para converter entre decimal, binário, octal e hexadecimal com exemplos. de paridade ou, em configurações mais elaboradas, múltiplos bitsSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalAprenda conversões de sistemas numéricos em eletrônica digital. Descubra métodos para converter entre decimal, binário, octal e hexadecimal com exemplos. de paridade para detectar (e possivelmente corrigir) erros.

Por que paridade?

O termo “paridade” indica se a quantidade de bitsSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalAprenda conversões de sistemas numéricos em eletrônica digital. Descubra métodos para converter entre decimal, binário, octal e hexadecimal com exemplos. “1” num conjunto é par ou ímpar. Ao final de um bloco de dados, a paridade fornece um indicador de integridade muito simples de se verificar.

Conceitos Fundamentais🔗

Bit de Paridade

O bitSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalAprenda conversões de sistemas numéricos em eletrônica digital. Descubra métodos para converter entre decimal, binário, octal e hexadecimal com exemplos. de paridade é um bit adicional anexado a um conjunto de bits de dados com o objetivo de manter (ou verificar) se a quantidade de bitsSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalAprenda conversões de sistemas numéricos em eletrônica digital. Descubra métodos para converter entre decimal, binário, octal e hexadecimal com exemplos. “1” atende a uma regra pré-estabelecida (par ou ímpar).

  • Paridade Par (Even Parity)

Neste esquema, o bit de paridade é escolhido de modo que o total de bitsSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalAprenda conversões de sistemas numéricos em eletrônica digital. Descubra métodos para converter entre decimal, binário, octal e hexadecimal com exemplos. “1” (dados + bit de paridade) seja sempre um número par.

Aqui, o bit de paridade é definido para que o total de bitsSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalAprenda conversões de sistemas numéricos em eletrônica digital. Descubra métodos para converter entre decimal, binário, octal e hexadecimal com exemplos. “1” (dados + bit de paridade) seja ímpar.

Em ambos os esquemas, caso um bit seja invertido durante a transmissão, o total de bitsSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalAprenda conversões de sistemas numéricos em eletrônica digital. Descubra métodos para converter entre decimal, binário, octal e hexadecimal com exemplos. “1” vai deixar de respeitar a regra (não será mais par ou não será mais ímpar), indicando ao receptor que houve erro.

Importante: a paridade simples detecta erros de um número ímpar de bits (1, 3, 5...), mas não detecta erros de um número par de bits simultâneos (2, 4, 6...).

Detecção vs. Correção com Paridade🔗

Detecção de Erros

A utilização mais comum da paridade é a detecção de erros de bit único (ou de qualquer quantidade ímpar de bits alterados). Se a verificaçãoIntrodução ao SystemVerilog: História e EvoluçãoIntrodução ao SystemVerilog: História e EvoluçãoDescubra a trajetória do SystemVerilog, sua origem a partir do Verilog, e os marcos que transformaram a verificação de hardware na indústria digital. no receptor não corresponder à regra combinada (par ou ímpar), sabe-se que houve um erro. Entretanto, essa técnica não informa em qual posição o erro ocorreu, apenas detecta que existe algo de errado.

Codificação com Paridade Dupla (2D)

Uma abordagem possível para também corrigir erros de bitSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalAprenda conversões de sistemas numéricos em eletrônica digital. Descubra métodos para converter entre decimal, binário, octal e hexadecimal com exemplos. único é a paridade bidimensional. Imagine os dados organizados numa matriz com m linhas e n colunas, cada uma com um bit de paridade na linha e na coluna. Esse arranjo forma uma espécie de “rede” de bitsSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalAprenda conversões de sistemas numéricos em eletrônica digital. Descubra métodos para converter entre decimal, binário, octal e hexadecimal com exemplos. de paridade:

1. Cada linha possui um bitSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalAprenda conversões de sistemas numéricos em eletrônica digital. Descubra métodos para converter entre decimal, binário, octal e hexadecimal com exemplos. de paridade, garantindo a paridade par ou ímpar para aquela linha.

2. Cada coluna possui um bitSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalAprenda conversões de sistemas numéricos em eletrônica digital. Descubra métodos para converter entre decimal, binário, octal e hexadecimal com exemplos. de paridade, garantindo a paridade geral para aquela coluna.

Se um bit for invertido, tanto a paridade da linha onde ocorreu o erro quanto a da coluna correspondente se tornarão inválidas. Assim, o sistema consegue localizar o bitSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalAprenda conversões de sistemas numéricos em eletrônica digital. Descubra métodos para converter entre decimal, binário, octal e hexadecimal com exemplos. corrompido (interseção daquela linha e coluna) e corrigi-lo invertendo-o de volta. No entanto, esse esquema requer mais bitsSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalAprenda conversões de sistemas numéricos em eletrônica digital. Descubra métodos para converter entre decimal, binário, octal e hexadecimal com exemplos. para paridade (um para cada linha mais um para cada coluna) e é mais comum em aplicações que lidam com blocos de dados maiores.

Exemplo Prático de Verificação de Paridade🔗

Suponha que temos 4 bytesIntrodução à Eletrônica Digital: Conceitos básicos: bits, bytes, palavras, sinais de clock e sua importânciaIntrodução à Eletrônica Digital: Conceitos básicos: bits, bytes, palavras, sinais de clock e sua importânciaDomine fundamentos da eletrônica digital: bits, bytes, palavras e clock que impulsionam o desempenho e eficiência de sistemas modernos. (D1, D2, D3, D4) transmitidos em sequência. Cada byteIntrodução à Eletrônica Digital: Conceitos básicos: bits, bytes, palavras, sinais de clock e sua importânciaIntrodução à Eletrônica Digital: Conceitos básicos: bits, bytes, palavras, sinais de clock e sua importânciaDomine fundamentos da eletrônica digital: bits, bytes, palavras e clock que impulsionam o desempenho e eficiência de sistemas modernos. adota a paridade par:

Byte OriginalBits "1" (sem paridade)Bit de ParidadeByte Transmitido
D1 = 0101010140010101010
D2 = 1100000131110000011
D3 = 0111100040011110000
D4 = 0001111040000111100

Obs.: É comum representarmos cada byte como 8 bitsSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalAprenda conversões de sistemas numéricos em eletrônica digital. Descubra métodos para converter entre decimal, binário, octal e hexadecimal com exemplos. e o bit de paridade como um 9º bit adicional (ou um bit à parte, dependendo do protocolo).

1. No receptor, cada byte é analisado para conferir se a quantidade de bitsSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalAprenda conversões de sistemas numéricos em eletrônica digital. Descubra métodos para converter entre decimal, binário, octal e hexadecimal com exemplos. “1” está de acordo com a paridade par.

2. Se algum byte apresentar número de bitsSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalAprenda conversões de sistemas numéricos em eletrônica digital. Descubra métodos para converter entre decimal, binário, octal e hexadecimal com exemplos. “1” ímpar, sinaliza-se um erro de transmissão.

Vantagens e Limitações🔗

Conclusão🔗

Os códigos de paridade são uma técnica fundamental e acessível para detecção de erros em sistemas digitais, presentes historicamente em protocolos de comunicação, memórias e dispositivos de armazenamento. Em configurações mais complexas (como a paridade bidimensional), também podem indicar a posição do erro, permitindo correção de falhas de bitSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalSistemas de Numeração e Conversão: Binário, Decimal, Octal e HexadecimalAprenda conversões de sistemas numéricos em eletrônica digital. Descubra métodos para converter entre decimal, binário, octal e hexadecimal com exemplos. único.

Apesar de suas limitações frente a erros múltiplos ou cenários de alta densidade de falhas, os métodosMétodos e Sobrecarga: Técnicas para Maior FlexibilidadeMétodos e Sobrecarga: Técnicas para Maior FlexibilidadeDescubra como métodos, tasks, functions e sobrecarga em SystemVerilog otimizam a programação orientada a objetos com exemplos práticos e dicas de boas práticas. de paridade permanecem populares por sua eficiência e simplicidade de implementação. Em muitos casos, eles são a primeira barreira de defesa contra transmissões incorretas ou dados corrompidos, sendo usados em conjunto com outras técnicas de verificaçãoIntrodução ao SystemVerilog: História e EvoluçãoIntrodução ao SystemVerilog: História e EvoluçãoDescubra a trajetória do SystemVerilog, sua origem a partir do Verilog, e os marcos que transformaram a verificação de hardware na indústria digital. para assegurar a integridade nos sistemas digitais.

Referência rápida:

Dica prática: sempre verificar se o overhead (bits adicionais) e a complexidade compensam a proteção fornecida, levando em conta a taxa de erro real do canal ou dispositivo.

Com isso, finalizamos o estudo sobre códigos de paridade, abordando tanto a lógica básica de detecção quanto a possibilidade de correção em um arranjo de paridade bidimensional.

Autor: Marcelo V. Souza - Engenheiro de Sistemas e Entusiasta em IoT e Desenvolvimento de Software, com foco em inovação tecnológica.

Referências🔗

Compartilhar artigo