嵌入式累還是程序員累 什么是CRC校驗(yàn),原理是什么?
什么是CRC校驗(yàn),原理是什么?CRC(循環(huán)冗余校驗(yàn))是數(shù)據(jù)通信領(lǐng)域最常用的錯(cuò)誤校驗(yàn)碼。其特點(diǎn)是信息域和校驗(yàn)域的長(zhǎng)度可以任意選擇。其基本原理是:在k位信息碼之后,對(duì)R位校驗(yàn)碼進(jìn)行拼接,整個(gè)編碼長(zhǎng)度為n位
什么是CRC校驗(yàn),原理是什么?
CRC(循環(huán)冗余校驗(yàn))是數(shù)據(jù)通信領(lǐng)域最常用的錯(cuò)誤校驗(yàn)碼。其特點(diǎn)是信息域和校驗(yàn)域的長(zhǎng)度可以任意選擇。其基本原理是:在k位信息碼之后,對(duì)R位校驗(yàn)碼進(jìn)行拼接,整個(gè)編碼長(zhǎng)度為n位。因此,這種編碼也稱為(n,K)碼。對(duì)于給定的(n,K)碼,證明了存在一個(gè)n-K=R的最高冪多項(xiàng)式g(x),根據(jù)g(x)可以生成K位信息的校驗(yàn)碼,稱g(x)為CRC碼的生成多項(xiàng)式。校驗(yàn)碼的具體生成過程如下:假設(shè)發(fā)送的信息用信息多項(xiàng)式C(x)表示,C(x)左移R位,則可以表示為C(x)*2的R次方,這樣R位就空出在C(x)的右側(cè),即校驗(yàn)的位置代碼。將C(x)*2的R次方除以生成多項(xiàng)式g(x)得到的余數(shù)就是校驗(yàn)碼。
CRC校驗(yàn)為什么能夠保證數(shù)據(jù)的準(zhǔn)確性(出錯(cuò)率很低很低)?
您應(yīng)該弄清楚,CRC在最終分析中只是一個(gè)校驗(yàn)碼。它能以較高的精度檢測(cè)二進(jìn)制字符串中的錯(cuò)誤(檢測(cè)能力不是100%)。CRC校驗(yàn)不能降低數(shù)據(jù)傳輸過程中的錯(cuò)誤率
原理很簡(jiǎn)單,就是將一個(gè)數(shù)字串a(chǎn)除以一個(gè)特定的除數(shù)B,再將余數(shù)C加到數(shù)字串的末尾形成AC,那么數(shù)字串AC應(yīng)該可以被B整除,如果不能整除,則接收到的字符串AC是不正確的。
把十進(jìn)制作為一個(gè)簡(jiǎn)單(但不嚴(yán)謹(jǐn))的例子:我們要發(fā)送12345678數(shù)字串,除11后余數(shù)是4,所以我們實(shí)際發(fā)送123456784數(shù)字串;接收到后,接收器可以除以11,表示接收到的數(shù)字串是正常的,所以我們可以安全地從中提取12345678數(shù)字字符串。
【計(jì)算機(jī)組成原理】如何計(jì)算CRC校驗(yàn)位?
生成多項(xiàng)式P(x)=X5 x2 1,則除數(shù)為100101,冗余校驗(yàn)位為(6-1)=5位;
根據(jù)CRC校驗(yàn)原理,在M位信息后加5個(gè)零,除以100101,5位余數(shù)是校驗(yàn)位
計(jì)算1010 1100 1000 1111 0000 0 mod 100101
余數(shù)是010011
所以,校驗(yàn)位是:010011
CRC check 1,循環(huán)校驗(yàn)碼(CRC code):是數(shù)據(jù)通信領(lǐng)域最常用的錯(cuò)誤校驗(yàn)碼,其特點(diǎn)是信息域和校驗(yàn)域的長(zhǎng)度可以任意選擇。2產(chǎn)生CRC碼的基本原理:任何由二進(jìn)制位串組成的碼都可以對(duì)應(yīng)一個(gè)系數(shù)只有“0”和“1”的多項(xiàng)式。例如,對(duì)應(yīng)于代碼1010111的多項(xiàng)式是X6 X4 x2 x 1,而對(duì)應(yīng)于代碼101111的多項(xiàng)式是X5 X3 x2 x 1。三。CRC碼集選擇的原則是:如果碼字的長(zhǎng)度為n,信息字段為k位,校驗(yàn)字段為r位(n=kr),則對(duì)于CRC碼集中的任何碼字,都存在且只存在一個(gè)r G(x)次多項(xiàng)式,使得V(x)=a(x)G(x)=XRM(x)r(x),其中m(x)是CRC碼集的信息多項(xiàng)式次K,R(x)是R-1次的檢驗(yàn)多項(xiàng)式,G(x)稱為生成多項(xiàng)式G(x)=G0 G1x g2x2。。。G(R-1)x(R-1)grxr發(fā)送方通過指定的G(x)生成CRC碼字,接收方通過該G(x)驗(yàn)證接收到的CRC碼字。4CRC校驗(yàn)碼的軟件生成方法:借助多項(xiàng)式除法,其余的數(shù)字就是校驗(yàn)字段。例如:信息字段編碼為1011001;對(duì)應(yīng)的M(x)=x6x4x31;假設(shè)生成的多項(xiàng)式為g(x)=x4x31;則對(duì)應(yīng)的g(x)編碼為11001 x4m(x)=x10x8x7x4;對(duì)應(yīng)的編碼為10110010000;使用多項(xiàng)式除法:余數(shù)為1111(即校驗(yàn)字段為1111);發(fā)送方:發(fā)送字段為1011000 1111信息字段驗(yàn)證字段接收方:使用相同的生成代碼進(jìn)行驗(yàn)證:如果接收字段/生成代碼(二進(jìn)制除法)可以完全除法,則是正確的,并給出余數(shù)(1111)的計(jì)算步驟:除法沒有數(shù)學(xué)意義,但使用計(jì)算機(jī)的模除法,即除數(shù)與除數(shù)做異或運(yùn)算1011001100100=111101111101110010=1111
循環(huán)冗余校驗(yàn)碼的基本原理是:將R位校驗(yàn)碼拼接在k位信息碼之后,整個(gè)編碼長(zhǎng)度為n位,因此,這種編碼也叫(n,k)代碼。對(duì)于給定的(n,K)碼,證明了存在一個(gè)n-K=R的最高冪多項(xiàng)式g(x),根據(jù)g(x)可以生成K位信息的校驗(yàn)碼,稱g(x)為CRC碼的生成多項(xiàng)式。校驗(yàn)碼的具體生成過程是:假設(shè)要發(fā)送的信息用多項(xiàng)式C(x)表示,將C(x)左移R位(可以表示為C(x)*2R),使R位留在C(x)的右側(cè),即校驗(yàn)碼的位置。C(x)*2R除以生成多項(xiàng)式g(x)得到的余數(shù)是校驗(yàn)碼。由二進(jìn)制位串組成的任何代碼都可以與系數(shù)僅為“0”和“1”的多項(xiàng)式一一對(duì)應(yīng)。例如,對(duì)應(yīng)于代碼1010111的多項(xiàng)式是X6 X4 x2 x 1,而對(duì)應(yīng)于代碼101111的多項(xiàng)式是X5 X3 x2 x 1。