在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

CRC循環(huán)冗余校驗(yàn)簡介

CHANBAEK ? 來源:硬件工程師技術(shù)干貨 ? 作者:硬件工程師技術(shù)干 ? 2023-04-24 13:04 ? 次閱讀

1、CRC簡介

CRC 是Cyclic Redundancy Check的縮寫,循環(huán)冗余校驗(yàn),用于校驗(yàn)數(shù)據(jù)傳輸?shù)耐暾浴?一般情況下在數(shù)據(jù)發(fā)送前計(jì)算CRC校驗(yàn)值,附在發(fā)送數(shù)據(jù)之后,數(shù)據(jù)接收方也按照同樣方法計(jì)算CRC,然后對比計(jì)算結(jié)果,如果一致說明數(shù)據(jù)數(shù)據(jù)傳輸無誤,否則數(shù)據(jù)傳輸出錯。

2、什么是模二運(yùn)算

CRC計(jì)算采用二進(jìn)制模二除法,來解釋一下模二運(yùn)算,模二運(yùn)算忽略進(jìn)位和借位,下面一一解釋。

1)模二加法,類似異或運(yùn)算

1+1=0 0+0=0

1+0=1 0+1=1

2)模二減法,類似異或運(yùn)算

1-1=0 0-0=0

1-0=1 0-1=1

3)模二乘法

1×1=1 0×0=0

1×0=0 0×1=0

4)模二除法

模二除法和十進(jìn)制除法類似,運(yùn)用了模二乘法和模二減法,直接舉例說明。

3、常見CRC模型如下:

不同的多項(xiàng)式計(jì)算方法不同,下面以CRC-5/EPC舉例說明:

多項(xiàng)式公式 :x5 + x3 + 1

完整寫出來是x5 + 0x4 + x3 + 0x2 + 0*x + 1

多項(xiàng)式 :取以上多項(xiàng)式中的系數(shù)101001為多項(xiàng)式,一般最高位不寫出來,所以多項(xiàng)式是01001,即0x09

初始值 :運(yùn)算的初始值,EPC要求是0x09

結(jié)果異或值 :所有數(shù)據(jù)計(jì)算完的結(jié)果與其異或,EPC這里是0

輸入反轉(zhuǎn) :輸入數(shù)據(jù)每字節(jié)高低位是否翻轉(zhuǎn),EPC不翻轉(zhuǎn)。

輸出反轉(zhuǎn) :輸出結(jié)果高低位是否翻轉(zhuǎn),EPC不翻轉(zhuǎn)。

4、手撕CRC

仍然以CRC-5/EPC舉例,計(jì)算字節(jié)0xAA的CRC值,這是一個5位的CRC,使用模二除法,最終計(jì)算出5位CRC校驗(yàn)值。 被除數(shù)是0xAA,二進(jìn)制10101010,除數(shù)是多項(xiàng)式,即101001。 計(jì)算過程如下圖所示,為了表明計(jì)算過程把商為0的計(jì)算過程也寫出來了。 這是5位CRC,只取最后5位,即10000。 輸出結(jié)果不需要異或也不需要反轉(zhuǎn),所以10000就是計(jì)算結(jié)果。

兩個字節(jié)AA55的CRC計(jì)算過程,同樣為了表明計(jì)算過程把商為0的計(jì)算過程也寫出來了。 這是5位CRC,只取最后5位,即01000。 輸出結(jié)果不需要異或也不需要反轉(zhuǎn),所以01000就是計(jì)算結(jié)果。

再舉一個例子,仍然計(jì)算0xAA的CRC。 這次采用模型CRC-5/USB,多項(xiàng)式:x5+x2+1,輸入輸出數(shù)據(jù)都反轉(zhuǎn),多項(xiàng)式0x05,初始值為0x1F,輸出異或值為0x1F。 最終計(jì)算結(jié)果00111。

5、C語言實(shí)現(xiàn)

以下是CRC-5/EPC的C語言實(shí)現(xiàn)代碼:

