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

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

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

如何選擇CRC校驗(yàn)碼的長度?

[復(fù)制鏈接]

660

主題

660

帖子

4567

積分

四級會員

Rank: 4

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

* E: ?  v- c! q點(diǎn)擊上方藍(lán)色字體,關(guān)注我們% E; ?/ q- u# j/ _" ]9 T5 M
8 t1 O1 O' G8 Z
選擇CRC校驗(yàn)碼的長度時確實(shí)需要在檢錯能力和系統(tǒng)開銷之間做出權(quán)衡。CRC碼的長度(通常是4、8、16、32位)直接影響到能檢測到的錯誤類型和概率。7 S! Q7 V# o+ h2 J: N1 z

( T9 @1 j/ v+ d" a
; Q* y3 @6 U' K3 f/ I要確定在一定檢錯概率 p 下的最小CRC長度,可以從幾個方面入手,包括信息長度 n、錯誤檢測概率需求 p、以及CRC多項(xiàng)式的選擇。
  |3 a, G0 |8 g' T5 y/ ?+ {  B- b+ }. F+ D6 e4 X, Z
下面從理論背景、實(shí)用方法以及計算步驟等方面詳細(xì)解釋。
) q! j6 d8 [* b$ ]0 F( [1 w. W/ n1
/ Z, d$ r  b% [: p: G理論背景:CRC的檢錯原理
9 I5 l- u5 k/ _+ V; s. OCRC(Cyclic Redundancy Check)使用一個特定的生成多項(xiàng)式對數(shù)據(jù)幀進(jìn)行余數(shù)計算,產(chǎn)生一個校驗(yàn)碼。8 C1 ?- f* g$ K# i
: b; J; p3 m+ b. S  ]
接收端利用相同的多項(xiàng)式重算余數(shù),如果余數(shù)為零則判定無誤差,否則判定出錯。
  @$ R4 L8 M; D" i# [; J5 M/ C6 Z  l- H0 d
對于不同長度的CRC碼,其生成多項(xiàng)式能探測不同類型的錯誤:  V/ q4 g$ j1 l0 c* q6 N
  • 單比特錯誤:任何CRC都能檢測單比特錯誤。
  • 連續(xù)位翻轉(zhuǎn)的突發(fā)錯誤:長度為 k 位的CRC最多可以檢測到長度不超過 k 位的突發(fā)錯誤。
  • 隨機(jī)錯誤:概率與CRC碼的位數(shù)有關(guān)。9 l' H: h3 j1 Z3 u3 a
    6 p/ B- ?8 G4 ~2 Y1 A) i
    2
    ) T- O" W8 k# _& S9 E% @檢錯概率的數(shù)學(xué)模型
    3 i3 o0 b3 G. s2 w/ d8 c% SCRC的檢錯概率可以近似通過以下公式進(jìn)行估算:
    0 h9 y; a1 p2 ^5 u" @+ ^ * c7 G2 M) Z. n$ H$ P" H( O
    其中 k為CRC校驗(yàn)碼的位數(shù)。
    ) {3 |; c+ r7 g8 W: ~/ |8 h; W5 E
    + f2 @0 X5 H! o+ i$ b# r  @& r例如,對于一個8位的CRC碼,理論上可檢測到的錯誤概率約為 1?1/256=0.996。從公式中可以看出,位數(shù)越多,檢錯概率越高。% R2 x$ f, L% K1 z, M/ Y' T
    3
    - A: r- H7 M; M  M- ], q根據(jù)信息長度 n 和所需檢錯概率 p 計算CRC位數(shù)1 r6 H2 ]$ v$ R/ G% l8 `
    在實(shí)際應(yīng)用中,我們可以通過以下步驟來確定CRC的位數(shù):確定目標(biāo)檢錯概率:假設(shè)我們要求的檢錯概率 Pdetect≥p。
    1 M$ C+ C* B2 T  Y
    + E. o: V/ e6 i, h& D代入公式并求出位數(shù):我們可以重新排列公式來得到最小的CRC位數(shù):
    : N7 y: B/ e& Z
    / U; _- C) l( f: K+ e例如,若我們希望檢錯概率 p=0.999,則:
    4 N( L4 ~: D% b* V" B( X0 K
    " s5 m& E0 m1 p- |# ?! |% n, D' u( |這意味著至少需要10位的CRC才能滿足這個檢錯概率。" A5 v1 F; v. w7 x" w
    . [: N! c) c( V
    考慮信息長度 n:雖然理論上,CRC的檢錯能力與信息長度 n 不直接相關(guān),但在極長的幀中,可能會遇到極端情況。
    ) ]8 L) ~6 _1 w0 L. f8 F6 q6 D# \" {' i8 `+ Q
    因此,當(dāng) n 非常大(如數(shù)百甚至上千位)時,建議增加1-2位以提高穩(wěn)健性。. f3 f& }3 C3 B0 s6 F, E5 k) q! W! M
    43 W, U4 }) x, q: z
    CRC位數(shù)選擇的經(jīng)驗(yàn)法則
    % x7 B* L) Q$ _+ `
  • 短數(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)中。6 U2 z* o, c  s! C: [5 u( R& `# ~. N

    , k* f' S$ u" x/ s, ~# e) V) z假設(shè)你設(shè)計的協(xié)議需要保證檢錯概率不低于 p=0.999,且每幀數(shù)據(jù)為 n=500 比特。
    ) G# J: I1 n& q3 a0 v' W9 c, G9 D1 x( z+ ]5 K
    根據(jù)上面的公式,我們計算得到的最小位數(shù)約為10位;結(jié)合數(shù)據(jù)幀長度,實(shí)際應(yīng)用中推薦至少選擇12位甚至16位的CRC,以確保滿足高檢錯需求。
    , ]  e! J3 {+ l) X8 ?* L+ p& w. f' j1 a2 F" z  ~% X* \0 `
    進(jìn)一步的,標(biāo)準(zhǔn)CRC多項(xiàng)式(如CRC-16或CRC-32)經(jīng)過廣泛驗(yàn)證,在通信和存儲應(yīng)用中可靠性高,通常推薦直接采用這些標(biāo)準(zhǔn)多項(xiàng)式。
    . |9 t9 s. [  b: M5 O( H54 M/ N+ Y) G/ D5 g; ^* s6 N
    CRC碼位數(shù)對系統(tǒng)的影響
    7 c, g6 e' i0 G4 e3 Q0 h' s7 U位數(shù)越長的CRC校驗(yàn)碼,校驗(yàn)性能越好,但代價是數(shù)據(jù)包的開銷和計算復(fù)雜性增大。; g2 {- R8 k7 q. W8 m. e: Q$ O4 c

    % w: A' k- p8 W- X+ v6 F典型的實(shí)現(xiàn)中:
    + P# e1 l& H8 J' M/ E2 D
  • 計算性能:硬件CRC加速器可以顯著降低較長CRC的計算延遲。
  • 通信開銷:8位CRC增加的傳輸開銷通常較小,但超過16位時,額外開銷對低速通信協(xié)議影響較大。
    8 B% F6 q) Z- h) j/ \5 ~3 e

    $ K1 b4 q' ?0 F1 y綜合以上分析,為了在實(shí)際應(yīng)用中確定CRC碼長度,建議的步驟如下:, E1 ~8 G  b! d, h
  • 根據(jù)要求的檢錯概率計算最小位數(shù)。
  • 考慮數(shù)據(jù)幀長度,適當(dāng)增加1-2位以提高穩(wěn)健性。
  • 使用標(biāo)準(zhǔn)CRC多項(xiàng)式以確保通用性和可靠性。. c7 h9 U! `3 e5 I: ^6 j2 X" _
    & C' n9 t4 k+ U; I/ e

    6 j6 r9 }2 n$ Q& C # ^5 i. G5 S3 u& @# D
    點(diǎn)擊閱讀原文,更精彩~
  • 回復(fù)

    使用道具 舉報

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

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

    本版積分規(guī)則


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