迴圈冗餘校驗碼原理

2021-06-22 18:47:01 字數 1325 閱讀 7427

來自 

crc校驗採用多項式編碼方法,如乙個8位二進位制數(b7b6b5b4b3b2b1b0)可以用7階二進位製碼多項式b7x7+b6x6+b5x5+b4x4+b3x3+b2x2+b1x1+b0x0表示。 

例如11000001可表示為 

1x7+1x6+0x5+0x4+0x3+0x2+0x1+0x0 

一般說,n位二進位制數可用(n-1)階多項式表示。它把要傳送的資料位串看成是係數只能為「1」或「0」的多項式。乙個n位的資料塊可以看成是從xn-1到x0的n項多項式的係數序列,位於資料塊左邊的最高位是xn-1項的係數,次高位是xn-2項的係數,依此類推,位於資料塊右邊的最低位是x0項的係數,這個多項式的階數為n-1。 

多項式乘除法運算過程與普通代數多項式的乘除法相同。多項式的加減法運算以2為模,加減時不進、錯位,如同邏輯異或運算。 

採用crc校驗時,傳送方和接收方事先約定乙個生成多項式g(x),並且g(x)的最高項和最低項的係數必須為1。設m位資料塊的多項式為m(x),生成多項式g(x)的階數必需比m(x)的階數低。crc校驗碼的檢錯原理是:傳送方先為資料塊生成crc校驗碼,使這個crc校驗碼的多項式能被g(x)除盡,實際傳送此crc校驗碼;接收方用收到的crc校驗碼除以g(x),如果能除盡,表明傳輸正確,否則,表示有傳輸錯誤,請求重發。 

生成資料塊的crc校驗碼的方法是: 

(1)   設g(x)為r階,在資料塊末尾新增r個0,使資料塊為m+r位,則相應的多項式為xrm(x); 

(2)   以2為模,用對應於g(x)的位串去除對應於xrm(x)的位串,求得餘數字串; 

(3)   以2為模,從對應於xrm(x)的位串中減去餘數字串,結果就是為資料塊生成的帶足夠校驗資訊的crc校驗碼位串。 

例如,設要傳送的資料為1101011011,g(x)=x4+x+1,則首先在傳送資料塊的末尾加4個0,得到11010110110000,然後用g(x)的位串10011去除,再用11010110110000減去餘數字串1110,得到的即為crc位串11010110111110,將對應多項式稱為t(x),顯然,t(x)能被g(x)除盡。這樣,一旦接收到的crc位串不能被同樣的g(x)的位串除盡,那麼一定有傳輸錯誤。 

當使用crc校驗碼進行差錯控制時,除了為g(x)的整數倍的差錯多項式不能被檢測外,其它差錯均能被查出。crc校驗碼的差錯控制效果取決於g(x)的階數,階數越高,效果越好。目前,常用的有兩種生成多項式g(x)的方法,分別是: 

crc-16  x16+x15+x2+1 

ccitt  x16+x12+x5+1 

crc校驗碼實際上是一種線性碼,將任意crc校驗碼迴圈移位後仍然是乙個crc校驗碼。由於它有良好的結構,檢錯能力強,易於實現硬體編、解碼,因此在資料通訊系統中得到廣泛的應用。 

校驗碼 迴圈冗餘校驗碼

迴圈冗餘校驗碼,又稱crc碼。它利用生成多項式來為k個資料位產生r個校驗位來進行編碼。其編碼長度為k r。迴圈冗餘校驗碼由兩部分組成,左邊為資訊碼 資料 右邊為校驗碼,如下圖 若資訊碼佔k位,則校驗碼就佔n k位,其中,n為crc碼的字長,所以又稱為 n,k 碼。校驗碼位數越多,校驗能力越強。crc...

迴圈冗餘校驗碼

crc cyclic redundancy check 迴圈冗餘校驗碼 是常用的校驗碼,在早期的通訊中運用廣泛,因為早期的通訊技術不夠可靠 不可靠性的 是通訊技術決定的,比如電磁波通訊時受雷電等因素的影響 不可靠的通訊就會帶來 確認資訊 的困惑,書上提到紅軍和藍軍通訊聯合進攻山下的敵軍的例子,第一天...

迴圈冗餘校驗碼

crc碼是由兩部分組成,前部分是資訊碼,就是需要校驗的資訊,後部分是校驗碼,如果crc碼共長n個bit,資訊碼長k個bit,就稱為 n,k 碼。它的編碼規則是 將原資訊碼 kbit 左移r位 k r n 運用乙個生成多項式g x 也可看成二進位制數 用模2除上面的式子,得到的餘數就是校驗碼。非常簡單...