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