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