15.05.2013 Views

AGRADECIMIENTOS

AGRADECIMIENTOS

AGRADECIMIENTOS

SHOW MORE
SHOW LESS

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.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!