XILINX 千兆以太網 IP 解析

參考PG047

The LogiCORE™ IP 1G/2.5G Ethernet PCS/PMA or Serial Gigabit Media Independent Interface (SGMII) core provides a flexible solution for connection to an Ethernet Media Access Controller (MAC) or other custom logic.

It supports two standards: the 1000BASE-X and 2500BASE-X Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) operation, as defined in the IEEE 802.3-2008 standard and the Gigabit Media Independent Interface (GMII) to Serial-GMII (SGMII) bridge or SGMII to GMII bridge, as defined in the Serial-GMII Specification V1.7 (CISCO SYSTEMS,
ENG-46158) [Ref 1].

Dynamic switching between 1000BASE-X and SGMII standards is also supported

 

速率和模式

從IP核的名字可以看出,該核通過配置可以生成兩種核,光口可以用以太網PCS/PMA mode電口具有PHY採用SGMII mode,這裏速率採用1G,因爲其內部有8b/10b轉換,所以參考時鐘則是125MHz,有效的數據傳輸速率就變成了125*10*8/10。

備選項如果勾選,IP核就會把底層SerDes的一些寄存器接口引出來供用戶配置,這裏不需要。

 

核配置

1000BASEX 的核配置就簡單的多了,因爲必須要使用到PCS和PMA,因此物理接口必選 Device Specific TR,然後是GMII解析出來的時鐘選擇自協商功能勾選,MDIO是一種配置IP核的總線,有時鐘、數據、標誌信號和中斷,我的感覺是提供給CPU用的,給上層提供一個方便的配置管理接口。

對於FPGA來說,可以採用另一種途徑,Configuration Register,通過寄存器的形式去完成配置,雖然FPGA也能利用MDIO總線,總歸是麻煩了些,所以就只用默認的寄存器配置途徑。

SGMII 模式的物理接口除了可以用 TR ,還可以用 LVDS 接口。

PHY 與 FPGA 跨時鐘的 BUFFER 選項,這個看手冊 Figure 3-11。

還有工作模式選項,默認MAC mode,勾選PHY mode,這個對自協商功能來說非常重要,因爲,只有PHY mode,自協商廣播寄存器是可寫的(Advertisement register is programmable)。

按照我的理解就是,MAC 模式中的速率、雙工、流控等信息只能從對端獲取,PHY 模式則可以通知對端自己的配置信息。關於自協商的數據過程,SGMII mode 和 1000BASEX mode 比較類似,都是通過協議裏的兩個寄存器 Reg4、Reg5 交叉式的通知與獲取,當然,並不是像圖中那樣還有專門的連線,自協商信息也是通過 SGMII 總線收發的,抓 status vector 的信號就可以看到協議裏/C/碼形式的,bit2 代表的自協商配置信息流(AN CONFIG Sequences),總之,前端選擇默認模式就好,但後端一定要選擇 PHY mode,因爲它必須把自協商信息廣播(advertise)給交換芯片的 reg5。

接收 GMIl 時鐘源:選擇接收路徑和 GMII RX 接口的時鐘源。2.5G數據速率不支持 RxGmiClkSrc=RXOUTCLK。當選擇 RXOUTCLK 時,由於 RX 數據路徑與恢復時鐘是同步的,所以不需要對 fabric elastic buffer 進行 required 。因此,SGMll 速度選擇不需要 SGMIl capability選項卡。

 

 

 

Shared Logic

Xilinx很貼心,它把所需要的外圍電路都設計好了,主要包括時鐘管理和復位的一些邏輯。

in Core 表示它會把這些邏輯封裝進核裏,成爲一個新核,把處理後的接口引出來。

in Example design 則是會像例子裏的一樣,外圍電路以獨立模塊的形式呈現。

舉個例子,in Example design 模式裏 MMCM 會將時鐘鎖定信息輸入到核的 mmcm_locked,而在 in Core 模式,只能看到mmcm_locked_out,模塊間的邏輯因爲進一步封裝而被隱藏了。

因爲,需要用它來加速工程開發,並不意味着不要要看它的代碼和手冊,這裏面也有坑,比如,它的異步復位是高有效。

 

 

收發器被配置爲在 txoutclk 端口上輸出該時鐘的一個版本(1G爲125 MHz, 2.5G爲312.5 MHz)。然後 txoutclk 路由到 BUFG_GT。USERCLK:生成 userclk  (1G爲62.5 MHz、125 MHz,2.5G爲312.5 MHz、156.25 MHz)、userclk2 (1G爲125MHz, 2.5G爲312.5 MHz),並放置到全局時鐘路由上。USRCLK:這些時鐘被輸入回用戶接口時鐘端口usrclk和usrclk2上的收發機。

sgmii_clk_r、 sgmii_clk_f 

這提供了 SGMII 時鐘傳遞以正確的頻率;當將 core 和 SGMII 自適應模塊連接到內部邏輯時,可以忽略這些信號。

 

 

 

 

 

 

選擇默認的即可。

 

include shared logic in core:

 

 

 

IP 核的內部信號初始化配置以及常量定義

 

DRP:Dynamic Reconfiguration Port

status_vector

output 端口,phy 層反饋的信號。

bit 0 :連接狀態。這個信號表示鏈路的狀態。

當高時,鏈路是有效的:鏈路的同步已經獲得,自動協商(如果存在並啓用)已經成功完成,收發機的重置順序(如果存在)已經完成。

當低時,沒有建立有效的鏈接。鏈接同步失敗或自動調整(如果存在並啓用)失敗。

當啓用自動協商時,此信號與狀態寄存器第1.2位:鏈接狀態相同。

當禁用自動協商時,此信號與status_vector位[1]相同。在這種情況下,可以使用任何一位。

 

speed_is_10_100

 

默認設置爲:speed_is_10_100 = 0;speed_is_100 = 0;

configuration_vector

默認設置爲: configuration_vector = 5‘b00000

 

an_adv_config_vector

 

如果 MDIO 接口沒有選擇的話,core 可以被配置通過 configuration_vector。

默認設置爲(參考 example design): an_adv_config_vector = 15’b0_00_00_0_00_0_1_0000_1

 

signal_detect

連接出現問題,非 AN 模式下:

查看是否連接:

   1. 讀 register 1 的 bit 1.2。

   2. 查看 status_vector [0] 的 logic 是否是 1。

如果沒有連接成功需要進行一下操作:

   1. 確保在 core 和 link partner (連接到 core 的設備或測試設備)中禁用自動協商

   2. 監視 core 的 signal_detect 輸入信號:

      2.1. 連接到光模塊以檢測光的存在。邏輯1表明光模塊對光的檢測是正確的;邏輯0表示錯誤。因此,要確保驅動的極性正確。

      2.2. signal_detect 信號邏輯置 1。

默認設置爲:signal_detect = 1。

 

an_restart_config

這個信號只有在AN存在時纔有效。此信號的上升沿是重寫 Bit 9 或 Register 0 的使能信號。爲了觸發一個 AN 的開始,這個信號應該被置0,然後重新置1。

在 AN 模式下起作用。

默認設置爲:an_restart_detect = 0。

 

reset

異步復位,整個 core 的復位,reset 高電平有效。

 

sgmii_clk_r、sgmii_clk_f

sgmii_clk 輸出到 MAC,這個時鐘是 sgmii_clk_r、sgmii_clk_f 通過使用 ODDR 的原語得到。

monitor clock for the GMII receiver

在 example design 中

assign mon_rx_clk = gmii_rx_clk;

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章