|
vtpp4vvsgfj64044431419.gif (60.41 KB, 下載次數(shù): 0)
下載附件
保存到相冊
vtpp4vvsgfj64044431419.gif
2024-11-30 22:01 上傳
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 } `
0tnvlapkqrq64044431519.png (761.3 KB, 下載次數(shù): 0)
下載附件
保存到相冊
0tnvlapkqrq64044431519.png
2024-11-30 22:01 上傳
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
vkrxvwac1xd64044431619.jpg (16.17 KB, 下載次數(shù): 1)
下載附件
保存到相冊
vkrxvwac1xd64044431619.jpg
2024-11-30 22:01 上傳
/ 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
5hnnjxxd4il64044431719.jpg (19.08 KB, 下載次數(shù): 0)
下載附件
保存到相冊
5hnnjxxd4il64044431719.jpg
2024-11-30 22:01 上傳
! m) U& l6 [6 _5 n& v3 \
例如,若我們希望檢錯概率 p=0.999,則:
9 ^$ \+ Y6 m% w0 P: d7 l- t2 R
33vw2bzldje64044431819.jpg (34.05 KB, 下載次數(shù): 0)
下載附件
保存到相冊
33vw2bzldje64044431819.jpg
2024-11-30 22:01 上傳
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% z9 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/ h3 U; p- V1 Q7 ]. d9 B5 H3 }. ~8 A
pa2u5r01uci64044431919.jpg (71.14 KB, 下載次數(shù): 0)
下載附件
保存到相冊
pa2u5r01uci64044431919.jpg
2024-11-30 22:01 上傳
9 h5 w+ R# X) s' Y2 `2 ?
d0vuz2dwazn64044432019.gif (45.46 KB, 下載次數(shù): 0)
下載附件
保存到相冊
d0vuz2dwazn64044432019.gif
2024-11-30 22:01 上傳
( f- Z G# p3 ]0 y' h點擊閱讀原文,更精彩~ |
|