微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > 微电子学习交流 > 请教一个crc的问题

请教一个crc的问题

时间:12-12 整理:3721RD 点击:
串行crc,要求初值为0xFF:如果初值为0xFF,是不是需要在发送前将crc计算所得的余数取反再发送?接收端收到以上数据后做crc校验时,是不是最后余数是0xFF(不是0x0)才代表传输无误?
   对crc算法没有太深的理解,针对初值为0xFF的情况试了一下似乎是的,请教大牛帮忙确认,谢谢!

CRC有两种校验方式,一种是payload根据parity算出来一个signature,然后payload+signature发给接收端。接收端根据payload(无parity)再算一遍crc,得出的signature(new)和接受到的signature比较。这种不多。
第二种就是结果是0x00那种。接收端收到payload+signature后,根据parity再整体(payload+signature)crc,结果是0x00就是无误的。

第一种没什么问题,现在就是想实现第二种,但我无论如何也得不到0x0。
假设x^8+x^4+x^3+x^2+1,初值为0xff,需要怎么处理呢?求指点,多谢!

假设初值为0xff,crc计算完成后,传输前取反,这样第二种校验可以得到0xff,是否初值不为0的判断条件不是0而是0xff?

就是从头开始xor就可以了~  你这相当于100011101,用这个和0xFF从MSB开始异或,然后往LSB移动parity,最后就得到了signature。
不行你可以看下wiki,有crc的例子。

跟初值无关,本质上是多项式除法,余数应该为0.

很多CRC校验在传输前取反,在receiver端会得到一个固定值(不是零)

标准生成多项式是这么说,因为客户给的不是标准多项式,我又缺乏足够的crc数学理论基础。

写个model算一下就好了啊,只要有多项式,就能算出结果

先找个标准多项式,标准数据,验证代码OK了。再改成非标多项式

上一篇:offer求教
下一篇:ap和bp哪个更重要?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top