以太網到多路E1適配電路設計及FPGA實現(xiàn)
適配電路的一側為MII標準以太網MAC接口,采用100MHz/全雙工模式,另一側是8路E1(HDB3)差分接口。發(fā)送方向將以太網數據封裝為HDLC幀,反向復用到1~8路可配E1信道傳輸,接收方向同步多路E1,還原出以太網數據。帶寬從2MHz到16MHz(1~8路E1)可配,接收側多路E1之間可以容納16毫秒的延時。
鑒于目前國內類似產品較少,而ASIC開發(fā)成本較高,本電路采用VHDL編程→FPGA實現(xiàn)設計流程。
1反向復用定義
反向復用的基本概念就是把一路高速數據適配到多路低速信道中傳輸,提供相當于多路低速之和的傳輸帶寬。對于點對點通信,主要關心以下幾點性能。
1.1 帶寬利用率
低速信道在傳輸高速數據的同時,必然有附加的開銷,會影響帶寬利用率。在本設計中,以太網包進入適配電路后封裝成HDLC幀需要四字節(jié)的附加信息。E1幀在傳輸HDLC數據的同時要攜帶的同步信息,占用6.25%帶寬。綜合上述兩點,有效數據平均帶寬利用率大約在90%。
1.2 容納延時
由于各路低速信道在傳輸過程中經歷的路徑不同,到達對端后各路間會有延時,設計中要考慮如何消除這部分延時。
1.3 線路故障處理
算法設計中必需有同步保護狀態(tài)機,保證傳輸信道出現(xiàn)錯誤時,算法不會產生過高的附加誤碼率,并且在信道錯誤恢復時,保證數據傳輸同步恢復。
1.4 數據包突發(fā)性
以太網的滿發(fā)送速率為100MHz,而低速信道的最大可配帶寬為16MHz,這將導致即使平均流量小于配置帶寬,一個短時間內,接收的數據量還有可能遠大于傳輸帶寬。所以在以太網數據的輸入側必須設計高容量的緩存隊列以容納一定的突發(fā)數據包。
2 算法設計
以下就設計中一些核心電路的算法做具體說明。
2.1 以太網數據→多路E1反向復用
數據反向適配一般可以采用三種方式:包間插、比特間插和字節(jié)間插。所謂包間插就是指數據包到達后,連續(xù)檢測各個E1信道,在第一個查到的空閑信道上順序傳輸整個數據包,下一包到達后再重復這一過程。這種方式的優(yōu)點是設計簡單,在對端也不需要對多路E1進行同步,各路數據可單獨處理。缺點是由于各路E1傳輸過程中經歷延時不同,導致對端接收數據包的順序與發(fā)端順序有較大差別。考慮到發(fā)包比較稀疏的情況,一個長包完全可以在一路E1中傳遞,而其它E1通道沒有數據包傳送。這樣,一方面造成帶寬浪費,另一方面也引入較大的轉發(fā)延時。
比特間插在傳輸過程中沒有包的概念,只是順序從以太網數據輸入緩存區(qū)內讀出比特流并按1→n(n路E1)循環(huán)編號,編號為i的比特在第i路E1中傳輸。這種設計電路十分復雜,對端要對多路E1同步到比特單位才能還原出有效數據。其優(yōu)點就是沒有帶寬的浪費和輸入輸出包順序的變化,轉發(fā)延時也是固定的。
本設計采用的字節(jié)間插是比較折中的解決方案。它的基本原理與比特間插類似,但從緩存區(qū)讀出的數據和編號都是以字節(jié)為單位,每個字節(jié)經過串并轉后在對應編號的E1信道中傳輸。它繼承了比特間插的優(yōu)點,同時由于對端只需同步到字節(jié)單位上,處理時鐘較為寬裕,同步電路設計也就相對簡單。其具體的算法實現(xiàn)如下:
以太網數據包進入適配電路后封裝成HDLC幀存入緩存區(qū)Buff,Buff的出口側速率與多路E1信道傳輸速率匹配,一個2MHz時鐘周期內完成的操作如圖1所示。
圖中,F(xiàn)cnt:8比特幀計數(E1幀有256個bit);
MFcnt:8比特復幀計數;
L3:Fcnt的低三位比特;
E1out:輸出8路E1數據(8bit);
Framecode:E1幀同步碼“10011011”;
N:配置E1路數(1~8);
Rdaddr:Buff讀地址;
P2S:2
評論