潘晨昕,陳祺云
(中國(guó)電子科技集團(tuán)公司第五十四研究所,河北石家莊050081)
長(zhǎng)期以來,實(shí)時(shí)業(yè)務(wù)和數(shù)據(jù)業(yè)務(wù)在不同的網(wǎng)絡(luò)上實(shí)現(xiàn)傳輸。實(shí)時(shí)業(yè)務(wù)主要經(jīng)過SDH、PDH和PBX來傳送;數(shù)據(jù)業(yè)務(wù)主要經(jīng)過以太網(wǎng)和路由器來傳送。近年來隨著用戶需求的多樣化、網(wǎng)絡(luò)管理的復(fù)雜化,以及市場(chǎng)競(jìng)爭(zhēng)所帶來的巨大成本壓力,2種業(yè)務(wù)相互融合的需求越來越多。如何在電信網(wǎng)絡(luò)上傳輸數(shù)據(jù)業(yè)務(wù)以及在IP網(wǎng)絡(luò)上傳輸實(shí)時(shí)業(yè)務(wù),已成為業(yè)內(nèi)關(guān)注的重點(diǎn)。
為滿足設(shè)計(jì)中遠(yuǎn)傳芯片接口的需要,本文給出了一種TDM與MII接口轉(zhuǎn)換的實(shí)現(xiàn)方法,為實(shí)時(shí)業(yè)務(wù)和數(shù)據(jù)業(yè)務(wù)的融合提供了一種硬件設(shè)計(jì)思路。
TDM(時(shí)分復(fù)用)是指多路信號(hào)在同一個(gè)信道中傳輸而沒有相互干擾,即各個(gè)信號(hào)在同一個(gè)信道內(nèi)占用不同的時(shí)隙(Time Slot)。在E1信道中,每幀32時(shí)隙,每個(gè)時(shí)隙8 bit。本設(shè)計(jì)中使用不成幀的E1,即所有32個(gè)時(shí)隙都用來傳輸數(shù)據(jù)。
MII(Medium Independent Interface)接口是IEEE 802.3u規(guī)定的一種接口標(biāo)準(zhǔn),是與介質(zhì)無關(guān)的。其主要作用是連接MAC子層與物理層,負(fù)責(zé)MAC和以太網(wǎng)PHY之間的信息傳遞。MII具有16個(gè)信號(hào)線,可以分成發(fā)送數(shù)據(jù)、接收數(shù)據(jù)、網(wǎng)絡(luò)狀態(tài)3組信號(hào)線。
1.1.1 發(fā)送數(shù)據(jù)信號(hào)線
發(fā)送數(shù)據(jù)信號(hào)線由發(fā)送時(shí)鐘TX CLK 、發(fā)送數(shù)據(jù)線TXD[3∶0]、發(fā)送使能TX EN 和發(fā)送錯(cuò)誤TX_ER組成。TX _CLK是PHY提供的一個(gè)參考時(shí)鐘,工作于2.5 MHz(對(duì)10 Mbit/s的網(wǎng)絡(luò))或者25MHz(對(duì)于100 Mbit/s的網(wǎng)絡(luò))。
1.1.2 接收數(shù)據(jù)信號(hào)線
接收數(shù)據(jù)信號(hào)線由接收時(shí)鐘RX _CLK、接收數(shù)據(jù)線RXD[3∶0]、接收數(shù)據(jù)有效RX _DV 和接收數(shù)據(jù)錯(cuò)誤RX_ER 組成。RX_CLK是PHY提供的一個(gè)參考時(shí)鐘,工作于2.5 MHz或25 MHz。
1.1.3 網(wǎng)絡(luò)狀態(tài)信號(hào)線
網(wǎng)絡(luò)狀態(tài)信號(hào)線包括載波偵聽信號(hào)線CRS和沖突信號(hào)線COL。CRS信號(hào)在發(fā)送和接收介質(zhì)為非空閑狀態(tài)時(shí)由PHY設(shè)有效,COL信號(hào)在介質(zhì)中檢測(cè)到?jīng)_突時(shí)有效。二者都不需要和時(shí)鐘同步。
以太網(wǎng)幀的前導(dǎo)域(Preamble)長(zhǎng)度為7 byte,它的值固定為10101010(低位←高位),可以作為檢測(cè)一幀的開始標(biāo)志。SFD域長(zhǎng)度為1 byte,值固定為10101011(低位←高位),可以作為幀頭結(jié)束的標(biāo)志。由于本設(shè)計(jì)完成的是以太網(wǎng)MAC功能,FPGA中對(duì)于源地址和目的地址可不做處理,因此將以太網(wǎng)幀的DA、SA和T/L字段均填充為凈荷,映射到TDM幀的時(shí)隙,減少了數(shù)據(jù)的開銷,提高了帶寬利用率。
本設(shè)計(jì)中主要完成了TDM和以太網(wǎng)MII兩種接口的轉(zhuǎn)換、FCS的計(jì)算與檢測(cè)以及封裝和解封裝等功能。用FPGA實(shí)現(xiàn)的TDM和以太網(wǎng)MII接口轉(zhuǎn)換的處理流程圖如圖1所示。其中TDM和MII的收發(fā)處理模塊對(duì)雙口RAM的控制操作是設(shè)計(jì)的關(guān)鍵部分,它決定了該接口轉(zhuǎn)換模塊的性能。
圖1 TDM和以太網(wǎng)MII轉(zhuǎn)換處理流程
雙口RAM模塊主要用來存儲(chǔ)數(shù)據(jù),作為一種性能優(yōu)越的快速存儲(chǔ)器件,適用于多端口操作的高速數(shù)字系統(tǒng)中。其優(yōu)點(diǎn)是:提供2路完全獨(dú)立的端口,每個(gè)端口都有完整的地址、數(shù)據(jù)和控制總線,容許2個(gè)端口可同時(shí)對(duì)同一單元進(jìn)行存取。
雙口RAM的控制操作是通過圖1中的TDM和MII的收發(fā)處理模塊共同完成的。在TDM接收處理模塊中,收到的TDM比特流每一個(gè)NIBBLE往RAM中寫一次。因?yàn)橐蕴W(wǎng)的收發(fā)數(shù)據(jù)位寬為4 bit,所以對(duì)RAM的操作采用NIBBLE操作,從而避免了從RAM中取數(shù)時(shí)需要區(qū)分高低位的問題。以太網(wǎng)幀的發(fā)送處理模塊從RAM中取數(shù)時(shí),首先需要判斷RAM的狀態(tài),當(dāng)RAM狀態(tài)為非空且在等待狀態(tài)時(shí)才可以進(jìn)入MII口的發(fā)送狀態(tài),MII的發(fā)使能置1,開始發(fā)送以太網(wǎng)的數(shù)據(jù)包。MII發(fā)送模塊的狀態(tài)圖如圖2所示。
圖2 以太網(wǎng)發(fā)送處理模塊狀態(tài)圖
相反的方向以太網(wǎng)幀的接收處理模塊(狀態(tài)圖如圖3所示)往RAM中寫數(shù)時(shí)需要去掉以太網(wǎng)包的包頭字段,本設(shè)計(jì)中的SFD字段為包頭和凈荷的分界,當(dāng)收到“0101”時(shí),如果后面的NIBBLE 為“1101”則說明包頭字段結(jié)束,如果這時(shí)的MII接收使能為有效則開始以NIBBLE為單位向RAM中寫入凈荷,每寫一次RAM地址加1,同樣RAM有一個(gè)空滿指示標(biāo)識(shí)。在TDM的發(fā)送處理模塊從RAM中讀數(shù)時(shí),如果RAM為非空則置讀使能信號(hào)開始讀數(shù),讀到的數(shù)據(jù)以TDM流的方式發(fā)送出去。由此通過對(duì)雙口RAM的控制操作完成了TDM和以太網(wǎng)數(shù)據(jù)的存取和轉(zhuǎn)發(fā)過程。
圖3 以太網(wǎng)接收處理模塊狀態(tài)圖
CRC校驗(yàn)碼的編碼方法是用待發(fā)送的二進(jìn)制數(shù)據(jù)t(x)除以生成多項(xiàng)式g(x),將最后的余數(shù)作為CRC校驗(yàn)碼。其實(shí)現(xiàn)步驟如下:
①設(shè)待發(fā)送的數(shù)據(jù)塊是m位的二進(jìn)制多項(xiàng)式t(x),生成多項(xiàng)式為r階的g(x)。在數(shù)據(jù)塊的末尾添加r個(gè)0,數(shù)據(jù)塊的長(zhǎng)度增加到m+r位時(shí),對(duì)應(yīng)的二進(jìn)制多項(xiàng)式為xrt(x);
②用生成多項(xiàng)式g(x)去除xrt(x),求得余數(shù)階數(shù)為r-1的二進(jìn)制多項(xiàng)式y(tǒng)(x)。此二進(jìn)制多項(xiàng)式y(tǒng)(x)就是t(x)經(jīng)過生成多項(xiàng)式g(x)編碼的CRC校驗(yàn)碼;
③用xrt(x)以模2的方式減去y(x),得到二進(jìn)制多項(xiàng)式xrt′(x),xrt′(x)就是包含了CRC 校驗(yàn)碼的待發(fā)送字符串。
從CRC的編碼規(guī)則可以看出,CRC編碼實(shí)際上是將待發(fā)送的m位二進(jìn)制多項(xiàng)式t(x)轉(zhuǎn)換成了可以被g(x)除盡的m+r位二進(jìn)制多項(xiàng)式xrt(x),所以解碼時(shí)可以用接收到的數(shù)據(jù)去除g(x),如果余數(shù)為零,則表示傳輸過程沒有錯(cuò)誤;如果余數(shù)不為零,則在傳輸過程中肯定存在錯(cuò)誤。同時(shí)xrt′(x)可以看作是由t(x)和CRC校驗(yàn)碼的組合,所以解碼時(shí)將接收到的二進(jìn)制數(shù)據(jù)去掉尾部的r位數(shù)據(jù),得到的就是原始數(shù)據(jù)。對(duì)于以太網(wǎng)的數(shù)據(jù)包采用了CRC-32校驗(yàn)。
CRC-32的生成多項(xiàng)式為:
本設(shè)計(jì)中CRC校驗(yàn)的實(shí)現(xiàn)采用了CRC-32的成熟模塊,只需要根據(jù)以太網(wǎng)數(shù)據(jù)包的實(shí)際長(zhǎng)度來確定CRC-32模塊的使能和復(fù)位,從而完成CRC-32的校驗(yàn)。這里不再贅述。
經(jīng)試驗(yàn)驗(yàn)證,本接口轉(zhuǎn)換模塊的誤碼率小于10-7量級(jí)。設(shè)計(jì)中在雙口RAM中緩存了8個(gè)幀,RAM的讀指針從中間地址開始讀取,即從第5幀開始;寫指針從第1幀開始。當(dāng)讀寫指針相等時(shí)認(rèn)為RAM為空。因此RAM的緩存能力為8/2=4個(gè)幀的長(zhǎng)度。
關(guān)于RAM的操作時(shí)延可以這樣定義,即從數(shù)據(jù)放入RAM中到被讀出所經(jīng)過的時(shí)間間隔,用公式表示如下:
本設(shè)計(jì)中當(dāng)RAM緩存了4個(gè)幀長(zhǎng)度時(shí),開始讀取數(shù)據(jù),又因?yàn)槊繋拈L(zhǎng)度為512 byte,MII接口的時(shí)鐘為25M,由此得到RAM的操作時(shí)延為:
由試驗(yàn)數(shù)據(jù)可以看出,雙口RAM的操作速率較快,完全滿足工程設(shè)計(jì)的要求。
隨著數(shù)據(jù)業(yè)務(wù)在全球范圍的爆炸性增長(zhǎng),整個(gè)網(wǎng)絡(luò)的重心也在逐漸向IP網(wǎng)轉(zhuǎn)移。如今的IP網(wǎng)可以說是無處不在,IP網(wǎng)作為未來網(wǎng)絡(luò)主體架構(gòu)的趨勢(shì)也越來越明顯。如何在IP網(wǎng)和TDM網(wǎng)之間達(dá)到快速、透明的對(duì)接是這個(gè)研究和應(yīng)用領(lǐng)域的主流問題。本文中設(shè)計(jì)實(shí)現(xiàn)的TDM和MII接口的轉(zhuǎn)換為解決電信網(wǎng)絡(luò)向新一代IP網(wǎng)絡(luò)的過渡提供了一種硬件方案。該轉(zhuǎn)換模塊已成功應(yīng)用于實(shí)際工程中,工作性能穩(wěn)定可靠。
[1]TU-T Recommendation G.704.Synchronous Frame Structures Used at1544,6312,2048,8448 and 44,736 kbit/s Hierarchical Levels[S],1998.
[2]TCP/IP網(wǎng)絡(luò)互連技術(shù)卷 I.原理協(xié)議和體系結(jié)構(gòu)(第3版)(影印版)[M].北京:清華大學(xué)出版社,2000.
[3]黃智偉.FPGA系統(tǒng)設(shè)計(jì)與實(shí)踐[M].北京電子工業(yè)出版社,2005.