imaginei que vc estava falando na implementacao serial vs paralela do CRC... dah uma ollhada nesse pdf aqui, na pagina 3 e 4 tem a comparacao do CRC-16 nas duas formas:
http://ishaksuleiman.tripod.com/00000.pdf
porem a implementacao da pagina 4 possui um erro. ela usa como entrada algumas saidas e isso nao eh possivel, pq os tempos de propagacao sao implevisiveis e isso altera os resultados. a solucao seria colocar alguns flip-flops em pontos estrategicos, mas os clocks adicionais criariam um efeito pipeline que precisaria ser compensado e tornaria a implementacao muito complexa.
assim, a implementacao serial acabou ficando mais pratica para o que eu queria... mas vou ter q dar um jeito de fazer uma implementacao paralela funcionar para usar em um controlador ethernet na FPGA! :P
fabim escreveu:Marcelo Samsoniuk escreveu:acho que ele queria dizer bit a bit ao inves de byte a byte... digo isso pq tive uma dificuldade no CRC para HDLC... fazendo bit a bit consegui garantir que ele passava o fluxo de bits no polinomio na ordem correta (LSB first) e simplificava o circuito... rodando em paralelo byte a byte o negocio complicava um monte e nao dava certo nunca... obvio, se der uma estudada a fundo, vc consegue transpor o algoritmo bit a bit para trabalhar byte a byte e sem duvida fica muito melhor quando se trabalha com taxas de transferencias altas.
fabim escreveu:verd escreveu:Olá Beto! cara descobri o que estava cagando o meu crc! eu pensava que o crc era calculado em cima do pacote inteiro, descobri que tem que calcular o crc de cada bit do pacote que estou enviando!
sei, e como se calcula o CRC de 1 bit ? hehehe
hehehehe, vou fazer de conta que não li o que escreveu....