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