Xilinx提供了一個1G/10G/25G Switching以太網IP,該IP可以動態切換為1G以太網或者10G/25G以太網,它們共享同一個GT/SERDES端口。
這個IP目前僅支持比較新的器件,如UltraScale/UltraScale+,Versal;如果需要使用7系列器件,可以到Xilinx主頁搜索參考設計XAPP1243;又或者,如果想有更大的設計修改余地,而不想用IP,那UltraScale/UltraScale+也有參考設計XAPP1307
1G/10G/25G Switching以太網IP的結構:
實際上,這個Switching IP內部,直接調用了,另外兩個Xilinx以太網IP core,分別是10G/25G Ethernet Subsystem IP和1G/2.5G Ethernet PCS/PMA or SGMII IP,然后共享了用戶側數據接口,和物理層GT端口。當需要切換速率的時候,IP只需要用選擇器選擇,走的是10G/25G IP還是1G IP,同時通過GT的DRP端口,動態切換GT的線速。
也正因為是這樣的結構設計,對于一些更細致具體的信息,如1588功能或者寄存器定義,可以在10G/25G IP文檔PG210,以及1G IP文檔PG138或PG047里面找到。
如何手動切換IP的速率:
手動模式下,Switching IP通過信號“ctl_core_speed_sel”來配置你所期望的速率,通過信號“stat_core_speed”來觀察當前IP的速率。
實際上,產生一個Switching IP的例子工程,例子提供了手動切換速率的示例,直接跑功能仿真就能看到。例子工程手動切換速率的流程為:
1. 首先拉高代碼里的“mode_change”信號,開始切換
2. 接著例子代碼就會寫IP的寄存器,修改“ctl_core_speed_sel”為需要的速率
3. 并且自動通過GT的DRP接口,修改GT的參數,動態切換端口線速率
4. 最后等待以太網IP的link up
對應例子工程代碼如下:
對應仿真截屏:
如何使用以太網的自協商功能,自動切換IP的速率:
首先,需要使能IP的自協商功能,以10G/25G以太網IP為例,拉高信號“ctl_autoneg_enable”,拉低信號“ctl_autoneg_bypass”,并且兩端的以太網要設置不同的AN Nonce Seed的值,這樣10G的自協商就可以自動成功完成。
要注意的是,無論是10G/25G還是1G的以太網協議,都要求兩端同時打開自協商,或者同時關閉自協商,兩端才能link up;一端開一端關的話,自協商是無法成功的。
接下來,如果10G/25G的自協商失敗了,例如對端其實是一個1G的以太網器件,那么自協商狀態機會走到Parallel Detection狀態,Switching IP就會自動切換速率到1G,再進行下一步操作。PG292對自協商速率的流程有如下描述:
A block diagram of the 1G/10G/25G Ethernet Subsystem with Auto-Negotiation (AN) with Parallel Detection (PD) is shown in the following figure. The Parallel Detection is done inside the AN RTL, which is encrypted. As a result of PD, only the AN is resolved to 1G speed.
這里提到的Parallel Detection就是源自IEEE802.3協議關于10G以太網自協商定義的那部分,狀態機跳轉里的一個狀態;當10G自協商不能成功,狀態機就會跳到這個PD狀態。有興趣的可以打開IEEE802.3的Clause 73章節了解進一步的詳情。
整個流程,從仿真里看,如下截屏:
由于以太網自協商的過程中,里頭的狀態都有計數器時間定義需要等待,所以在仿真里需要很長很長時間才能完成,因此并不建議自協商做功能仿真。
以上就是1G/10G/25G Switching以太網IP的手動和自動兩種切換速率的原理和方法。
審核編輯:湯梓紅
-
以太網
+關注
關注
40文章
5385瀏覽量
171160 -
寄存器
+關注
關注
31文章
5325瀏覽量
120048 -
仿真
+關注
關注
50文章
4048瀏覽量
133431 -
端口
+關注
關注
4文章
955瀏覽量
32016
發布評論請先 登錄
相關推薦
評論