AGRADECIMIENTOS
AGRADECIMIENTOS
AGRADECIMIENTOS
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
43<br />
4. DESARROLLO DEL PROTOCOLO USB.<br />
cada vez que llega uno se opera sobre él y se acumula el valor correspondiente para<br />
los siguientes bits en el resto.<br />
La última característica especial consiste en invertir el resto antes de colocarlo<br />
al final de la cadena de bits enviada, que se supone el dividendo. Matemáticamente<br />
equivale a sumar una constante conocida al resto. La razón de esta operación es<br />
evitar que el resultado final sea cero, pues ceros añadidos al final del paquete no se<br />
detectarían como errores, y es que si se añade al polinomio su resto tal cual, los ceros<br />
añadidos erróneamente al final darían como residuo igualmente cero al continuar la<br />
división.<br />
El paquete estará formado por el polinomio con su resto invertido a<br />
continuación, sin ninguna diferenciación, de forma que en su chequeo hay que dividirlo<br />
todo para obtener el valor de la constante que equivale a la inversión del resto. Este<br />
valor residual constante es 01100 (X4 + X3 ) para los paquetes de token y<br />
1000000000001101 (X15+X3+X2+x0) para los de datos.<br />
La generación del crc se calcula antes de generar el bit sttufing, del mismo<br />
modo tendrá que deshacerse este antes de la comprobación.<br />
En la implementación se divide el cálculo del crc en 5 estados. En el primero,<br />
“datos”, se inicializan las variables y se rellena el resto de unos para pasar al siguiente<br />
estado, “inici”. En el estado “inici” se comprueba ya el primer bit que llega, se calcula el<br />
XOR de este bit con el bit mas alto del residuo, y en función de este resultado se<br />
actuará de una manera u otra, no hay que considerar simplemente el bit que llega sino<br />
que hay que tener en cuenta lo acumulado en el resto. En el siguiente estado<br />
“comprobación”, si el resultado fue un cero, se desplaza simplemente el resto a la<br />
izquierda rellenándose el bit de menor peso con un cero, y si el resultado del XOR fue<br />
un uno, se realiza una XOR completa entre el resto y el polinomio generador después<br />
de desplazar el resto.<br />
También se calcula el resultado XOR del siguiente bit recibido con el bit de<br />
mayor peso del residuo que nos queda para saber como se operará en el siguiente<br />
clock avanzándose un paso.