2016-08-19 59 views
2

我試圖找出如何計算任意CRC多項式的錯誤檢測能力。檢查CRC多項式的錯誤檢測能力

我知道有可能(或可能不會)適用於任意多項式各種錯誤檢測功能:

  1. 檢測單比特錯誤的: 所有CRC能做到這一點,因爲這不僅需要CRC寬度> = 1.

  2. 突發錯誤的檢測: 所有的CRC都可以檢測突發錯誤,直到大小等於它們的寬度。

  3. 奇數位錯誤的檢測: 具有偶數個項(即完整二進制多項式中的偶數個1位)的CRC可以做到這一點。

  4. 檢測隨機位錯誤(取決於幀大小): 我有一個隨時可用的C算法,可以計算給定HD和多項式的最大幀大小。我沒有完全理解它,但它的工作原理。

假設一個16位的CRC多項式x十八+ x 12 + x 5 + 1 = 0x11021。該多項式可以:

  • 檢測所有單位錯誤(數據大小無關)。
  • 檢測所有突發錯誤高達16位寬度(數據大小無關)。
  • 檢測所有奇數位錯誤(因爲它有4個多項式項;數據大小無關)。
  • 檢測3位錯誤(HD4),最大可達32571位數據大小。

以上是否正確?

是否有額外的CRC錯誤檢測功能?如果是,如果任意CRC多項式支持它們,我該如何檢查(沒有深入的數學知識)?

+0

這個問題很有趣。這可能是更好的cs.stackexchange.com – Nayuki

+0

@Nayuki:你可能是對的。先讓我們看看這裏發生了什麼...... – Silicomancer

回答

2

paper by Koopman and Chakravarty着眼於CRC性能的幾種措施,描述了措施和許多多項式的結果。簡而言之,「好」多項式的定義取決於它所應用的消息的長度,該消息因應用而異。主要的措施是漢明距離,它是消息中爲了返回相同的CRC而必須改變的最小位數,以及在規定的低誤碼率下的性能。