|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
最近在USB的代码,然后其中有一个CRC5校验,但是没看懂,我不明白那个crc_in[4:0]是从哪儿来的?这里的每个校验位到底是怎么算出来的?我根据生产多项式G(X)=X5+X4+X2+1,和M(X)*Xr=Q(X)*G(X)+R(X),算出来的R(x)表达式和这个代码中的不一样啊?求各位大神帮帮忙,解释一下,如果能有推算出这个crc_out的过程就感激涕零了。
- module usbf_crc5(crc_in, din, crc_out);
- input [4:0] crc_in;
- input [10:0] din;
- output [4:0] crc_out;
- assign crc_out[0] = din[10] ^ din[9] ^ din[6] ^ din[5] ^ din[3] ^
- din[0] ^ crc_in[0] ^ crc_in[3] ^ crc_in[4];
- assign crc_out[1] = din[10] ^ din[7] ^ din[6] ^ din[4] ^ din[1] ^
- crc_in[0] ^ crc_in[1] ^ crc_in[4];
- assign crc_out[2] = din[10] ^ din[9] ^ din[8] ^ din[7] ^ din[6] ^
- din[3] ^ din[2] ^ din[0] ^ crc_in[0] ^ crc_in[1] ^
- crc_in[2] ^ crc_in[3] ^ crc_in[4];
- assign crc_out[3] = din[10] ^ din[9] ^ din[8] ^ din[7] ^ din[4] ^ din[3] ^
- din[1] ^ crc_in[1] ^ crc_in[2] ^ crc_in[3] ^ crc_in[4];
- assign crc_out[4] = din[10] ^ din[9] ^ din[8] ^ din[5] ^ din[4] ^ din[2] ^
- crc_in[2] ^ crc_in[3] ^ crc_in[4];
- endmodule
复制代码 |
|