電子產(chǎn)業(yè)一站式賦能平臺

PCB聯(lián)盟網(wǎng)

搜索
查看: 62|回復(fù): 0
收起左側(cè)

如何選擇CRC校驗碼的長度?

[復(fù)制鏈接]

660

主題

660

帖子

4567

積分

四級會員

Rank: 4

積分
4567
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2024-11-30 08:01:00 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式

9 h5 F: m$ q; `' j* S點擊上方藍(lán)色字體,關(guān)注我們* u: Z7 y3 ?4 ?9 ^# @5 g
+ C4 w8 K9 S( A4 a0 I2 D
選擇CRC校驗碼的長度時確實需要在檢錯能力和系統(tǒng)開銷之間做出權(quán)衡。CRC碼的長度(通常是4、8、16、32位)直接影響到能檢測到的錯誤類型和概率。
$ M/ d9 ?% D. C  \
& p* S9 U$ G+ p' G4 \3 p9 }  `   C2 |8 F4 I2 i2 z
要確定在一定檢錯概率 p 下的最小CRC長度,可以從幾個方面入手,包括信息長度 n、錯誤檢測概率需求 p、以及CRC多項式的選擇。$ ]& ~" u0 N3 g0 U4 k( {4 ^
1 F# p: ?; j1 `
下面從理論背景、實用方法以及計算步驟等方面詳細(xì)解釋。/ n4 d3 f$ S. c4 Q! t- ]
1- Q! u) f' i& `; X5 Q
理論背景:CRC的檢錯原理( i( \1 F8 y' E  P
CRC(Cyclic Redundancy Check)使用一個特定的生成多項式對數(shù)據(jù)幀進(jìn)行余數(shù)計算,產(chǎn)生一個校驗碼。
2 O- ^* [' n4 O1 c+ Q6 Z4 C; w  r) c/ ?9 J
接收端利用相同的多項式重算余數(shù),如果余數(shù)為零則判定無誤差,否則判定出錯。
2 L/ G- Z# G0 n1 R& ?# I; a1 N- [# I- X4 C# _8 z) I
對于不同長度的CRC碼,其生成多項式能探測不同類型的錯誤:$ \* p( m( }  n% e+ L! |
  • 單比特錯誤:任何CRC都能檢測單比特錯誤。
  • 連續(xù)位翻轉(zhuǎn)的突發(fā)錯誤:長度為 k 位的CRC最多可以檢測到長度不超過 k 位的突發(fā)錯誤。
  • 隨機(jī)錯誤:概率與CRC碼的位數(shù)有關(guān)。. B$ o' _- |+ P% x$ t% z+ j, e, }

    % w4 B7 |6 P' P1 B2
    + A6 I$ v3 X' R7 j檢錯概率的數(shù)學(xué)模型, _9 U/ z) y  `  i' e
    CRC的檢錯概率可以近似通過以下公式進(jìn)行估算:; t2 W4 ]- R) q9 f
    / v2 |: ~, E3 m. U
    其中 k為CRC校驗碼的位數(shù)。% t) o' Q9 Y! G9 h8 J6 x/ z

    + L( `. R: J; j0 I  l4 M7 K例如,對于一個8位的CRC碼,理論上可檢測到的錯誤概率約為 1?1/256=0.996。從公式中可以看出,位數(shù)越多,檢錯概率越高。
    & R. K8 S; f+ q$ v3" _. X4 U; \9 u! v; q, _- `) ]
    根據(jù)信息長度 n 和所需檢錯概率 p 計算CRC位數(shù)- v' p& N. `8 m2 n
    在實際應(yīng)用中,我們可以通過以下步驟來確定CRC的位數(shù):確定目標(biāo)檢錯概率:假設(shè)我們要求的檢錯概率 Pdetect≥p。
    1 c4 O. k) ^7 Y- J- b
    & o% o8 _/ y4 T2 W- i3 b. Z# ]$ n代入公式并求出位數(shù):我們可以重新排列公式來得到最小的CRC位數(shù):
    4 S' Q+ |" }" K' Y( \: h ! m) U& l6 [6 _5 n& v3 \
    例如,若我們希望檢錯概率 p=0.999,則:
    9 ^$ \+ Y6 m% w0 P: d7 l- t2 R   N. }8 k8 u4 E2 @, p
    這意味著至少需要10位的CRC才能滿足這個檢錯概率。
    / f- b, J  y; S1 }' r3 y- @- S$ c5 s# J+ ?$ r, x/ ~7 ^8 @4 }$ x/ C
    考慮信息長度 n:雖然理論上,CRC的檢錯能力與信息長度 n 不直接相關(guān),但在極長的幀中,可能會遇到極端情況。
    6 ~: X1 p# `9 X" k6 N3 a5 o7 ]" B! E  D) `3 x$ }
    因此,當(dāng) n 非常大(如數(shù)百甚至上千位)時,建議增加1-2位以提高穩(wěn)健性。. M  J( D$ V0 D9 N" i, G0 e
    4
    + m/ P+ v% Y- O5 y: Q1 R5 Z* dCRC位數(shù)選擇的經(jīng)驗法則; ^5 @1 s! K, S8 T" o( D: i
  • 短數(shù)據(jù)幀(如10-100比特):通常8位的CRC碼已經(jīng)可以提供很高的檢錯概率,適合普通通信應(yīng)用。
  • 中等數(shù)據(jù)幀(100-1000比特):16位的CRC是更合適的選擇,適合要求較高檢錯概率的協(xié)議。
  • 長數(shù)據(jù)幀(1000比特以上):32位CRC可以提供極高的檢錯能力,多用于高可靠性的工業(yè)、通信或存儲系統(tǒng)中。
    ' N! [2 }. p' `1 M2 |1 |

    . C7 v  w6 A/ N假設(shè)你設(shè)計的協(xié)議需要保證檢錯概率不低于 p=0.999,且每幀數(shù)據(jù)為 n=500 比特。
    . s. M& C2 n! }( g' p  q' s1 A
    2 n" ]0 X) A. ^" c根據(jù)上面的公式,我們計算得到的最小位數(shù)約為10位;結(jié)合數(shù)據(jù)幀長度,實際應(yīng)用中推薦至少選擇12位甚至16位的CRC,以確保滿足高檢錯需求。1 J) U4 K. V9 A$ v2 t$ y
    - Q# h2 X$ v# Q. N8 `/ p0 K
    進(jìn)一步的,標(biāo)準(zhǔn)CRC多項式(如CRC-16或CRC-32)經(jīng)過廣泛驗證,在通信和存儲應(yīng)用中可靠性高,通常推薦直接采用這些標(biāo)準(zhǔn)多項式。" n* v5 K5 t7 d0 \
    59 }% B, |' `2 j
    CRC碼位數(shù)對系統(tǒng)的影響# L' K4 \9 P' p  D
    位數(shù)越長的CRC校驗碼,校驗性能越好,但代價是數(shù)據(jù)包的開銷和計算復(fù)雜性增大。
    3 T3 S# s0 t5 j! K: l! k. r& Q- k, h& F( e# x7 |( ^; N
    典型的實現(xiàn)中:
    & C& d. J  b- w
  • 計算性能:硬件CRC加速器可以顯著降低較長CRC的計算延遲。
  • 通信開銷:8位CRC增加的傳輸開銷通常較小,但超過16位時,額外開銷對低速通信協(xié)議影響較大。
    ( j3 P( l9 T1 N: a" x- d% z
    9 H. C0 G/ S( v$ G& {2 g
    綜合以上分析,為了在實際應(yīng)用中確定CRC碼長度,建議的步驟如下:
    " {3 |' ]6 e2 e
  • 根據(jù)要求的檢錯概率計算最小位數(shù)。
  • 考慮數(shù)據(jù)幀長度,適當(dāng)增加1-2位以提高穩(wěn)健性。
  • 使用標(biāo)準(zhǔn)CRC多項式以確保通用性和可靠性。
    ' c. s) _- i& t+ Y+ ?9 `0 d/ h
    3 U; p- V1 Q7 ]. d9 B5 H3 }. ~8 A
    9 h5 w+ R# X) s' Y2 `2 ?

    ( f- Z  G# p3 ]0 y' h點擊閱讀原文,更精彩~
  • 回復(fù)

    使用道具 舉報

    發(fā)表回復(fù)

    您需要登錄后才可以回帖 登錄 | 立即注冊

    本版積分規(guī)則


    聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表