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