*此調試過程亦適用于10G, 25G, 40G, 50G, 100G以太網IP核,每個IP可能會有些細節上的不同,但整個自協商和LinkTraining過程是類似的,可以作為參考。
*如果是40G/50G, 100G以太網,選的是多通道的IP,務必保證兩端的通道0是正確對接上的,因為在做自協商的時候,以太網只使用通道0,其它通道需在自協商完成后再加入工作。
一.產生一個例子工程仿真
打開你的Vivado工具,選擇你所需要的器件類型,在IPCatalog里產生一個10G/25GEthernet Subsystem IP core,勾上BASE-KR和IncludeAN/LT Logic以涵蓋IP自協商功能
(這里為方便起見,選擇了Controland Status Vectors接口,這樣IP的配置可以通過在代碼中直接用邏輯賦值IP的input輸入來完成;如果你需要選用AXI接口進行寄存器配置,請參考例子工程的各項配置,自己相應地寫好對應寄存器值)
右鍵IP的.xci,Open IPExample Design
例子工程產生出來之后,我們需要做一些簡單的修改,因為原始的例子工程仿真里面,沒有做自協商的演示。
1. 修改頂層代碼“xxv_ethernet_0_exdes.v”,使能自協商功能,并且將AN的seed信號引到輸入port上,方便之后修改,如下圖
2. 修改tb文件,原來tb只調用了一個IP自己做環回,我們需要再復制一個,改成兩個IP互聯,將兩者的串行數據txp/txn和rxp/rxn對接起來;新加的IP,輸入可以跟原來那個共享保持不變,輸出可以懸空;最后將之前拉出來的AN的seed值任意設置為兩個不同的值即可(這是IEEE協議的要求,PG210中有相關描述)
3. 在開始仿真前,請取消“UsePrecompiled IP simulation libraries”的勾,并加上“-dSIM_SPEED_UP”的vlog選項,以加速完成你的仿真,便于查看仿真結果。
然后,點擊RunBehavior Simulation
二.自協商與LinkTraining的調試過程
*以下整個調試過程同時適用于仿真與上板,上板時可以用ILA抓出相同的信號來進行調試
a. 隨著tx_disable拉高一個脈沖,標志著以太網的自協商狀態機正式開始運行;上電,復位IP或兩端任一端復位AN,都會導致這一行為的發生。
b. 自協商的工作完全由IP自動完成的,所以只要配置沒問題,你只需要耐心等待就可以看到自協商的完成,以an_good_check為標志,并且進入下一步linktraining
c. 在LT的過程中,首先你要等到IP能夠鎖定LT幀,即frame_lock拉高,然后你就可以進行你自己的LT算法了,與AN不同LT是由客戶手動完成的。
不過由于Xilinx的Serial Transceiver能夠提供非常好的信號質量,因此我們建議用戶如果兩端用的都是Xilinx的器件,可以直接跳過此步驟,將輸入信號rx_trained拉高。
d. 無論你是做完了自己的LT測試,還是直接跳過了此步驟,當兩端都拉高了自己的rx_trained之后,就可以等待LT的完成標志signal_detect拉高
e. 最后autoneg_complete拉高代表了整個自協商和LinkTraining的流程都成功完成了,此時IP恢復到與BASE-R模式完全相同的工作模式
f. 等待block_lock,stat_rx_status等信號拉高,以太網IP最終完成了linkup
*具體AN/LT的步驟(包括狀態機)可以同時參考IEEE協議的定義
*以上這些IP標志信號的命名,與以太網協議定義的AN/LT狀態機中狀態信號命名基本保持一致,方便客戶在協議中找到對應的涵義
三.調試建議
當你在實際應用中,無法完成自協商時,可以分步來做調試;首先關閉兩端的AN/LT,以太網是否能完成link up,并且傳輸數據無誤碼;然后分別打開AN關閉LT,或者打開LT關閉AN,是否都能linkup,哪個失敗就具體調試哪個部分;最后全部使能,檢查link結果。
編輯:hfy
-
以太網
+關注
關注
40文章
5419瀏覽量
171603 -
寄存器
+關注
關注
31文章
5336瀏覽量
120232 -
Vivado
+關注
關注
19文章
812瀏覽量
66472
發布評論請先 登錄
相關推薦
評論