问题描述
我正在考虑设计一种低级的无线电通信协议,并试图决定要使用哪种校验和/ CRC。硬件提供CRC-8。每个包除了数据有效载荷外还有6个字节的开销。设计目标之一是最小化传输开销。对于某些类型的数据,CRC-8应该足够,对于其他类型的数据,则有必要对其进行补充,以免接收错误的数据。
I'm looking at designing a low-level radio communications protocol, and am trying to decide what sort of checksum/crc to use. The hardware provides a CRC-8; each packet has 6 bytes of overhead in addition to the data payload. One of the design goals is to minimize transmission overhead. For some types of data, the CRC-8 should be adequate, for for other types it would be necessary to supplement that to avoid accepting erroneous data.
如果是单字节补码,那么使用多项式与硬件CRC-8不同的CRC8,算术校验和以及其他方式的优缺点是什么?两字节的补码呢? CRC-16是一个不错的选择,还是考虑到CRC-8的存在,还有其他更好的方法吗?
If I go with a single-byte supplement, what would be the pros and cons of using a CRC8 with a different polynomial from the hardware CRC-8, versus an arithmetic checksum, versus something else? What about for a two-byte supplement? Would a CRC-16 be a good choice, or given the existence of a CRC-8, would something else be better?
推荐答案
2004年,CMU的Phillip Koopman发表了有关选择最合适的CRC的论文,
In 2004 Phillip Koopman from CMU published a paper on choosing the most appropriate CRC, http://www.ece.cmu.edu/~koopman/crc/index.html
该论文应该帮助您分析8位CRC的实际有效性,以及从另外8位获得的更多保护。前一段时间,它帮助我确定了FPGA之间自定义协议中的4位CRC和4位数据包头。
That paper should help you analyze how effective that 8 bit CRC actually is, and how much more protection you'll get from another 8 bits. A while back it helped me to decide on a 4 bit CRC and 4 bit packet header in a custom protocol between FPGAs.
这篇关于CRC8保护的数据包的最佳8位补充校验和的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!