
概述最近學習aurora通信主要介紹了xilinx fpga aurora 64B/66B ip核的使用方法和介紹讓我們能夠快速的搭建好aurora通信的工程。Aurora 64B/66B介紹Aurora 64B/66B是由賽靈思Xilinx現屬AMD開發的一種高性能鏈路層協議專為在FPGA上實現超高帶寬的串行通信而設計。它通過高效的64B/66B編碼、簡單的用戶接口和靈活的拓撲結構為芯片間、板卡間乃至設備間的高速數據傳輸提供了一套可靠且低開銷的解決方案。連接可以是全雙工full-duplex的或單工simplex的。Aurora 64B66B IP核支持高級微控制器總線結構Advanced Microcontroller Bus ArchitectureAMBA協議的AXI4-Stream用戶接口。一個Aurora 64B/66B核實例可以在GTX、GTH或GTY收發器上使用多達16個有效的連續通路lane以任何支持的線速率運行提供低成本、通用的數據通道吞吐量從500 Mb/s到超過400 Gb/s。-----------------------------------------------圖 2-1 Aurora 通信框圖-------------------------------------Aurora 64B/66B核心自動初始化一個channel當他們連接到Aurora 64B/66B channel partner。初始化后應用程序可以通過channel以數據幀(frame)或數據流(stream)的形式傳遞數據。Aurora 64B/66B幀可以是任意大小的并且可以在任何時候被高優先級請求中斷。有效數據字節之間的間隙自動填充 idle以保持鎖定和防止過度的電磁干擾。在Aurora 64B/66B中流控制(Flow control )是可選的可以用于限制鏈路伙伴傳輸數據速率或通過channel發送簡短的、高優先級的消息。流(stream)在Aurora 64B/66B中通過一個單個無休止的幀來實現。每當數據沒有被傳輸時就會傳輸idle以保持鏈路有效。過多的誤bit、斷開連接或設備故障將導致IP核復位并嘗試初始化一個新的channel。Aurora 64B/66B可以在接收多通路(lane)的通道(channel)時最多支持兩個符號偏斜。Aurora 64B/66B協議采用64B/66B編碼。64B/66B編碼相對8B/10B編碼提供了理論上的性能提升因為它的傳輸開銷非常低(3%)而8B/10B編碼的傳輸開銷為25%。2.2 aurora 64B/66B IP核配置---------------------------------------圖 2-2 Aurora 64B66B IP 核配置1圖----------------------------------如上圖所示第1部分配置如下aGT_Type: GT口的類型bLine_RateGbps: 鏈路數據傳輸速率GbpscColumn_Used: 從下拉列表中選擇適當的 GT 列dLanes 選擇要在核心中使用的通道數,有效范圍取決于所選的目標設備eStarting GT Quad從下拉列表中選擇起始通道的起始 GT Quad。 內核配置有連續數量的通道并選擇了通道選擇選項fStarting GT Lane: 從下拉列表中選擇內核的起始通道。 使用起始 Quad、通道和起始通道生成具有連續通道數的核心;gStarting GT Lane: 從下拉列表中選擇內核的起始通道。 使用起始 Quad、通道和起始通道生成具有連續通道數的核心;hGT Refclk Selection: 從下拉列表中選擇 UltraScale 器件收發器的參考時鐘源iGT Refclk: 參考時鐘源的頻率mhzjINIT clk: 在文本框中輸入有效的 INIT 時鐘頻率kGenerate Aurora without GT:此選項僅適用于 UltraScale 和 UltraScale 設備。 如果選擇此選項則生成的 Aurora 內核不帶 GT示例設計中提供了 GT。第2部分配置如下aDataflow Mode:選擇 Aurora 64B/66B 內核支持的通道方向選項。單工 Aurora 64B/66B 內核具有一個單向串行端口可連接到互補的單工 Aurora 64B/66B 內核。 可用的選項是 RX-only Simplex、TX-only Simplex 和 Duplex。默認值DuplexbInterface: 選擇用于內核的數據路徑接口類型。 選擇成幀以使用允許封裝任何長度的數據幀的 AXI4-Stream 接口。 選擇 Streaming 以使用簡單的 AXI4-Stream 接口通過 Aurora 64B/66B 通道流式傳輸數據。默認值FramingcFlow ControlFlow Control 選擇所需的選項以將流量控制添加到核心。 用戶流控制 (UFC) 允許應用程序通過 Aurora 8B/10B 通道發送簡短的高優先級消息。本機流量控制 (NFC) 允許全雙工接收器調節發送給它們的數據的速率。 立即模式允許在數據幀中插入空閑代碼而完成模式僅在完整數據幀之間插入空閑代碼可用選項如下? None? UFC? Immediate NFC? Completion NFC? UFC Immediate NFC? UFC Completion NFC默認值無dUSER K選擇將 USER K 接口添加到核心。USER-K 塊是特殊的單塊代碼直接傳遞給用戶應用程序。這些塊用于實現應用程序特定的控制功能。默認無eLittle Endian Support選擇此選項將所有接口更改為小端格式默認情況下核心使用大端格式 ----------------------------------------圖 2-3 Aurora 64B66B IP 核配置2圖---------------------------------上圖中CRC表示選擇在數據流中插入 CRC32 的選項上圖所示第1部分配置如下aDRP模式選擇所需的接口以使用 DRP 控制或監控收發器接口。可用選項包括1、Native 2、 AXI4_Lite 默認值AXI4_LitebVivado Lab Tools選擇以將 Vivado 實驗室工具添加到 Aurora 64B/66B 核心此選項提供一個調試接口用于顯示核心狀態信號cAdditional Transceiver Control and Status Ports選擇以在核心頂層中包含收發器控制和狀態端口。第2部配置保持默認即可。------------------------------------圖 2-4 Aurora 64B66B IP 核配置3圖-------------------------------------如上圖所示選擇將收發器通用 PLL 及其邏輯包含在 IP 核中或示例設計中。可選項? 在核心中包含共享邏輯Include Shared Logic in core。? 在示例設計中包含共享邏輯Include Shared Logic in example design。在示例設計中包含共享邏輯Include Shared Logic in example design選擇此項可將gt口的參考時鐘作為邏輯的內部時鐘使用。Single Ended GTREF CLK如果選擇GT 參考時鐘將成為單端時鐘輸入。Aurora 64B66B IP核 端口信號可查看Xilinx官方pg074的文檔里面有詳細介紹。2.3 aurora 64B/66B IP核流數據傳輸2.3.1 aurora 64B/66B IP核TX流數據傳輸上圖顯示了典型的流數據傳輸開始時兩個就緒信號都沒有置位這表示用戶邏輯和內核都沒有準備好傳輸數據。在下一個時鐘周期中ip核通過置位 mgt0_axi_tx_tready來指示它已準備好傳輸數據。一個周期后用戶邏輯置位 mgt0_axi_tx_tvalid信號并將數據放在mgt0_axi_tx_tdata總線上表明它已準備好傳輸數據。因為現在兩個信號都被置位所以上圖所示的 Databeat0從用戶邏輯傳輸到內核。Databeat 1 在下一個時鐘周期上傳輸。在IP核置低其 ready 信號 mgt0_axi_tx_tready并且在下一個時鐘周期之前不會傳輸任何數據此時 mgt0_axi_tx_tready信號再次被置位。然后用戶在下一個時鐘周期上置低 mgt0_axi_tx_tvalid并且在兩個信號都被置位之前不會傳輸任何數據。2.3.2 aurora 64B/66B IP核RX流數據傳輸上圖顯示了典型的流數據接收當mgt0_axi_rx_tvalid置位時Databeat0、Databeat1等從內核傳輸到用戶邏輯。2.4 aurora 64B/66B IP 配置示例及上板驗證本次示例配置如下a線速率為16.375 Gbpsb發送的數據為遞增數從1開始遞增cLanes的數量為4 條數據使用流(stream)模式傳輸Ip核配置截圖如下2.4.1 aurora硬件連接示意圖通過線纜將兩個mgt口連接硬件連接為Mgt0的發送端連接到mgt1的接收端Mgt1的發送端連接到mgt0的接收端。2.4.2 Aurora常用計算公式2.4.2.1 用戶時鐘計算方式user_clkUser_clk line rate * (64/66)*lanes / data width 。User_clk : 用戶時鐘line rate :線速率laneslane的數量data width數據的位寬示例本次使用線速率為16.375Gbpslane的數量為4數據位寬為256計算用戶時鐘為User_clkMhz 16375 * (64/66) *4/256 ≈ 248.1060606 Mhz。2.4.2.2 線速率與GT參考時鐘的關系詳細描述可參考ug576的文檔。如過選擇cpll線速率與GT參考時鐘的關系如下圖所示如過選擇qpll線速率與GT參考時鐘的關系如下圖所示2.4.3 上板驗證結果本此驗證數據為遞增數驗證線速率為16.375Gbpsaurora初始化狀態后查看mgt0和mgt1狀態指示信號都正常。硬件連接為Mgt0的發送端連接到mgt1的接收端Mgt1的發送端連接到mgt0的接收端 從圖中我們能夠發現接收數據都是遞增數并且數據驗證模塊的err一直拉低說明數據傳輸正常。2.5 aurora 通信注意事項(1)在aurora的通信中最重要的是二個復位信號一個是reset_pb另一個是pma_init詳細的復位順序可參考xilinx pg074文檔的第66頁下圖是雙工的復位順序。(2)另一個是發送數據時需注意s_axi_tx_treadyAurora 64B/66B核心只有在 s_axi_tx_tready 和 s_axi_tx_tvalid 都被置位時才采樣數據。(3)最后需注意5個狀態指示信號分別是hard_err、soft_err、channel_up、lane_up、gt_pll_lock。ahard_err檢測到嚴重錯誤在核心重置之前保持斷言。bsoft_err表示在輸入的串行數據流中檢測到軟錯誤在單個 user_clk 周期內置位。cchannel_up當 Aurora 64B/66B 通道初始化完成且通道準備好發送/接收數據時會觸發此斷言。dlane_up在每條通道成功初始化后斷言每個位表示一條通道。Aurora 64B/66B 核心只有在所有 lane_up 信號被斷言后才能接收數據。egt_pll_lock當 tx_out_clk 穩定時斷言。模塊資源占用情況上圖顯示了aurora模塊在xcku115_flva1517_2_i fpga上所占用資源情況。