摘 要
64B/66B編碼是萬(wàn)兆以太網(wǎng)物理編碼子層的重要組成部分,是IEEE推薦的10G通信的編碼方式。文章主要研究64B/66B編碼的編碼準(zhǔn)則以及一種基于查找表法的改進(jìn)的編解碼方法。該方法使用FPGA實(shí)現(xiàn),實(shí)驗(yàn)結(jié)果與數(shù)據(jù)分析顯示,該方案滿足設(shè)計(jì)意圖與協(xié)議的規(guī)定。
【關(guān)鍵詞】64B/66B 萬(wàn)兆以太網(wǎng) 查找表 編解碼 FPGA
與以往的傳統(tǒng)以太網(wǎng)的介質(zhì)獨(dú)立接口類似,萬(wàn)兆以太網(wǎng)(XGMII)接口為l0GbE的MAC層和物理層之間提供了一種簡(jiǎn)單、低成本并易于實(shí)現(xiàn)的互聯(lián)接口。XGMII接口由發(fā)送通道和接收通道組成,每個(gè)方向的數(shù)據(jù)傳輸是相互獨(dú)立的,接口信號(hào)由數(shù)據(jù)、控制和時(shí)鐘信號(hào)構(gòu)成。XGMII接口具有支持l0Gbps的雙向傳輸速率,成本低、容易實(shí)現(xiàn)的特點(diǎn)。64B/66B編碼為XGMMII接口傳輸數(shù)據(jù)編碼,編碼準(zhǔn)則來(lái)源于IEEE803.2ae,它并不是真正的編碼,而是一種基于擾碼機(jī)制的編解碼方式,是IEEE推薦的10G通信標(biāo)準(zhǔn)編碼方式。該編碼具有系統(tǒng)開銷較小,碼字長(zhǎng),安全性高,傳輸快等優(yōu)點(diǎn)。本文根據(jù)IEEE803.2ae中的編碼準(zhǔn)則,使用查找表法,運(yùn)用Verilog語(yǔ)言完成了數(shù)字電路設(shè)計(jì),使用Qurtus II軟件完成模擬和數(shù)據(jù)分析。
如今使用硬件描述語(yǔ)言(Verilog 或 VHDL)所完成的電路設(shè)計(jì),經(jīng)過(guò)簡(jiǎn)單的綜合與布局,快速的燒錄至合適的FPGA 上進(jìn)行測(cè)試,是現(xiàn)代 IC 設(shè)計(jì)驗(yàn)證的主流方法。開發(fā)人員可以根據(jù)自身的設(shè)計(jì)要求對(duì)FPGA編程,將編碼燒錄到 FPGA 芯片中即可實(shí)現(xiàn)數(shù)字系統(tǒng)的設(shè)計(jì)。得到所需要的數(shù)字電路。一個(gè)出廠后的成品 FPGA 的邏輯塊和連接可以按照設(shè)計(jì)者而改變,所以 FPGA可以完成所需要的邏輯功能。
1 編解碼的基本原理
1.1 概述
64b/66b編解碼與萬(wàn)兆以太網(wǎng)的媒體獨(dú)立接口XGMII(10 Gigabit Media Independent Interface)連接。其主要功能是:根據(jù)給出的不同的8個(gè)XGMII控制信號(hào)(XGMII_TXC[7:0]),把輸入的64B的XGMII數(shù)據(jù)塊或控制塊XGMII_TXD[63:0]編碼成66B碼進(jìn)行通信。其中,控制信號(hào)的每一位與64B碼每8位對(duì)應(yīng),比如:XGMII_TXC[0]=0,則XGMII_TXD[7:0]為數(shù)據(jù)代碼;XGMII_TXC[0]=1,則XGMII_TXD[7:0]為控制代碼。64B/66B解碼則是將66B碼按照相反的規(guī)律解碼成原先的64B XGMII數(shù)據(jù)塊或控制塊,并將原先的8個(gè)控制信號(hào)傳送到XGMII接口。
1.2 IEEE802.3ae準(zhǔn)則解讀
萬(wàn)兆以太網(wǎng)協(xié)議 IEEE 802.3ae 中規(guī)定了 64B/66B的編解碼規(guī)則。具體規(guī)則如下:64B/66B碼組的映射關(guān)系如表1所示。從中我們可以知道,64B碼可以分為包含純粹數(shù)據(jù)(8個(gè)8位的數(shù)據(jù))的數(shù)據(jù)塊(Data Block Format)和數(shù)據(jù)與控制代碼按照一定順序排列的控制塊(Control Block Format)。根據(jù)不同的64B碼格式,也有不同的編碼規(guī)則,在生成66B碼時(shí)就會(huì)有不同的同步頭(sync)和塊有效荷(Block Payload)。比如:輸入的八位控制信號(hào)全部為0時(shí),則表示輸入的64B碼為數(shù)據(jù)塊格式,則同步頭為01,塊有效荷即輸出相應(yīng)數(shù)據(jù)。反之,當(dāng)輸入的八位控制信號(hào)不全為0,則表示輸入的64B碼為控制塊格式,則同步頭為10,塊有效荷按如表1中規(guī)定格式生成。
根據(jù)IEEE803.2ae的編碼準(zhǔn)則,控制塊代碼也具有相應(yīng)的類型,這些控制塊代碼的類型如表2所示。表2將控制代碼分為對(duì)應(yīng)的幾種形式:
(1)Idle表示空字符。(64B碼中為16進(jìn)制ox07,生成66B碼時(shí)變?yōu)?6進(jìn)制ox00)
(2)start表示開始字符。
(3)Terminate表示結(jié)束字符。
(4)Error 表示錯(cuò)誤,一般表示收到錯(cuò)誤的數(shù)據(jù)。
(5)Sequence ordered_set系列號(hào)有序集。
(6)Reserved(0~5)保留字符0到5。
(7)Signal Order_set表示信號(hào)有序集。
所有的有效字符必須符合表2的要求,否則為無(wú)效或者非法字符。
1.3 編解碼
64B/66B 編碼過(guò)程:將輸入的64B碼分成8個(gè)1字節(jié)的碼組,根據(jù)輸入XGMII_TXC的每比特值判斷這個(gè)碼組是數(shù)據(jù)代碼還是控制代碼。如果XGMII_TXC 每個(gè)比特值都為0,則64B碼為純數(shù)據(jù)代碼,直接在64B碼組前加上同步頭01就組成66B碼組輸出。如果XGMII_TXC 中有一個(gè)比特為1,則表示64B碼組為控制塊格式,先根據(jù)表2判斷控制塊中的每個(gè)控制代碼是否有效,如果符合要求,則繼續(xù)根據(jù)表1中的控制塊格式來(lái)判斷是否符合其中一種格式,如果格式符合則根據(jù)相應(yīng)的控制塊格式生成66B碼組。在編碼過(guò)程中,只要不符合表1或表2中的任何形式就認(rèn)為是無(wú)效不符合要求,則不需進(jìn)行編碼。
解碼則相對(duì)容易,與編碼過(guò)程相反,首先根據(jù)66B碼的同步頭判斷當(dāng)前的數(shù)據(jù)是數(shù)據(jù)塊還是控制塊,如果是數(shù)據(jù)塊則將除塊頭的64B數(shù)據(jù)賦予XGMII_TXD[63:0],再將XGMII_TXC[7:0]全部賦值0;如果是控制塊,則根據(jù)塊類型區(qū)的值確定控制塊的格式,可以得到64B碼每8位數(shù)據(jù)是數(shù)據(jù)代碼還是控制代碼,一方面得出XGMII_TXC[7:0],另一方面,運(yùn)用查找表法,根據(jù)表1和表2相應(yīng)的轉(zhuǎn)換得出XGMII_TXD[63:0]。(表1中的空格表示一比特0,在64B控制塊格式中C0—C7是8比特,在66B塊效荷中為7 比特)。
2 編解碼器設(shè)計(jì)
2.1 改進(jìn)的編碼器設(shè)計(jì)
根據(jù)對(duì)編碼原理的研究,目前最常用的64b/66b編碼方法是查找表法,這種方法雖然實(shí)現(xiàn)起來(lái)非常方便,但是使用過(guò)程中占用資源相對(duì)巨大,對(duì)于工程來(lái)說(shuō),單純?yōu)榱司幗獯a占用較多的FPGA資源是不合理的,這在很大程度上限制了該方法的使用。鑒于此,本文采用了一種基于查找表法的新的編碼方法。其基本思路是:先判斷輸入的XGMII_TXC是否符合控制塊格式的要求并判斷出同步頭,如果不符合則直接輸出Error并不需要對(duì)XGMII_TXD進(jìn)行處理。再根據(jù)控制塊將輸入的XGMII_TXD分為8個(gè)通道,分別對(duì)每個(gè)8位數(shù)據(jù)進(jìn)行處理,最后將數(shù)據(jù)輸入多路復(fù)用器進(jìn)行整合,輸出符合要求的66Bit數(shù)據(jù)。其基本原理電路圖如圖1所示。編碼器的組成為:輸入數(shù)據(jù)寄存器,控制塊格式判斷模塊,數(shù)據(jù)代碼生成模塊,塊類型寄存器和多路復(fù)用器模塊。
2.2 解碼器設(shè)計(jì)
先分析66B碼的同步頭和塊類型數(shù)據(jù),得出接受的是數(shù)據(jù)塊還是控制塊,并可以確定是何種類型的控制塊,生成判決信號(hào)輸送到下一個(gè)模塊(塊類型生成模塊),然后塊類型生成模塊根據(jù)表1和表2得出相應(yīng)的64B控制塊格式并根據(jù)判決信號(hào)得出XGMII_RXC的值。碼子反轉(zhuǎn)換模塊根據(jù)XGMII_RXC判斷XGMII_RXD每8個(gè)比特是控制代碼還是數(shù)據(jù)代碼并根據(jù)表2進(jìn)行相應(yīng)轉(zhuǎn)換。最后利用數(shù)據(jù)生成器將這些數(shù)據(jù)或控制信號(hào)組成總線的形式輸出。
3 仿真結(jié)果和數(shù)據(jù)分析
3.1 實(shí)驗(yàn)用FPGA開發(fā)板介紹
本文所使用的開發(fā)板如圖3所示,該開發(fā)板的FPGA芯片是選用Cyclone IV系列的FPGA器件EP4CE15F17C8N,屬于邏輯單元相對(duì)較少的FPGA芯片。CycloneIV系列器件集成了一個(gè)可選擇的低成本收發(fā)器,在不影響性能的情況下,節(jié)省了功耗及成本。針對(duì)無(wú)線、有線、廣播、工業(yè),用戶以及通信等行業(yè)中的低成本的小型應(yīng)用,CycloneIV器件應(yīng)該是最理想的選擇。
3.2 實(shí)驗(yàn)結(jié)果
根據(jù)本文提出的新的64B/66B編解碼方法,在Altera公司的Quartus II 軟件平臺(tái)上進(jìn)行相關(guān)程序代碼的編寫,并選用Cyclone IV系列的FPGA器件EP4CE15F17C8N實(shí)現(xiàn)了編解碼的功能驗(yàn)證,電路綜合和波形仿真。編碼器的仿真結(jié)果如圖4所示, 從圖中的仿真波形可以看出,DATA_OUT輸出前先延時(shí)4個(gè)時(shí)鐘周期,當(dāng)輸入xgmii_txc=0xff,xgmiix_txd=0x0707070707070707時(shí),表示輸入的控制塊格式,參考表1,同步頭為10,則可以得出data_out= 00000000000000079 。從圖4可以得出結(jié)果是正確的。相反,解碼器仿真結(jié)果如圖5所示,解碼器輸出延時(shí)2個(gè)時(shí)鐘周期,當(dāng)輸入數(shù)據(jù)data_in=00000000000000079時(shí),解碼得出結(jié)果xgmii_txc=0xff;xgmii_txd=0x0707070707070707,也與解碼碼準(zhǔn)則相符合。
以上的仿真結(jié)果表明本文設(shè)計(jì)的編解碼器可以正確的對(duì)輸入的數(shù)據(jù)進(jìn)行編解碼,符合本文的設(shè)計(jì)意圖。
本文所設(shè)計(jì)的編碼器的FPGA資源占有率如圖6所示,解碼器的FPGA資源占有率如圖7所示,從圖中看出,資源的總體占有率很小,使用較少的邏輯單元(其中編碼器:625/15408約占4%;解碼器:426/15408 約占3%)便能完成工程設(shè)計(jì),符合工程設(shè)計(jì)要求。
4 結(jié)論
64B/66B編碼作為一種應(yīng)用于以太網(wǎng)技術(shù)的編碼方式,具有很多優(yōu)點(diǎn),其也為之后用于PCI-E,USB的128B/132B編碼提供參考。本文的數(shù)字電路設(shè)計(jì)方法是基于查找表法的改進(jìn)方法,在運(yùn)用FPGA實(shí)現(xiàn)時(shí),具有占用資源少,編碼速度塊等優(yōu)點(diǎn)。此外,此方法使用的Verilog代碼具有很好的可移植性,可以作為IP核植入到64B/66B編碼的光纖電路中,特別適合FPGA設(shè)計(jì),有很實(shí)用的工程價(jià)值。
參考文獻(xiàn)
[1]溫宇辰.嵌入式光纖萬(wàn)兆以太網(wǎng)系統(tǒng)設(shè)計(jì)[D].大連:大連理工大學(xué)通信與信息系統(tǒng),2014.
[2]齊劍,胡春暉.高端路由器8口萬(wàn)兆子卡的硬件設(shè)計(jì)[J].電子設(shè)計(jì)工程,2015(07):178-181.
[3]朱云鵬.10G EPON協(xié)議分析儀中物理層的設(shè)計(jì)與實(shí)現(xiàn)[D].西安:電子科技大學(xué)光學(xué)工程,2015.
[4]周晴倫,王勇.萬(wàn)兆以太網(wǎng)中64B/66B編解碼的硬件實(shí)現(xiàn)方法[J]:光通信技術(shù),2006(02):21-23.
[5]王新.高速率傳送網(wǎng)平臺(tái)的物理層編碼研究與實(shí)現(xiàn)[D].西安:電子科技大學(xué)通信與信息系統(tǒng),2015.
[6]IEEE Std 802.3ae-2002[S/OL].New Jersey:IEEE,2002[2002-8-30].http://standards.ieee.org.
[7] The Automotive-Grade Device Handbook [EB/OL].2016-5-3.San Jose:http://www.altera.com.
[8]程博鋒.基于FPGA及以太網(wǎng)技術(shù)的100G接口板設(shè)計(jì)[D].南京:南京理工大學(xué)電子與通信工程,2014.
作者簡(jiǎn)介
王向陽(yáng)(1991-),男,安徽省廬江市人。合肥工業(yè)大學(xué)碩士生。主攻方向?yàn)閿?shù)字集成電路設(shè)計(jì)。
作者單位
合肥工業(yè)大學(xué)電子科學(xué)與應(yīng)用物理學(xué)院 安徽省合肥市 230009