高速以太網(wǎng)CRC校驗(yàn)的實(shí)現(xiàn)
發(fā)布時(shí)間:2008/5/26 0:00:00 訪問(wèn)次數(shù):855
    
    一 引言
    為了確保數(shù)據(jù)在計(jì)算機(jī)系統(tǒng)中傳輸和存儲(chǔ)中正確可靠,引入了信道編碼。對(duì)于信道編碼有兩個(gè)方面,一是要求編碼后的碼流頻譜適應(yīng)信道頻率特性,二是檢測(cè)并糾正產(chǎn)生的誤碼。前者屬于譜成形技術(shù),后者為差錯(cuò)控制技術(shù)。crc碼屬于后者。它是通過(guò)增加冗余信息,達(dá)到發(fā)現(xiàn)誤碼的目的。常見(jiàn)的冗余校驗(yàn)有奇偶校驗(yàn),海明校驗(yàn),循環(huán)冗余校驗(yàn)。
    本文討論循環(huán)冗余校驗(yàn)(crc)的實(shí)現(xiàn),及其在以太網(wǎng)中的應(yīng)用。
    
    二 循環(huán)冗余碼介紹
    1循環(huán)冗余碼是建立在近世代數(shù)基礎(chǔ)上的。編解碼電路簡(jiǎn)單,檢錯(cuò)能力強(qiáng)。在計(jì)算機(jī)系統(tǒng)的數(shù)據(jù)存儲(chǔ)及傳輸中得到廣泛應(yīng)用。
    2編碼原理
    設(shè)待發(fā)送比特?cái)?shù)據(jù)為d(x),生成多項(xiàng)式為g(x)。信息碼長(zhǎng)k位,校驗(yàn)碼長(zhǎng)n-k位,則編碼后的碼長(zhǎng)為n位。如圖1:
    
    
    
    編碼步驟:信息數(shù)據(jù)d(x)乘以 ,得到的多項(xiàng)式除以生成多項(xiàng)式g(x),最終得到的余式r(x)即為crc校驗(yàn)碼。它跟在信息碼后一并發(fā)往信道。
    并不是所有的多項(xiàng)式都可以做位生成多項(xiàng)式g(x),常見(jiàn)的生成多項(xiàng)式有:
    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的實(shí)現(xiàn)
    以太網(wǎng)信道編碼采用的是crc32,所以在這里給出crc32的實(shí)現(xiàn),它在一般crc基礎(chǔ)上增加了些細(xì)節(jié)。
    介紹以太網(wǎng)mac幀結(jié)構(gòu)
    
    從數(shù)學(xué)上講,相應(yīng)給定幀的crc值由下述過(guò)程定義:
    (1) 對(duì)該幀的前32位作求補(bǔ)運(yùn)算。
    (2) 然后,將該幀的n位看作為(n-1)階多項(xiàng)式m(x)的系數(shù)。
    (3) m(x)乘以 ,然后除以g(x),得到余式r(x)。
    (4) 對(duì)該比特位逐位求補(bǔ),結(jié)果作為crc。
    
    主要實(shí)現(xiàn)方式有串行和并行兩種:
    (a)通過(guò)線性反饋移位寄存器串行實(shí)現(xiàn)(以crc-ccitt為例),見(jiàn)圖2
    
    
    
    信息流由低位送入寄存器,當(dāng)所有信息比特送入寄存器完畢后,寄存器中則為校驗(yàn)碼。
    (b)crc32的并行實(shí)現(xiàn)
    串行處理對(duì)于高速以太網(wǎng)如100m,10g等,顯然是不合適的,在此我門給出crc的并行實(shí)現(xiàn)方法,以一個(gè)字節(jié)位處理單位。下面給出c語(yǔ)言實(shí)現(xiàn)的crc32源程序:
    
    
    
    
    
    
    
    由于以太網(wǎng)crc32要求對(duì)幀的前32bit取反,我門可以初始化寄存器為全1來(lái)達(dá)到此目的。
    crcbuff中存放需要編碼的信息比特,最后計(jì)算出crc校驗(yàn)碼,跟隨信息碼一同發(fā)送出去。
    4總結(jié)
    本文是針對(duì)項(xiàng)目中嵌入式設(shè)備的聯(lián)網(wǎng)問(wèn)題,設(shè)計(jì)的crc32校驗(yàn)算法,已經(jīng)在fpga中成功實(shí)現(xiàn),由于用fpga實(shí)現(xiàn)編碼相對(duì)簡(jiǎn)單,這里就不再累述。
    
    作者email: lijunshen148@sohu.com
    
    
    
    一 引言
    為了確保數(shù)據(jù)在計(jì)算機(jī)系統(tǒng)中傳輸和存儲(chǔ)中正確可靠,引入了信道編碼。對(duì)于信道編碼有兩個(gè)方面,一是要求編碼后的碼流頻譜適應(yīng)信道頻率特性,二是檢測(cè)并糾正產(chǎn)生的誤碼。前者屬于譜成形技術(shù),后者為差錯(cuò)控制技術(shù)。crc碼屬于后者。它是通過(guò)增加冗余信息,達(dá)到發(fā)現(xiàn)誤碼的目的。常見(jiàn)的冗余校驗(yàn)有奇偶校驗(yàn),海明校驗(yàn),循環(huán)冗余校驗(yàn)。
    本文討論循環(huán)冗余校驗(yàn)(crc)的實(shí)現(xiàn),及其在以太網(wǎng)中的應(yīng)用。
    
    二 循環(huán)冗余碼介紹
    1循環(huán)冗余碼是建立在近世代數(shù)基礎(chǔ)上的。編解碼電路簡(jiǎn)單,檢錯(cuò)能力強(qiáng)。在計(jì)算機(jī)系統(tǒng)的數(shù)據(jù)存儲(chǔ)及傳輸中得到廣泛應(yīng)用。
    2編碼原理
    設(shè)待發(fā)送比特?cái)?shù)據(jù)為d(x),生成多項(xiàng)式為g(x)。信息碼長(zhǎng)k位,校驗(yàn)碼長(zhǎng)n-k位,則編碼后的碼長(zhǎng)為n位。如圖1:
    
    
    
    編碼步驟:信息數(shù)據(jù)d(x)乘以 ,得到的多項(xiàng)式除以生成多項(xiàng)式g(x),最終得到的余式r(x)即為crc校驗(yàn)碼。它跟在信息碼后一并發(fā)往信道。
    并不是所有的多項(xiàng)式都可以做位生成多項(xiàng)式g(x),常見(jiàn)的生成多項(xiàng)式有:
    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的實(shí)現(xiàn)
    以太網(wǎng)信道編碼采用的是crc32,所以在這里給出crc32的實(shí)現(xiàn),它在一般crc基礎(chǔ)上增加了些細(xì)節(jié)。
    介紹以太網(wǎng)mac幀結(jié)構(gòu)
    
    從數(shù)學(xué)上講,相應(yīng)給定幀的crc值由下述過(guò)程定義:
    (1) 對(duì)該幀的前32位作求補(bǔ)運(yùn)算。
    (2) 然后,將該幀的n位看作為(n-1)階多項(xiàng)式m(x)的系數(shù)。
    (3) m(x)乘以 ,然后除以g(x),得到余式r(x)。
    (4) 對(duì)該比特位逐位求補(bǔ),結(jié)果作為crc。
    
    主要實(shí)現(xiàn)方式有串行和并行兩種:
    (a)通過(guò)線性反饋移位寄存器串行實(shí)現(xiàn)(以crc-ccitt為例),見(jiàn)圖2
    
    
    
    信息流由低位送入寄存器,當(dāng)所有信息比特送入寄存器完畢后,寄存器中則為校驗(yàn)碼。
    (b)crc32的并行實(shí)現(xiàn)
    串行處理對(duì)于高速以太網(wǎng)如100m,10g等,顯然是不合適的,在此我門給出crc的并行實(shí)現(xiàn)方法,以一個(gè)字節(jié)位處理單位。下面給出c語(yǔ)言實(shí)現(xiàn)的crc32源程序:
    
    
    
    
    
    
    
    由于以太網(wǎng)crc32要求對(duì)幀的前32bit取反,我門可以初始化寄存器為全1來(lái)達(dá)到此目的。
    crcbuff中存放需要編碼的信息比特,最后計(jì)算出crc校驗(yàn)碼,跟隨信息碼一同發(fā)送出去。
    4總結(jié)
    本文是針對(duì)項(xiàng)目中嵌入式設(shè)備的聯(lián)網(wǎng)問(wèn)題,設(shè)計(jì)的crc32校驗(yàn)算法,已經(jīng)在fpga中成功實(shí)現(xiàn),由于用fpga實(shí)現(xiàn)編碼相對(duì)簡(jiǎn)單,這里就不再累述。
    
    作者email: lijunshen148@sohu.com
    
    
熱門點(diǎn)擊
- 超/極低頻通信技術(shù)
- ISO7816(part1-3)異步智能卡資
- PPP協(xié)議
- 單片機(jī)控制的網(wǎng)絡(luò)交換機(jī)設(shè)計(jì)與實(shí)現(xiàn)
- 跳頻電臺(tái)中央控制單元及跳頻單元的硬件設(shè)計(jì)
- 基于SDA80D51的以太電話機(jī)的設(shè)計(jì)
- 基于ZigBee技術(shù)的射頻芯片CC2430
- FLEX編碼與POCSAG編碼
- IP電話的VoIP語(yǔ)音網(wǎng)關(guān)設(shè)計(jì)
- 實(shí)現(xiàn)基于GPRS的無(wú)線遠(yuǎn)程IAP功能
推薦技術(shù)資料
- CV/CC InnoSwitch3-AQ 開(kāi)
- URF1DxxM-60WR3系
- 1-6W URA24xxN-x
- 閉環(huán)磁通門信號(hào)調(diào)節(jié)芯片NSDRV401
- SK-RiSC-SOM-H27X-V1.1應(yīng)
- RISC技術(shù)8位微控制器參數(shù)設(shè)
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動(dòng)IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究