/*
 * Name:    CRC-5/EPC   x5+x3+1
 * Poly:    0x09
 * Init:    0x09
 * Refin:   False
 * Refout:  False
 * Xorout:  0x00
 * Note:
*/
uint8_t crc5_epc(uint8_t *data, uint16_t length)
{
    uint8_t i;

    //初始值是0x09的低5位,要和輸入數(shù)據(jù)的高五位異或
    //所以0x09左移三位,00001001<<3 = 01001000 = 0x48
    uint8_t crc = 0x48;
    while(length--)
    {
        crc ^= *data++;        //異或第一個字節(jié)
        for ( i = 0; i < 8; i++ )
        {
            if ( crc & 0x80 )
            {
                //最高位是1,需要異或多項(xiàng)式,多項(xiàng)式是最高位為1的6bit
                //多項(xiàng)式異或后最高位為0,所以這里不異或最高位了,他肯定是0
                //直接把crc左移1位,去掉最高位,然后異或多項(xiàng)式的低5bit
                //多項(xiàng)式是0x09<<3 = 00001001<<3 = 01001000 = 0x48
                crc = (crc << 1) ^ 0x48;        // 0x48 = 0x09<<(8-5)
            }
            else
            {
                //最高位是0,所以商為0,可以省去運(yùn)算,見上面圖表,因?yàn)楹?異或值不變。
                crc <<= 1;
            }

        }
    }
    return crc >> 3;    //計(jì)算完成后結(jié)果在高5位,右移動3位。
}
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)傳輸
    +關(guān)注

    關(guān)注

    9

    文章

    1961

    瀏覽量

    64866
  • 二進(jìn)制
    +關(guān)注

    關(guān)注

    2

    文章

    801

    瀏覽量

    41767
  • crc
    crc
    +關(guān)注

    關(guān)注

    0

    文章

    199

    瀏覽量

    29594
  • 運(yùn)算
    +關(guān)注

    關(guān)注

    0

    文章

    132

    瀏覽量

    25864
  • 循環(huán)冗余校驗(yàn)

    關(guān)注

    0

    文章

    7

    瀏覽量

    6580
