循環冗餘檢驗

循環冗餘檢驗

循環冗餘檢驗,是在數字數據通信中,由傳送器傳送的數據信號禎(Frame)在經由網路傳到接收器後,由於多種原因可能導致錯誤位(bit errors)的出現,因此必須由接收器採取一定的措施探測出所有的錯誤位,並進而採取一定的措施予以修正。 CRC循環冗餘校驗就是一種有效的方法。

簡介

循環冗餘檢驗循環冗餘檢驗

傳送器和接收器約定選擇同一個由n+1個位組成的二進制位列P作為校驗列,傳送器在數據禎的K個位信號後添加n個位(n < K)組成的FCS禎檢驗列(Frame Check Sequence),以保證新組成的全部信號列值可以被預定的校驗二進制位列P的值對二取模整除;接收器檢驗所接收到數據信號列值(含有數據信號禎和FCS禎檢驗列)是否能被校驗列P對二取模整除,如果不能,則存在傳輸錯誤位。P被稱為CRC循環冗餘校驗列,正確選擇P可以提高CRC冗餘校驗的能力。可以證明,只要數據禎信號列M和校驗列P是確定的,則可以唯一確定FCS禎檢驗列(也稱為CRC冗餘檢驗值)的各個位。FCS幀檢驗列可由下列方法求得:在M後添加n個零後對二取模整除以P所得的餘數。

例如:如要傳輸的M=7位列為1011101,選定的P校驗二進制位列為10101(共有n+1=5位),對應的FCS幀校驗列即為用1011101 0000(共有M+n=7+4=11位)對二取模整除以10101後的餘數0111(共有n=4位)。因此,傳送方應傳送的全部數據列為10111010111。接收方將收到的11位數據對二取模整除以P校驗二進制位列10101,如餘數非0,則認為有傳輸錯誤位。

為了表示方便,實用時傳送器和接收器共同約定選擇的校驗二進制位列P常被表示為具有二進制係數(1或0)的CRC標準校驗多項式P(X)。CRC循環冗餘校驗常用的標準多項式P(X)

CRC(16位) = X^16+X^15+X^2+1

CRC(CCITT) = X^16+X^12+X^5+1

CRC(32位) =X^32+X^26+X^23+X^16+X^12+X^11+X^10+X^8+X^7+X^5+X^4+X^2+X+1

以CRC(16位)多項式為例,其對應校驗二進制位列為1 1000 0000 0000 0101。

CRC循環冗餘校驗具有比奇偶校驗強得多的檢錯能力。可以證明:它可以檢測出所有的單個位錯、幾乎所有的雙個位錯、低於P(X)對應二進制校驗列位數的所有連續位錯、大於或等於P(X)對應二進制校驗列位數的絕大多數連續位錯。但是,當傳輸中發生的錯誤多項式E(X)能被校驗多項式P(X)對二取模整除時,它就不可能被P(X)探測出來,例如當E(X)=P(X)時。

相關搜尋

熱門詞條

聯絡我們