CRC-12 e CRC-CCITT

O CRC-12 possui um total de 12+ k bits, sendo que k são de informação (12+ k, k). Da mesma maneira o CRC-CCITT pode ser definido por (16+ k, k). Os polinômios geradores para o CRC-12 e CRC-CCITT são definidos pelas expressões:

G(X) = X12 + X11 + X3 + X2 + X + 1, e

G(X) = X16 + X12 + X5 + 1

O polinômio gerador pode ser implementado utilizando-se portas ou-exclusivo, e flip-flops tipo D (células de memória), em uma configuração que permita um deslocamento dos bits. Esse código é utilizado basicamente em comunicações seriais. Uma aplicação em paralelo pode ser feita utilizando-se vários polinômios geradores, um para cada bit da informação paralela, transmitindo simultaneamente.

O funcionamento é bem simples, inicialmente os registradores do polinômio gerador (BCR - registro de verificação do bloco), são preenchidos com algum valor, como por exemplo zero. Os bits de informação são transmitidos serialmente, cada um provocando uma alteração na primeira porta XOR, que iniciará um deslocamento pelo restante do circuito. Após toda a palavra ter sido transmitida, o BCR estará pronto, sendo também transmitido. Na recepção existe um G(X) idêntico preenchido com os mesmos valores iniciais. Após a recepção da informação ambos G(X) devem conter o mesmo BCR, e finalmente após a recepção do BCR, o BCR do receptor deve conter seu valor inicial, por exemplo zero.

Esse código é utilizado para correção de alguns erros em rajada, e de qualquer erro simples (1 bit errado).