??? 摘? 要: 介紹了一種基于現場可編程門陣列(FPGA)的以太網數據-多路" title="多路">多路E1反向復用" title="復用">復用器同步電路設計, 分析了FPGA具體實現過程中的一些常見問題。該設計采用VHDL硬件描述語言編程,可以實現以太網數據在多路E1信道中的透明傳輸,適配" title="適配">適配電路芯片內置HDB3編解碼器和數字時鐘提取電路。?
??? 關鍵詞: FPGA? 反向復用? 以太網數據? EI信道? 適配電路?
?
??? 伴隨著Internet的迅速發展,IP已經成為綜合業務通信的首選協議,其承載的信息量也在成倍增長,如何利用現有的電信資源組建寬帶IP網絡是近年來研究的熱點。目前,比較成熟的技術主要有IP over SDH(POS)和IP over ATM(POA)。POS將IP包直接裝入SDH的虛容器中,通道開銷少、實現簡單,具有自動保護切換功能;POA的復接過程比較復雜,可以通過高系統開銷提供較好的服務質量保證(QOS)。從目前的市場看,各大通信設備商都推出了基于POS/POA的產品,但總體成本較高,主要面向的是一些高端應用。對于帶寬需求在十幾兆以下的點對點通信而言,上述兩種技術的優勢并不明顯。本文介紹的適配電路將以太網數據適配到E1信道傳輸,通過配置E1信道數量控制帶寬,針對這類應用提供了一種經濟靈活的解決方案。?
??? 適配電路的一側為MII標準以太網MAC接口,采用100MHz/全雙工模式,另一側是8路E1(HDB3)差分接口。發送方向將以太網數據封裝為HDLC幀,反向復用到1~8路可配E1信道傳輸,接收方向同步多路E1,還原出以太網數據。帶寬從2MHz到16MHz(1~8路E1) 可配,接收側多路E1之間可以容納16毫秒的延時。?
??? 鑒于目前國內類似產品較少,而ASIC開發成本較高,本電路采用VHDL編程→FPGA實現的設計流程。?
1 反向復用定義?
??? 反向復用的基本概念就是把一路高速數據適配到多路低速信道中傳輸,提供相當于多路低速之和的傳輸帶寬。對于點對點通信,主要關心以下幾點性能。?
1.1 帶寬利用率?
??? 低速信道在傳輸高速數據的同時,必然有附加的開銷,會影響帶寬利用率。在本設計中,以太網包進入適配電路后封裝成HDLC幀需要四字節的附加信息。E1幀在傳輸HDLC數據的同時要攜帶的同步信息,占用6.25%帶寬。綜合上述兩點,有效數據平均帶寬利用率大約在90%。?
1.2 容納延時?
??? 由于各路低速信道在傳輸過程中經歷的路徑不同,到達對端后各路間會有延時,設計中要考慮如何消除這部分延時。?
1.3 線路故障處理?
??? 算法設計中必需有同步保護狀態機,保證傳輸信道出現錯誤時,算法不會產生過高的附加誤碼率,并且在信道錯誤恢復時,保證數據傳輸同步恢復。?
1.4 數據包突發性?
??? 以太網的滿發送速率為100MHz,而低速信道的最大可配帶寬為16MHz,這將導致即使平均流量小于配置帶寬,一個短時間內,接收的數據量還有可能遠大于傳輸帶寬。所以在以太網數據的輸入側必須設計高容量的緩存隊列以容納一定的突發數據包。?
2 算法設計?
??? 以下就設計中一些核心電路的算法做具體說明。?
2.1 以太網數據→多路E1反向復用?
??? 數據反向適配一般可以采用三種方式:包間插、比特間插和字節間插。所謂包間插就是指數據包到達后,連續檢測各個E1信道,在第一個查到的空閑信道上順序傳輸整個數據包,下一包到達后再重復這一過程。這種方式的優點是設計簡單,在對端也不需要對多路E1進行同步,各路數據可以單獨處理。缺點是由于各路E1傳輸過程中經歷延時不同,導致對端接收數據包的順序與發端順序有較大差別。考慮到發包比較稀疏的情況,一個長包完全可以在一路E1中傳遞,而其它E1通道沒有數據包傳送。這樣,一方面造成帶寬浪費,另一方面也引入較大的轉發延時。?
??? 比特間插在傳輸過程中沒有包的概念,只是順序從以太網數據輸入緩存區內讀出比特流并按1→n(n路E1)循環編號,編號為i的比特在第i路E1中傳輸。這種設計電路十分復雜,對端要對多路E1同步到比特單位才能還原出有效數據。其優點就是沒有帶寬的浪費和輸入輸出包順序的變化,轉發延時也是固定的。?
??? 本設計采用的字節間插是比較折中的解決方案。它的基本原理與比特間插類似,但從緩存區讀出的數據和編號都是以字節為單位,每個字節經過串并轉換后在對應編號的E1信道中傳輸。它繼承了比特間插的優點,同時由于對端只需同步到字節單位上,處理時鐘較為寬裕,同步電路設計也就相對簡單。其具體的算法實現如下:?
??? 以太網數據包進入適配電路后封裝成HDLC幀存入緩存區Buff,Buff的出口側速率與多路E1信道傳輸速率匹配,一個2MHz時鐘周期內完成的操作如圖1所示。?
?
?
圖中,?
??? Fcnt:8比特幀計數(E1幀有256個bit);?
??? MFcnt:8比特復幀計數;?
??? L3:Fcnt的低三位比特;?
??? E1out:輸出8路E1數據(8bit);?
??? Framecode:E1幀同步" title="幀同步">幀同步碼“10011011”;?
??? N:配置E1路數(1~8);?
??? Rdaddr:Buff讀地址;?
??? P2S:2×8字節并串轉換存儲區,寫一組8字節時,讀另一組8字節;?
??? WR:P2S讀寫區域指示(0,1)。?
??? 輸出的E1幀格式如圖2所示,幀同步碼和復幀計數都是為接收端提供同步信息。?
2.2 E1接收數據同步?
??? E1接收側要完成的功能是從多路E1數據中還原出以太網數據包。簡單看就是發送側反向復用的逆過程,通過高速時鐘" title="高速時鐘">高速時鐘循環從1→n路E1中各讀出一字節合成一路數據。但由于各路E1在傳遞過程中經過延時不同,同一時刻到達字節不對齊,在合并前必須對多路E1進行同步。考慮到同步過程的復雜性,在設計算法時采用了分步處理,以降低復雜度。?
??? 第一步處理是根據幀結構中的幀同步碼,通過置位同步法完成單路E1幀同步,同步原理圖和狀態機如圖3所示。同步后每路輸出數據產生獨立的幀定時計數器TM,從0→31標記E1幀對應的32(256bit)字節,其中第0字節即幀同步碼Framecode,第一字節即復幀計數器MFcnt。這一步并未涉及多路間的延時消除。?
?
?
??? 根據狀態轉移圖確定的狀態參數:α(搜索保護幀數)=3、β(同步保護幀數)=4。設線路誤碼率Pe=10-3,L(幀同步碼長度)=8,Ts(E1幀周期)=125μs,得出同步機的性能指標:?
??? 平均同步時間≈[1/(L×Pe)β-(α-1/2)]×Ts≈8.5小時?
??? 同步失幀誤碼率≈1/2(α-1/2) (L×Pe)β≈5×10-9?
??? 可見在較高的誤碼率下(10-3),同步機還是能夠保證比較好的同步質量,平絕每8.5小時出現一次失步,引入的附加誤碼率也只有10-9量級。?
??? 第二步處理根據E1幀同步產生的幀計數和每路數據中的復幀計數消除各路之間的延時及時鐘相位差。其基本原理見圖4。在第0路數據延時最小的情況下,設第一步完成同步后到達RAM(0)的數據為第M復幀第T字節,數據以各自計數為寫地址存入RAM,延時檢測通過計數不停檢測,直到所有路第M復幀T字節到達后,再統一以clk為讀時鐘,以M&T為起始地址順序從RAM中讀出數據。由于MFcnt最大為255,第二步同步能容納的線路時延在(-128,+128)幀之間,超過這個范圍MFcnt所代表的時延就可能是(n(任意整數)×128+MFcnt)幀,所以該算法能承受的最大線路延時為:?
??? 128×Ts(幀周期)=16ms?
?
?
??? 在線路誤碼率較低時,E1幀同步丟失較少,幀定時計數TM可以確定,影響第二步處理的只有數據中的復幀計數字節。在沒有保護的條件下,假設目前某一路MFcnt由于誤碼使其讀數由正確值A變為B,因為下一輪開始時A、B位置幀會重寫,所以該誤碼只會影響當前一輪256幀中的A、B兩幀,不會對數據整體邏輯產生較大影響,其它位置的誤碼會在后續的HDLC幀同步處理中檢測。如果線路誤碼率較高,由于E1會頻繁失步使第二步處理根本無法進行。出于上述考慮該步算法設計沒有采用狀態機保護。?
2.3 HDB3時鐘提取?
??? 從接收的E1信號HDB3編碼中提取時鐘的原理如圖5所示。首先通過一個高速時鐘采樣HDB3的碼流(CODE)得到數據變化沿(EDGE),再根據EDGE位置由高速時鐘分頻出對應的2MHz時鐘。?
?
?
3 電路設計?
??? 整體電路結構如圖6所示。在輸入數據緩存和消除延時兩部分處理中,由于需要較大存儲空間,采用兩塊外掛的SSRAM。內部處理以字節為單位,全同步電路設計,對應以太網側處理速率為12.5MHz,對應E1側時鐘為256kHz(2.048MHz/8)。兩側速率匹配通過高速時鐘采樣低速時鐘完成。?
?
?
4 時序分析?
??? 從邏輯驗證到FPGA實現主要區別是增加了實際布線、引腳間的時延。使系統失效的時序問題主要有以下幾點:?
??? (1)輸入經內部邏輯到輸出的建立時間、保持時間和引腳時延大于一個時鐘周期。?
??? (2)并行處理的信號彼此之間時延過大,不能同時采樣。?
??? (3)在內部對時鐘信號進行過多操作,引入時鐘毛刺。?
??? (4)對同一時鐘,既使用上升沿,又使用下降沿觸發,使時鐘最高頻率損失一半。?
??? (5)在交叉時鐘域中,直接采樣由另一時鐘作為觸發的信號,引入不確定態。?
??? 對于這些常見問題,設計中采用如下相應對策:?
??? (1)所有輸入、輸出引腳信號都經過時鐘采樣,減少引腳的時延。?
??? (2)內部信號操作增加D觸發器,兩級觸發器之間盡量減少組合邏輯,比較復雜的處理經多個時鐘周期完成,減小信號保持時間。?
??? (3)并行邏輯經過相同的處理流程,時分復用完成,并行引腳也盡量分配在一起。?
??? (4)內部處理由單一系統時鐘完成,低速時鐘經高速時鐘采樣統一到高速時鐘上,減少交叉時鐘域。?
??? (5)不對系統時鐘進行操作,只使用上升沿觸發器。?
??? (6)必需進行時鐘轉換時,通過雙端口RAM或FIFO完成,不直接操作交叉時鐘。?
??? 在設計中注意上述問題后,QUARTUSⅡ的后仿真結果能夠很好地滿足時序要求,其中系統時鐘(12.5MHz)最大能夠滿足20.59MHz,2MHz時鐘能夠滿足41.03MHz。此結果在實際硬件測試中得到了驗證。?
5 實際產品性能分析?
??? 本文介紹的以太網/多路E1適配電路設計已實際應用在華環公司H0EL-1100 E1/100 Base-TX適配器中,表1是實際產品的吞吐量測試結果。由于以太網吞吐量包括IEEE802.3規定的前導和SFD字節,而這部分信息是固定值,不需要經過E1信道傳輸到對端,所以測試值可能大于實際E1信道容量。表2是在8路E1配置下,以15MHz速率發包測得的以太網數據經兩端設備的傳輸延時。該設計在APEXⅡ20K100器件中占用的邏輯單元為3608個(共4160個邏輯門)。?
?
?
??? 在開發過程中由于采用高級硬件編程語言→編程器件的設計實現過程,大大縮短了開發周期,增加了硬件設計的靈活性和可移植性,也避免了專用集成電路設計的高風險。采用邏輯仿真與后時序仿真相結合的驗證方法,基本可以保證設計的可靠性。基于上述優點,這種開發方式在中小批量集成電路開發中已得到廣泛的應用。尤其是近年來,硬件方面伴隨著微電子工藝的迅速發展,編程器件的集成度正在成倍增長,越來越多的ASIC單元如微處理器、專用接口等嵌入編程器件中,使其適用范圍更廣;軟件方面EDA開發商提供了眾多的Ipcore及仿真工具,使得編程過程進一步簡化,可靠性也不斷增強;在此基礎上SYS On Programmable Chip技術也開始走向商業化,為編程器件的發展提供了更為廣闊的空間。?
參考文獻?
1 William Stallings.Data and Computer Communicatoins(Fifth?Edition).Prentice Hall,1997?
2 徐志軍.CPLD/FPGA開發與應用.北京:電子工業出版社,?2002?
3 Horspool Nigel,Peter Gorman. The ASIC Handbook. Prentice Hall,2001?
4 孫 玉. 數字復接技術. 北京:人民郵電出版社,1992?