- 相關(guān)推薦
10G以太網(wǎng)系統(tǒng)中的并行CRC編解碼器的設(shè)計(jì)
摘要:為了解決10G以太網(wǎng)接入系統(tǒng)中大規(guī)模并行CRC編碼器的設(shè)計(jì)問(wèn)題,提出了矩陣法、代入法、流水線法等三種設(shè)計(jì)方法。以此為基礎(chǔ),給出了10G以太網(wǎng)接入系統(tǒng)CHC編碼器的實(shí)現(xiàn)方案。具體計(jì)算表明,在10G以太網(wǎng)接入系統(tǒng)采用直接并行的CRC編碼器是可行的。直接并行設(shè)計(jì)CRC編碼器已經(jīng)通過(guò)了EDA模擬,并成功地應(yīng)用于10G以太網(wǎng)接入系統(tǒng)中。通信系統(tǒng)不可避免地要受到各種干擾的影響,使接收端收到的信息與發(fā)送端發(fā)出的信息不一致,即接收端收到的信息產(chǎn)生了誤碼。為了降低數(shù)據(jù)通信線路傳輸?shù)恼`碼率,通常有改善數(shù)據(jù)通信線路傳輸質(zhì)量和差錯(cuò)檢測(cè)控制兩種方法。差錯(cuò)檢測(cè)控制的方法很多,本文討論在10G以太網(wǎng)接人系統(tǒng)中并行實(shí)現(xiàn)CRC-32編解碼的方法、并行CRC算法的Unfolding算法可以實(shí)現(xiàn)并行CRC的計(jì)算,但是并行電路所用的資源增加到了原來(lái)的J倍。8位并行CRC算法、并行CRC-16的編碼邏輯、USB技術(shù)中并行CRC算法給出的并行算法都建立在公式遞推的基礎(chǔ)上。當(dāng)并行深度較小時(shí),遞推算法比較適用。而當(dāng)并行深度很大的情況下(10G以太網(wǎng)接人系統(tǒng)使用64比特并行數(shù)據(jù)通路),遞推過(guò)程就顯得過(guò)于煩瑣而缺乏實(shí)用性。為此,本文提出了矩陣法、代入法和流水線法等三種算法,解決了深度并行情況下CRC算法的實(shí)現(xiàn)問(wèn)題。利用本文提出的算法,可以得出64比特并行CRC計(jì)算的邏輯表達(dá)式,并用于10G以太網(wǎng)接入系統(tǒng)的設(shè)計(jì)。設(shè)M/(x)為信息多項(xiàng)式,G(x)為生成多項(xiàng)式。一般的CRC編碼方法是:先將信息碼多項(xiàng)式左移r位,即M(x)·xr,然后作模2除法
(M(x)· x r)/G(x)=Q(x) R(x)/G(x) (1)
所得到的月(x)就是CRC校驗(yàn)碼。以二進(jìn)制碼0x9595H的CRC-32編碼為例:
· 將信息碼左移32比特變成0x959500000000H,記為m。
·CRC-32G的生成多項(xiàng)G(x)=x32 x26 x23 x22 x16 x12 xll x10 x8 x7 x5 x4 x2 x 1,轉(zhuǎn)換成16進(jìn)制碼為g=0x104C01DB7H。用m除以g(模2除法),所得余數(shù)0x3738F30BH就是0x9595H的CRC-32碼。實(shí)現(xiàn)0x9595H的基本CRC-32編碼的Matlab程序如下:
g(33:-1:1)=[1,0 0 0 0 0 1 0 0,1 1 0 0 0 0 0 1,0 0 0 1 1 1 0 1,1 0 1 1 0 1 1 1];
a(48:-1:1)=[1 0 0 1 0 1 0 1,1 0 0 1 0 1 0 1,0 0 0 0 0 0 0 0,0 0 0 0 0 0 0 0,0 0 0 0 0 0 0 0,0 0 0 0 0 0 0 0];
for i=48:-1:33,
if a(i)= =1
a(i:-1:i-32)=xor(a(i:-1:i-32),i(33:-1:1));
end
end
crc=a(32:-1:1)
如果想用以上CRC-32程序計(jì)算其他長(zhǎng)為L(zhǎng)的序列的基本CRC-32碼,只需將數(shù)組α的上界和for循環(huán)中i的初始值改為32 L,并用該序列代替數(shù)組。開(kāi)始的序列"1001010110010101"即可。用數(shù)字電路實(shí)現(xiàn)的串行CRC編碼器如圖1所示。圖1中每個(gè)矩形表示D觸發(fā)器。gi的取值范圍是1或者0。取1時(shí)表示通路,取0時(shí)表示斷路。進(jìn)行基本CRC-32編碼時(shí),每個(gè)D觸發(fā)器初始狀態(tài)為0,從數(shù)據(jù)端串行輸入二進(jìn)制的信息碼。信息碼輸入結(jié)束后,D觸發(fā)器中鎖存的數(shù)值就是信息碼的基本CRC-32編碼。此電路適用于信息碼長(zhǎng)為任意值的情況。在某些信息系統(tǒng)中以基本CRC產(chǎn)生算法為基礎(chǔ)附加了新的規(guī)定。例如IEEE802.3協(xié)議規(guī)定,以太網(wǎng)的FES(幀校驗(yàn)序列)域以CRC-32為基礎(chǔ),并且在編碼時(shí)首先將信息碼的最初4個(gè)字節(jié)取反碼,對(duì)目的地址、源地址、長(zhǎng)度/類型域、數(shù)據(jù)域、PAD域求出基本CRC-32碼之后再將結(jié)果取反,最后的結(jié)果才是FCS。同上述過(guò)程等價(jià)的另一種實(shí)現(xiàn)方法是將圖1中所有D觸發(fā)器的初值置1,這樣結(jié)果不必取反。為使電路設(shè)計(jì)者驗(yàn)證其FCS編碼正確,IEEE802.3還給出了一個(gè)樣本,即:將序列0xBED723476B8FB3145EFB3559H重復(fù)126次,最后得到的FCS值應(yīng)該為0x94D254ACH。10G以太網(wǎng)是IEEE802.3ae工作組提出的建議。它保持了以前以太網(wǎng)的幀結(jié)構(gòu),但是線速度達(dá)到了10Gbps的量級(jí)。為了降低10G以太網(wǎng)接入系統(tǒng)的功耗并達(dá)到芯片加工工藝的要求,必須采用并行數(shù)據(jù)通路。為計(jì)算FCS需要研究并行CRC算法。所設(shè)計(jì)的10G以太網(wǎng)接入系統(tǒng)采用64比特并行數(shù)據(jù)通路,因此本文主要討論64比特并行CRC-32的實(shí)現(xiàn)方法。本文共介紹三種實(shí)現(xiàn)方法,其中矩陣法和代入法是基于組合邏輯的直接實(shí)現(xiàn)方法,第三種方法是基于流水線的實(shí)現(xiàn)方法。
1 矩陣法
記圖1中的32個(gè)D觸發(fā)器的輸出從右至左依次為d31,d30,…,d0。信息碼元的輸入端為i。令D=[d0d1…d31]T表示編碼器當(dāng)前所處的狀態(tài),I=[i63i62…i0]表示第1至第64個(gè)時(shí)鐘的信息碼元輸入,向量Dˊ=[d0ˊd1ˊ,…d31ˊ] T表示編碼器的下一個(gè)狀態(tài),D(64)表示64個(gè)時(shí)鐘之后CRC編碼器所處的狀態(tài)。則設(shè)計(jì)64位并行CRC邏輯編碼器,就是找出函數(shù)關(guān)系D(64)=f(D,I)。
do'=d31 i63
d1'=d0 d31 i63
d2'=d1 d31 i63
d3'=d2
…
d31'=d30
寫(xiě)成行列式,有D'=TD Si63
【10G以太網(wǎng)系統(tǒng)中的并行CRC編解碼器的設(shè)計(jì)】相關(guān)文章:
異地并行設(shè)計(jì)中WEB數(shù)據(jù)庫(kù)設(shè)計(jì)*03-18
視頻并行處理系統(tǒng)分析與設(shè)計(jì)03-21
TM1300 DSP系統(tǒng)以太網(wǎng)接口的設(shè)計(jì)03-18
CPLD在DSP系統(tǒng)中的應(yīng)用設(shè)計(jì)03-18
嵌入式系統(tǒng)中的線性Flash文件系統(tǒng)設(shè)計(jì)03-21
基于FPGA的快速并行FFT及其在空間太陽(yáng)望遠(yuǎn)鏡圖像鎖定系統(tǒng)中的應(yīng)03-18
擴(kuò)頻系統(tǒng)中卷積編碼的Verilog設(shè)計(jì)與仿真03-07