新聞中心

        EEPW首頁 > 手機與無線通信 > 設計應用 > 高速以太網CRC校驗的實現

        高速以太網CRC校驗的實現

        作者: 時間:2006-02-13 來源:網絡 收藏

        引言

        為了確保數據在計算機系統中傳輸和存儲中正確可靠,引入了信道編碼。對于信道編碼有兩個方面,一是要求編碼后的碼流頻譜適應信道頻率特性,二是檢測并糾正產生的誤碼。前者屬于譜成形技術,后者為差錯控制技術。碼屬于后者。它是通過增加冗余信息,達到發現誤碼的目的。常見的冗余有奇偶,海明,循環冗余校驗。

        本文討論循環冗余校驗()的,及其在中的應用。

        循環冗余碼介紹

        1循環冗余碼是建立在近世代數基礎上的。編解碼電路簡單,檢錯能力強。在計算機系統的數據存儲及傳輸中得到廣泛應用。

        2編碼原理

        設待發送比特數據為Dx,生成多項式為Gx)。信息碼長k位,校驗碼長n-k位,則編碼后的碼長為n位。如圖1

        ,得到的多項式除以生成多項式Gx),最終得到的余式Rx)即為校驗碼。它跟在信息碼后一并發往信道。

        并不是所有的多項式都可以做位生成多項式G(x),常見的生成多項式有:

        CRC8=X8+X5+X4+1

        CRC-CCITT=X16+X12+X5+1

        CRC12=X12+X11+X3+X2+1

        CRC16=X16+X15+X5+1

        CRC32=X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X5+X4+X2+X1+1

        3 CRC32

        信道編碼采用的是CRC32,所以在這里給出CRC32,它在一般CRC基礎上增加了些細節。

        介紹MAC幀結構

        ,然后除以Gx),得到余式Rx)。

        (4) 對該比特位逐位求補,結果作為CRC。

        主要實現方式有串行和并行兩種:

        a)通過線性反饋移位寄存器串行實現(以CRC-CCITT為例),見圖2

        信息流由低位送入寄存器,當所有信息比特送入寄存器完畢后,寄存器中則為校驗碼。

        bCRC32的并行實現

        串行處理對于以太網如100M,10G等,顯然是不合適的,在此我門給出CRC的并行實現方法,以一個字節位處理單位。下面給出C語言實現的CRC32源程序:

        由于以太網CRC32要求對幀的前32bit取反,我門可以初始化寄存器為全1來達到此目的。

        Crcbuff中存放需要編碼的信息比特,最后計算出CRC校驗碼,跟隨信息碼一同發送出去。

        4總結

        本文是針對項目中嵌入式設備的聯網問題,設計的CRC32校驗算法,已經在FPGA中成功實現,由于用FPGA實現編碼相對簡單,這里就不再累述。

        作者Email: lijunshen148@sohu.com



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 夏河县| 道真| 新龙县| 万载县| 成都市| 铅山县| 汽车| 天门市| 柞水县| 文安县| 丹棱县| 禄丰县| 曲沃县| 涿州市| 鄂伦春自治旗| 司法| 潞城市| 壶关县| 眉山市| 大冶市| 建湖县| 广河县| 鄯善县| 临朐县| 武川县| 湛江市| 凌海市| 博白县| 大城县| 桂东县| 昌黎县| 汝城县| 左贡县| 新河县| 东明县| 绵阳市| 建水县| 峨山| 乡宁县| 翼城县| 稷山县|