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