如何确定使用哪种CRC?

问题描述 投票:0回答:3

如果我有一定数量的字节要串行传输,如何确定使用哪种 CRC(CRC8、CRC16 等,基本上是多少位 CRC?)并且错误检测百分比仍然很高?有这个公式吗?

crc
3个回答
6
投票

从CRC长度的角度来看,适用正常统计。对于 CRC 位宽,您有

1/(2^n)
的机会出现误报。因此,对于 8 位 CRC,您有 1/255 的机会,等等。

然而,所选择的多项式也会产生很大的影响。数学高度依赖于正在传输的数据,这并不是一个简单的答案。

您应该根据您的通信机制评估不仅仅是 CRC(带有 Turbo 码等系统的 FEC 非常有用且常见)。


5
投票

要回答这个问题,您需要知道您的通道的误码率,这只能凭经验确定。然后,一旦获得测量的 BER,您就必须决定什么检测率对于您的目的来说足够“高”。

例如,发送每条消息 5 次,即使在非常嘈杂的通道上,也会给您带来相当好的检测效果,但它确实会稍微降低您的吞吐量。但是,如果您要向深空探测器发送命令,您可能需要这种冗余。


0
投票

选择 CRC 的一个很好的参考是 Philip Koopman 的CRC Zoo。他详尽地计算了保证常用多项式的最小汉明距离的消息位数。要使用此数据,请将多项式和汉明距离设置为比可容忍的位翻转数量大 1,您可以查找可以保护的消息位的最大数量。如果这对于您的需求来说太低,请寻找不同的多项式或更大的 CRC。请注意,他对多项式使用的表示法与通常使用的表示法不同,但存在交叉引用。

© www.soinside.com 2019 - 2024. All rights reserved.