收藏 人收藏

    評論

    相關(guān)推薦

    PSoC 4 循環(huán)冗余校驗(yàn) (CRC)

    循環(huán)冗余校驗(yàn) (CRC) 組件的默認(rèn)用途是根據(jù)任意長度的串行比特流計(jì)算 CRC。在數(shù)據(jù)時鐘的上升沿上對輸入數(shù)據(jù)進(jìn)行采樣。在啟動前,
    發(fā)表于 07-04 11:30

    CRC循環(huán)冗余校驗(yàn)的算法

    想問下51單片機(jī)和所有嵌入式中一個很基本也很常見的問題,CRC循環(huán)冗余校驗(yàn)的算法中生成多項(xiàng)式為什么要那樣取(有個生成多項(xiàng)式的表格),如果信息段中一位或多位傳輸錯誤,
    發(fā)表于 01-21 21:02

    轉(zhuǎn):循環(huán)冗余校驗(yàn)CRC)算法入門引導(dǎo)

    寫給嵌入式程序員的循環(huán)冗余校驗(yàn)CRC)算法入門引導(dǎo)前言CRC校驗(yàn)
    發(fā)表于 08-01 18:32

    循環(huán)冗余校驗(yàn)CRC)算法入門引導(dǎo)

    循環(huán)冗余校驗(yàn)CRC)算法入門引導(dǎo)
    發(fā)表于 08-17 12:40

    如何利用循環(huán)冗余校驗(yàn)CRC)計(jì)算單元進(jìn)行傳輸數(shù)據(jù)的校驗(yàn)

    循環(huán)冗余校驗(yàn)CRC)計(jì)算單元是什么?如何利用循環(huán)冗余校驗(yàn)
    發(fā)表于 12-15 06:04

    循環(huán)冗余校驗(yàn)碼的單片機(jī)及CPLD 實(shí)現(xiàn)

    循環(huán)冗余校驗(yàn)(CRC)是一種可靠性很高的串行數(shù)據(jù)校驗(yàn)方法。介紹循環(huán)
    發(fā)表于 04-16 14:19 ?16次下載

    循環(huán)冗余校驗(yàn)碼---CRC

    循環(huán)冗余校驗(yàn)碼---CRC碼   二進(jìn)制信息位串沿一條信號線逐位在部件之間或計(jì)算機(jī)之間傳送稱為串行傳送。CRC(Cyclic Redund
    發(fā)表于 10-13 16:52 ?7200次閱讀
    <b class='flag-5'>循環(huán)</b><b class='flag-5'>冗余</b><b class='flag-5'>校驗(yàn)</b>碼---<b class='flag-5'>CRC</b>碼

    基于FPGA的循環(huán)冗余校驗(yàn)實(shí)驗(yàn)系統(tǒng)

    文章首先分析了循環(huán)冗余校驗(yàn)碼的功能,在此基礎(chǔ)上提出了基于FPGA的實(shí)現(xiàn)方法,詳細(xì)闡述了CRC校驗(yàn)編解碼的實(shí)現(xiàn)方法,并提出了基于現(xiàn)有的實(shí)驗(yàn)箱設(shè)
    發(fā)表于 03-26 13:52 ?1793次閱讀
    基于FPGA的<b class='flag-5'>循環(huán)</b><b class='flag-5'>冗余</b><b class='flag-5'>校驗(yàn)</b>實(shí)驗(yàn)系統(tǒng)

    STM32L4循環(huán)冗余校驗(yàn)模塊(CRC)介紹

    STM32L4循環(huán)冗余校驗(yàn)模塊(CRC)介紹 有興趣的可以參考下
    發(fā)表于 12-25 10:38 ?27次下載

    循環(huán)冗余校驗(yàn)奇偶校驗(yàn)累加和校驗(yàn)等知識分享

    CRC校驗(yàn)循環(huán)冗余校驗(yàn))是數(shù)據(jù)通訊中最常采用的校驗(yàn)方式。在嵌入式軟件開發(fā)中,經(jīng)常要用到
    的頭像 發(fā)表于 11-08 09:31 ?8796次閱讀
    <b class='flag-5'>循環(huán)</b><b class='flag-5'>冗余</b><b class='flag-5'>校驗(yàn)</b>奇偶<b class='flag-5'>校驗(yàn)</b>累加和<b class='flag-5'>校驗(yàn)</b>等知識分享

    crc循環(huán)冗余校驗(yàn)碼算法

     循環(huán)冗余校驗(yàn)(Cyclic Redundancy Check, CRC)是一種根據(jù)網(wǎng)絡(luò)數(shù)據(jù)包或電腦文件等數(shù)據(jù)產(chǎn)生簡短固定位數(shù)校驗(yàn)碼的一種散
    發(fā)表于 12-04 10:11 ?2.3w次閱讀
    <b class='flag-5'>crc</b><b class='flag-5'>循環(huán)</b><b class='flag-5'>冗余</b><b class='flag-5'>校驗(yàn)</b>碼算法

    PIC24F系列參考手冊之可編程循環(huán)冗余校驗(yàn)CRC

    本文主要介紹了PIC24F系列參考手冊之可編程循環(huán)冗余校驗(yàn)CRC)。
    發(fā)表于 06-25 03:20 ?0次下載
    PIC24F系列參考手冊之可編程<b class='flag-5'>循環(huán)</b><b class='flag-5'>冗余</b><b class='flag-5'>校驗(yàn)</b>(<b class='flag-5'>CRC</b>)

    Verilog數(shù)字系統(tǒng)基礎(chǔ)設(shè)計(jì)中的循環(huán)冗余校驗(yàn)

    CRC循環(huán)冗余校驗(yàn)CRC介紹 臨時“插播”,后面有實(shí)例。 CRC(Cyclic Redun
    的頭像 發(fā)表于 08-17 17:08 ?6843次閱讀

    32位可編程循環(huán)冗余校驗(yàn)(CRC)

    電子發(fā)燒友網(wǎng)站提供《32位可編程循環(huán)冗余校驗(yàn)(CRC).pdf》資料免費(fèi)下載
    發(fā)表于 09-25 11:22 ?0次下載
    32位可編程<b class='flag-5'>循環(huán)</b><b class='flag-5'>冗余</b><b class='flag-5'>校驗(yàn)</b>(<b class='flag-5'>CRC</b>)

    CRC循環(huán)冗余校驗(yàn))應(yīng)用舉例

    CRC循環(huán)冗余校驗(yàn))應(yīng)用舉例
    的頭像 發(fā)表于 05-16 16:12 ?1455次閱讀
    主站蜘蛛池模板: 激情五月婷婷色 | 欧美性黄色 | 色视频网站在线 | 天天综合天天 | 欧美高清一区二区 | 国产午夜精品久久久久免费视小说 | 色在线网站 | 色老板在线视频一区二区 | 色偷偷中文字幕 | 欧美尺寸又黑又粗又长 | 黄色短视频免费看 | 美女脱裤子屁屁视频 | 大量国产后进翘臀视频 | jiuse在线 | 国产情侣自拍小视频 | 国产丝袜va丝袜老师 | 欧美黄色一级网站 | 天天爱添天天爱添天天爱添 | 2021国产精品久久 | 精品久久天干天天天按摩 | 黄网站在线观看高清免费 | 伊人久久大香线蕉综合亚洲 | 午夜男人天堂 | 人人天天爱天天做天天摸 | 亚洲第一区二区快射影院 | 国产一级aaa全黄毛片 | 天堂8在线天堂资源在线 | 久久99热久久精品动漫 | 日本污污视频 | 不卡一级毛片免费高清 | 日本高清免费一本视频在线观看 | 日日操操干干 | 高清午夜线观看免费 | 亚洲精品久久久久午夜福 | 天天爽天天狼久久久综合 | 视频在线观看免费网站 | 55夜色66夜色国产精品站 | 又粗又长又大真舒服好爽漫画 | 免费观看成年欧美1314www色 | 日本有色视频 | 亚洲天堂一区二区三区 |