10G以太網光口與高速串行接口的使用越來越普遍,本文擬通過一個簡單的回環實驗,來說明在常見的接口調試中需要注意的事項。各種Xilinx FPGA接口學習的秘訣:Example Design。歡迎探討。
一、實驗目的
為實現大容量交換機與高速率通信設備之間的高效數據傳輸,高速接口的理解與使用愈發顯現出其重要地位。本實驗設計中計劃使用四個GTH高速串行接口,分別采用了10G以太網接口協議以及Aurora64b66b接口協議,實現交換板到測試設備的連接并通過光纖實現高速數據片外回環,以達到快速理解接口協議并能夠熟練使用該兩種高速接口實現數據收發的目的。
二、接口簡介
1、 GT接口簡介
應用在高速串行接口的數據收發。在A7系列芯片中叫GTP、在K7系列叫GTX、V7系列叫GTH,對于不同速度等級的高速通信的物理接口,原理基本一致。
1.1、收發器結構
對于每一個串行高速收發器,其分為兩個子層:PCS(物理編碼子層)和 PMA(物理媒體連接子層)。PCS 層主要進行數據編解碼以及多通道的處理;PMA 層主要進行串并、并串轉換,預加重、去加重,串行數據的發送、數據時鐘的提取。可以使用ibert IP核對接口進行回環測試,確定該接口是否可以正常使用。
GT接口發送端處理流程:首先用戶邏輯數據經過8b/10b編碼后,進入一個發送緩存區,該緩沖區主要是PMA子層和PCS子層兩個時鐘域的時鐘隔離,解決兩者時鐘速率匹配和相位差異的問題,最后經過高速Serdes進行并串轉換。接收端和發送端過程相反,具體實現可參考ug476_7Series_Transceivers進行學習。
1.2、GT時鐘使用說明
7系列FPGA通常按照bank來分,對于GTX/GTH的bank,一般稱為一個Quad,原因是Xilinx的7系列FPGA隨著集成度的提高,其高速串行收發器不再獨占一個單獨的參考時鐘,而是以Quad來對串行高速收發器進行分組,四個串行高速收發器和一個COMMON(QPLL)組成一個Quad,每一個串行高速收發器稱為一個Channel,其內部結構如圖2所示。
從底層角度看,由于CPLL是每個Channel獨有的,所以CPLL的所有接口都在Channel這個底層模塊中。而QPLL是另外使用了一個叫common的底層模塊。GTX中QPLL和CPLL,除了數目(每個Quad有一個QPLL四個CPLL)和歸屬(QPLL屬于common,CPLL屬于Channel)不同之外,最大的不同在于支持的最高線速率頻率不同。CPLL最高只有6.xG,而QPLL可以超過10G(具體數值要根據器件的速度等級來查詢DataSheet)。
對于7系列的GTX來說,每個Quad有兩個外部差分參考時鐘源,每個外部參考時鐘的輸入必須經過IBUFDS_GTE2原語之后才能使用。7系列FPGA支持使用南北相鄰Quad的參考時鐘作為當前Quad的參考時鐘,但是一個Quad的參考時鐘源不能驅動超過3個Quad上的收發器(只能驅動當前Quad和南北方相鄰兩個Quad)。對于一個GTX Channel來說,可以獨立選擇該收發器的參考時鐘,可以選擇QPLL,也可以選擇CPLL,需要注意的是,每一個Quad上只有一個QPLL資源,重復例化會導致布線報錯。
1.3、GT的主從概念
在我們使用GT 接口IP核時(Aurora和10GEthernet也適用),常提到的主核與從核的說法并不準確,這實際上只是我們在配置IP核時的一個共享邏輯的選項,如圖3所示:
該說明中很清楚的表明,兩個選項分別表示了收發器的QPLL、時鐘和復位邏輯等是包含在內核本身還是示例設計(example design)中,為簡單起見,我們常把共享邏輯包含在內核本身的IP稱為主核,內核中不包含共享邏輯的IP稱為從核,其結構如下圖4和圖5所示。從核與主核的區別是:我們可以在Example Design中修改共享邏輯。在實際的設計中,可以使用主核也可以使用從核,但要注意的是,若設計中使用了一個主核后,則其內部便使用了該Quad上的QPLL資源,在使用該Quad上的其他GTX接口時,不能再使用主核,也無需再給從核添加共享邏輯。
2、 Aurora接口簡介
2.1、 概述
Aurora 協議是由Xilinx公司提供的一個開放、免費的鏈路層協議,可以用來進行點到點的串行數據傳輸,具有實現高性能數據傳輸系統的高效率和簡單易用的特點。本設計中使用的Aurora 64b66b協議是一個可擴展的、輕量級的鏈路層協議,可以用于單路或者多路串行數據通信,單路可以實現總線位寬為64bit的數據與串行差分數據信號之間的轉換。
2.2、 信號的連接
上一節有提到對于高速串行收發器,每一個Quad里僅可以使用一個QPLL(GTE2_COMMON),在我們生成一個Aurora從核并打開其example design后,這部分共享邏輯就包含在其gt_common_support模塊中,該模塊會產生gt_qpllclk_quad2_out、gt_qpllrefclk_quad2_out等信號供IP核使用,當我們生成一個Aurora主核時,該部分邏輯則包含在IP核內部,QPLL會作為輸出信號從IP核輸出。而當設計中需要2個及以上的GTX接口時,則需要將這一共享邏輯產生的信號輸出給所有需要使用的IP核。以主核+從核為例,下圖說明了其部分信號的連接方式:
當使用兩個從核時,上圖連線的這些信號均在example design的共享邏輯中產生,需要人為將其輸入到每一個接口IP中。
2.3、 時序邏輯
2.3.1、 鏈路建立
Aurora通道鏈路初始化完畢后會置位lane_up信號,表明接口可以接收數據;channel_up拉高時標志接口可以發送數據。一般判斷這兩個信號均置位時認為接口已完成初始化,可以開始進行數據傳輸。
2.3.2、 數據傳輸
Aurora接口內的數據傳輸格式如下圖所示:
圖7中,s_axi_tx_tready信號拉高時表示已準備好傳輸數據,該信號由鏈路內部的時鐘補償機制決定,不受人為控制,僅當s_axi_tx_tvalid和s_axi_tx_tready兩個信號均被置為1時,才表明該時鐘周期內總線數據被成功傳輸。
圖8中,m_axi_rx_tvalid表示當前總線上的數據有效。
2.4、 接口硬件實現
SERDES是SERializer(串行器)/DESerializer(解串器)。它是一種主流的時分多路復用(TDM)、點對點(P2P)的串行通信技術。即在發送端多路低速并行信號被轉換成高速串行信號,經傳輸媒介(連接器、銅線或光纖),最后在接收端高速串行信號重新轉換成低速并行信號。這種點對點的串行通信技術充分利用傳輸媒體的信道容量,減少所需的傳輸信道和器件引腳數目,提升信號的傳輸速度,從而大大降低通信成本。
使用SERDES的好處除了可以最大程度上節省傳輸線的數量,還可以兼容板間傳輸和光纖傳輸。無論是通過何種方式連接,都需要使用XILINX的GTP/GTX高速串行傳輸接口。該接口的物理實現方式,是SERDERS,物理層的編碼方式可以選擇Aurora 8B10B或Aurora 64B66B,而應用層可以選擇不同的協議,也可以不使用。
3、 10G以太網接口
可參考本公眾號之前文章:10G 以太網接口的FPGA實現,你需要的都在這里了。
3.1、 概述
10G 以太網包括10GBASE-X、10GBASE-R 和 10GBASE-W。10GBASE-X 使用一種特緊湊包裝,每一對發送器/接收器在 3.125Gbit/s 速度(數據流速度為 2.5Gbit/s)下工作。10GBASE-R 是一種使用 64B/66B 編碼(不再使用千兆以太網中所用的 8B/10B)的串行接口,數據流為 10.000Gbit/s。10GBASE-W 是廣域網接口,與 SONET OC-192 兼容,數據流為 9.585Gbit/s。本設計中使用的是Xilinx官方開源IP核10G Ethernet subsystem中10GBASE-R模式以太網光接口。
3.2、 時鐘關系
對于FPGA內部的時鐘布局主要分為以下4部分:
(a)輸入的差分參考時鐘經過一個參考鐘專用緩存(IBUFDS_GTE2)變為單端時鐘refclk,然后將refclk分為兩路,一路接到QPLL(QuadraturephasePhase Locking Loop),另一路時鐘經過一個BUFG后轉變為全局時鐘coreclk,繼續將coreclk分為兩路,一路作為10G MAC核XGMII接口的收發時鐘(xgmii_rx_clk和xgmii_tx_clk),另一路用于驅動10G Ethernet PCS/PMA IP核內部用戶側的邏輯。
(b)對于QPLL輸出的兩路時鐘qplloutclk和qplloutrefclk,主要是用于IP核內GTH收發器使用的高性能時鐘,其中qplloutclk直接用于驅動GTH內發送端的串行信號,其頻率為5.15625GHz。qplloutrefclk用于驅動GTH內部部分邏輯模塊,頻率為156.25MHz。
(c) txoutclk是由10G Ethernet PCS/PMA IP產生的一個322.26MHz的時鐘,該時鐘經過BUFG后分為兩路,其中txusrclk用于驅動IP核內GTH的32bits總線數據,txusrclk2用于驅動IP核內PCS層部分模塊。
(d)在實驗室自研交換板(芯片型號xc7vx690tffg1761-2)上,25MHz的晶振產生系統時鐘輸入到FPGA內的PLL(Phase LockingLoop)模塊,PLL模塊以25MHz時鐘為驅動時鐘生成156.25MHz用戶鐘發送給10G MAC核用戶側。
3.3、 IP核配置
Vivado中10G以太網 IP核的配置界面如下圖,該 IP 核符合 IEEE802.3-2008標準,包含 MDIO(PHY 管理接口),FCS 處理機制可配置,流量控制等功能。MAC 與 PHY 的接口使用標準 XGMII 接口,其收發數據位寬均為64bit,頻率為 156.25MHz。MAC 核與用戶的接口為 AXI4_STREAM,其數據位寬為64bits,工作頻率也為156.25MHz。在shared logic選項卡中選擇了將共享邏輯包含在example design中,也即從核模式。
共享邏輯包含一個差分輸入時鐘緩沖器,該緩沖器連接到GT_COMMON塊,該Quad上最多可以有四個10G以太網子系統內核共享此邏輯。
使用時鐘緩沖器(BUFG_GT)從收發器差分參考時鐘創建coreclk / coreclk_out。coreclk / coreclk_out的頻率與差分時鐘源的頻率相同。共享邏輯中的最終BUFG_GT來自GT_CHANNEL的TXOUTCLK,然后又連接到GT_CHANNEL,以提供收發器TX用戶時鐘(TXUSRCLK和TXUSERCLK2)。使用64位數據路徑時,此時鐘的頻率為156.25 MHz;使用32位數據路徑時,此時鐘的頻率為312.5MHz。需要注意的是,與IP核直接相連的用戶數據應與coreclk對齊,即使本地的用戶時鐘頻率與coreclk頻率相同均為156.25MHz時,也可能因為非同源而導致相位偏差,因此也應采用異步FIFO進行跨時鐘域處理。
3.4、 信號連接
以1個主核+2個從核為例,下圖說明了其部分信號的連接方式:
當使用兩個從核時,上圖連線的這些信號均在example design的共享邏輯中產生,需要人為將其輸入到每一個接口IP中。
3.5、 數據傳輸
3.5.1、 鏈路建立
10G以太網通道鏈路初始化完畢后會置位core_ready信號,表明接口接口已完成初始化,可以開始進行數據傳輸。
3.5.2、 數據格式
10G以太網接口用戶側采用的AXI-Stream總線數據格式如下圖所示:
3.6、 接口硬件實現
在遠距離連接的場景中,銅導線已經不能滿足如此長距離,大數據量的通信,因此必須要采用光纖通信的方案。實現該方案需要使用光模塊。
光模塊是進行光電和電光轉換的光電子器件。光模塊的發送端把電信號轉換為光信號,接收端把光信號轉換為電信號。光模塊按照封裝形式分類,常見的有SFP,SFP+,XFP等。光模塊的接口是完全兼容XILINX的GTP/GTX IO,接口電路如圖所示:
光模塊的種類有很多,下面只針對項目中常見的三種光模塊作介紹。
1)SFP光模塊
SFP光模塊是一種小型可插拔光模塊,目前最高速率可達10.3G(市面上基本為1.25G),通常與LC跳線連接。SFP光模塊主要由激光器構成。SFP分類可分為速率分類、波長分類、模式分類。SFP光模塊又包含了百兆SFP、千兆SFP、BIDI SFP、CWDM SFP和DWDM SFP。
2)SFP+光模塊
SFP+光模塊的外形和SFP光模塊是一樣的,傳輸速率可以達到10G,常用于中短距離傳輸。SFP+光模塊是一種可熱插拔的,獨立于通信協議的光學收發器。
3)XFP光模塊
XFP光模塊是一種可熱插拔的,獨立于通信協議的光學收發器。速率同樣可以達到10G,但是體積比SFP/SFP+光模塊要大。
通過比對分析,SFP+光模塊具有比XFP更緊湊的外形尺寸,比SFP更高的速率,因此在遠距離光纖傳輸中是一種較為優秀的方案。
本設計中10G以太網接口在硬件上采用SFP+光模塊實現光電轉換。
三、幀結構分析
1、 以太網幀結構
該部分內容也可參看本公眾號之前文章:你見過物理層的以太網幀長什么樣子嗎?
目前主要有兩種格式的以太網幀:Ethernet II(DIX 2.0)和IEEE 802.3。本設計使用Ethernet II幀結構,其幀格式如圖13所示:
各字段具體說明如下:
⑴ 前導碼(Preamble):由0、1間隔代碼組成,用來通知目標站作好接收準備。
⑵ 目標地址和源地址(Destination Address & Source Address):表示發送和接收幀的工作站的地址,各占據6個字節。其中,目標地址可以是單址,也可以是多點傳送或廣播地址。
⑶ 類型(Type)或長度(Length):這兩個字節在Ethernet II幀中表示類型(Type),指定接收數據的高層協議類型。
⑷ 數據(Data):在經過物理層和邏輯鏈路層的處理之后,包含在幀中的數據將被傳遞給在類型段中指定的高層協議。該數據段的長度最小應當不低于46個字節,最大應不超過1500字節。如果數據段長度過小,那么將會在數據段后自動填充(Trailer)字符。相反,如果數據段長度過大,那么將會把數據段分段后傳輸。
⑸ 幀校驗序列(FSC):包含長度為4個字節的循環冗余校驗值(CRC),由發送設備計算產生,在接收方被重新計算以確定幀在傳送過程中是否被損壞。
2、Spirent Testcenter業務流格式
當使用Testcenter配置以太網數據幀時,Testcenter會在以太網幀的數據字段自動添加20個字節的開銷,即上圖中的Signature字段,該字段的各部分功能如下:
該字段包含32bit(4個字節)的流ID,支持40億個測試流。
該字段具有10納秒的時間戳分辨率
當Spirent Testcenter在有效負載中插入PRBS23碼型時,PRBS位置1
Last位會告訴接收方時間戳所在字節
該字段具有一個內置的UDP / TCP Checksum Cheater字段(用于在有效載荷中放置修飾符時使用)
由于該Signature字段是SpirentTestcenter業務流的唯一標識,Testcenter通過識別接收到的數據流的Signature字段來計算鏈路時延并判斷是否有丟幀的情況,此外,該字段在Testcenter軟件中不對用戶可見,也即我們無法人為的去配置這個字段,因此建議在處理數據幀時,不要刪改該字段信息。當然,也可以選擇讓Testcenter不添加這一字段,但是這樣Testcenter在接收到以太網幀之后無法與已發送的數據幀進行比較。本設計選擇的方案是默認在Testcenter業務流后自動添加Signature字段。
3、 自定義幀格式
本實驗在標準以太網EthernetII幀格式的基礎上重新定義了系統內部幀格式,如下圖:
上圖中目的地址、源地址、幀類型和FCS字段均保留了EthernetII幀結構,而為了邏輯簡單起見,將數據字段重新拆分成四個字段,其中預留字段僅起占位功能,Signature字段為Testcenter自動填充的開銷字段。實驗中真正使用的也就是載荷部分的84字節。
四、數據處理流程
1、 實現方案
1.1整體架構
10G以太網接口接收來自Testcenter測試設備發送過來的以太網幀,提取出關鍵字段將其拆分成并行的12路通道數據,與clk時鐘同步,然后將這些數據進行組包,N個clk內的數據組合成一幀,使用aurora64B66B將數據一幀一幀地發送出去,接收機對收到的幀數據進行解析,并還原成與內部clk同步的12路通道數據,在將12路數據合并成以太網幀格式,通過10G以太網接口發送回Testcenter。實現框圖如下:
1.2、數據流程
根據上述設計架構,本設計的數據流程如下圖:
五、主要模塊仿真RTL級驗證
1、 10G以太網接口功能驗證
在10G以太網接口1發送端寫入64位固定幀,接口將其轉換成差分信號輸出,在差分端打環,使接口1發送出的差分信號進入接口2的接收端,將接收端恢復出的并行數據與數據源數據進行比較。仿真結果如下圖:
在core_ready信號拉高后向接口1發送端pkt_tx_*寫入數據,將接口1與接口2的差分端相連,監測接口2接收端pkt_rx_*恢復出的以太網幀。
2、 Aurora64B66B接口功能驗證
在Aurora64B66B接口1發送端寫入64位固定幀,接口將其轉換成差分信號輸出,在差分端打環,使接口1發送出的差分信號進入接口2的接收端,將接收端恢復出的并行數據與數據源數據進行比較。仿真結果如下圖:
六、板級驗證
1、 驗證環境
實驗選取實驗室自研交換板(芯片型號xc7vx690tffg1761-2),該交換板具有6個GTH光口,本設計選取4個光口進行測試,左起1口、4口為10G以太網接口,通過光纖與Testcenter相連,如圖32所示。2口、3口為Aurora64B66B接口,通過光纖實現外環連接。
2、 測試流配置
在Testcenter配套軟件上配置業務流時,為直觀的驗證本設計功能,為以太網幀配置payload,即添加custom header,如圖33所示:
3、 驗證結果
通過Xilinx ila抓取部分信號,從圖34可以看到本設計可以成功的提取出以太網幀的載荷字段,并從中解析出并行的12路通道數據,前60字節與6.2中配置字段相同,本設計功能實現良好。圖35中對Testcenter接收到的數據幀進行統計并與已發送的數據幀進行比較,表明本設計未出現丟幀、錯幀情況。
七、附錄
下面提供實現本設計的另一種思路:
在前幾章提及GT Quad中QPLL資源的問題,即一個Quad上僅能夠使用一個QPLL,因此本設計使用了四個GTH接口共同使用一個共享邏輯,其QPLL時鐘信號需要驅動2個10G以太網接口和2個Aurora64B66B接口。對初學者來說,梳理清楚GT時鐘并使用QPLL是具有一定困難的,最簡單的方法是,將4個接口分別放置在兩個Quad上,即每兩個GT接口共享一個QPLL資源,這樣可以直接使用Xilinx官方文檔中的1主帶1從的模式,盡可能的簡化了代碼并大大減少調試中的困難。
本實驗選擇的交換板上帶有標準FMC擴展口,其上具有豐富的GT資源,下圖展示了FMC擴展板與交換板的連接,以及通過同軸電纜將擴展板上的差分端口相連實現外環。
編輯:hfy
-
收發器
+關注
關注
10文章
3440瀏覽量
106117 -
以太網
+關注
關注
40文章
5450瀏覽量
172183 -
高速接口
+關注
關注
1文章
44瀏覽量
14786 -
AURORA
+關注
關注
0文章
25瀏覽量
5402
發布評論請先 登錄
相關推薦
評論