1 基本介紹
網絡交換子系統由EMAC子產品、SGMII子產品、PHY裝置、MDIO子產品、網絡交換機、以及系統內建的其他相關的子子產品。
NETCP的網絡交換子系統的主要作用是提供一個在主裝置和其他連接配接裝置間進行資料傳輸的接口。
網絡交換子系統主要包括如下三個子產品:
Ø 網絡交換部件
Ø MDIO子產品
Ø 兩個SGMII子產品(KeyStone I裝置兩個;KeyStone II裝置四個)
網絡交換子系統的交換機有三個端口,以及可以給主機的一組中斷。可以通過配置總線進行配置。如圖 1.1所示:

圖1.1 KeyStone I 網絡交換子系統框圖
KeyStone II的網絡交換子系統,擁有兩個額外的SGMII端口。網絡交換子系統内部的交換機有四個SGMII端口以及一個主機端口。如圖 1.2所示:
圖1.2 KeyStone II 網絡交換子系統框圖
Ø 其中端口0是主機端口,該端口允許交換子系統和NETCP進行雙向通信
Ø 端口1至端口4用于在SGMII和交換子系統之間進行雙向通信
Ø 交換子系統的中斷連接配接到DSP上,以允許通知交換狀态;
Ø 配置總線用于連接配接交換子系統和NETCP,以允許使用者配置交換子系統;
Ø 每個SGMII子產品都能獨立地連接配接到網絡交換子系統、SerDes、以及配置總線。
Ø 配置總線允許使用者配置SGMII、交換部件、以及MDIO
2 網絡子系統架構
2.1 時鐘
2.1.1 網絡交換子系統使用了如下時鐘:
Ø 網絡交換子系統的時鐘
Ø SGMII SerDes的參考時鐘
Ø IEEE 1588 時間同步時鐘
Ø MDIO時鐘
Ø GMII時鐘
2.1.2 網絡交換子系統時鐘
網絡交換子系統的時鐘通常用于網絡交換子系統的大多數邏輯,通常為350MHz。
2.1.3 SGMII SerDes參考時鐘
SGMII SerDes的參考時鐘是DSP的輸入時鐘。SGMII SerDes參考時鐘作為SGMII SerDes PLL的輸入,可以通過SGMII_SERDES_CFG_PLL寄存器配置。SGMII SerDes PLL控制在SGMII和SerDes子產品之間的資料傳輸速率。對于SGMII SerDes的時鐘範圍,可以參考裝置特定的資料手冊。
2.1.4 MDIO時鐘
MDIO的時鐘有外設系統時鐘分頻而來。MDIO時鐘可以配置達到2.5MHz,但通常配置為1.0MHz。
2.1.5 IEEE 1588時間同步時鐘
IEEE 1588時間同步時鐘主要用于網絡交換子系統的時間同步子產品。可以通過配置CPTS_RFTCLK_SEL寄存器的CPTS_RFTCLK_SEL字段,選擇一個CPTS_RCLK的輸入時鐘源
2.1.6 GMII時鐘
GMII的時鐘頻率由802.3指定。
Ø 10Mbps : 2.5MHz
Ø 100Mbps : 25MHz
Ø 1000Mbps: 125MHz
2.2 GbE交換機的結構
GbE在網絡交換子系統中的兩個SGMII子產品和NETCP之間,提供了一個交換機。如圖 2.1所示,GbE交換機包括如下部分:
Ø 包資料流接口
Ø MAC子子產品
Ø MAC接收FIFO
Ø 統計子子產品
Ø 時間同步子子產品
Ø 位址查詢引擎(ALE)子子產品
圖2.1 GbE交換機
GbE的交換機有三個端口:端口0與包資料流交換部件通信;端口1與SGMII0通信;端口2與SGMII1通信。
GbE交換機内部的子產品如下:
Ø 包資料流接口:用于GbE交換機與NETCP的包資料流交換部件之間通信;
Ø MAC子子產品:用于在交換機内部信号和SGMII子產品的GMII信号之間做轉換;
Ø 統計子子產品:用于統計網絡交換子系統接收和發送的資料包的個數;
Ø 時間同步子子產品:用于支援IEEE 1588時鐘同步;
Ø 位址查詢引擎(ALE):用于依據位址來推送和過濾資料包。
2.2.1 包資料流接口:
包資料流接口用于GbE交換機與NETCP的包資料流交換部件之間通信。
1. 包資料流發送接口
發送接口主要用于将資料包從GbE交換機的端口0發送到NETCP的包資料流交換部件。GbE交換部件有兩個相同的包資料流發送接口。第一個接口(TXA)将端口1的資料包從端口0發送出去;第二個端口(TXB)将端口2的資料包從端口0發送出去。
在包DMA接收流收到的資料包中,除了包資料之外,還提供額外的資訊。這些額外資訊包括來源的識别資訊。如果資料包來自端口1,那麼P0_CPPI_SRC_ID寄存器的TXA_SRC_ID字段将被放在接收資料包描述符中的SRC_ID字段中。同樣,如果包來自端口2,則P0_CPPI_SRC_ID寄存器的TXB_SRC_ID字段中的值将放在接收包描述符的SRC_ID字段中。
TXA和TXB發送接口都有兩個22KB的緩存。隻有當發送接口輸出緩存中有了整個包資料,或者超過CPPI_THRESH兩個字時,才開始發送資料包。加上2是因為還有一個兩個字的雙緩沖
對于KeyStone II, 還存在端口TXC和TXD。
2. 發送VLAN的處理過程
當CPSW_CONTROL寄存器的VLAN_AWARE被置位時,GbE交換機進入VLAN-aware模式。在VLAN-aware模式下,按照與MAC輸出VLAN資料包過程相同的規則對TAG進行添加、删除或替換。當VLAN_AWARE被清零時,發送包不會被修改。
3. 包資料流接收接口
GbE交換機端口0的接收流接口負責從NETCP的包資料流交換部件接收資料包。GbE交換機隻有一個包資料流接收端口。
除了包資料,接收流接口還可以提供附加的控制資訊,這些資訊駐留在發送到GbE交換機的包的描述符的PS_FLAGS字段中。
對于傳輸到GbE的資料包,PS_FLAGS字段的配置如下:
Ø RX_PASS_CRC:1,表示包中已經包含CRC;0,表示包中沒有CRC,需要MAC子產品生成。
Ø TO_PORT:設定非0值時,資料包會跳過ALE,直接從指定端口發送出去。當為0時,表示無效;當為1時,發送資料包到GbE交換機的端口1;當為2時,發送資料包到GbE交換機端口2。對于KeyStone II,還有3和4可供選擇。
2.2.2 MAC子子產品
MAC子子產品支援IEEE802.3标準,并支援10/100/1000 Mbps模式。MAC子產品在GbE和SGMII子產品之間提供了一個接口。MAC子產品主要是在GbE交換機信号和SGMII子產品GMII信号之間進行轉換。
除了在SGMII子產品和GbE交換機之間進行轉換外,MAC子產品還負責IEEE 802.3以太網幀相關的操作。對于所有包,MAC子產品添加或删除前言,開始幀分隔符,以及包廂的間隔。MAC子產品驗證并可選地生成CRC校驗和。
2.2.3 MAC接收FIFO
在GbE交換機内部,兩個MAC端口都有一個相同的資料包FIFO。每個包FIFO都包含一個獨立的邏輯接收隊列和四個邏輯發送隊列(優先級從0到3)。每個包FIFO包含81920個位元組(80k),被組織成10240個64位字。該FIFO存儲空間被端口的發送和接收隊列共享。可以通過MAX_BLKS寄存器來配置設定隊列占用空間的大小。其中TX_MAX_BLKS字段用于配置發送FIFO的大小,機關是4k;RX_MAX_BLKS字段用于配置接收FIFO的大小,機關也是4k。建議TX_MAX_BLKS與RX_MAX_BLKS字段的和為20,否則會存在空間浪費,預設是17。
2.2.4 統計子子產品
GbE交換機有兩個統計子產品,用于記錄資料包進出交換機的事件。對于KeyStone I,統計子產品A用于記錄端口0的事件;統計子產品B用于記錄端口1和端口2的事件。
對于KeyStone II,網絡交換機有四組統計子產品。STATSA用于統計端口0的接收,以及端口0的TXA和TXB;STATSC用于統計端口0的TXC和TXD;STATSB用于統計端口1的事件;STATSD用于統計端口3和端口4。
預設情況下,統計子產品是關閉的。當關閉時,所有的統計寄存器可以被正常讀寫,可以通過寫0x00000000對統計寄存器清零。在統計子產品使能之後,所有統計資料都是隻讀的;但是,當此時向寄存器寫資料時,會起到減值的作用,即新的寄存器值=原寄存器值-寫入的值。如果寫入的值大于目前寄存器的值,那麼寄存器的值會被清零。可以通過配置STAT_PORT_EN寄存器的3:0位來使能統計子產品。
2.2.5 時間同步子子產品
根據IEEE 1588規範的附件F, KeyStone 1時間同步子產品用于促進主機對時間同步操作的控制。大多數IEEE 1588标準超出了時間同步子產品的範圍,必須由主機軟體處理。
時間同步子產品的主要目的是檢測時間同步事件并生成時間戳,然後将這些資訊提供給托管軟體進行處理。KeyStone I的時間同步子子產品主要監測以下六種類型的時間同步事件:
Ø 網絡接收事件
Ø 網絡發送事件
Ø 軟體時間戳推送事件
Ø 時間戳翻轉事件
Ø 時間戳半翻轉事件
每個網絡端口都可以觸發發送和接收事件,時間戳推送事件由軟體觸發。事件同步子產品包含如下幾個部分:
Ø 時間戳計數器
Ø 網絡端口1和端口2接口
Ø 事件FIFO
Ø 事件挂起接口
2.2.6 位址查找引擎(ALE)
位址查找引擎(ALE)處理所有接收到的資料包,以确定資料包應該轉發到哪個端口(如果有的話)。ALE使用接收到的資料包的端口号、目标位址、源位址、長度/類型和VLAN資訊來确定如何轉發資料包。ALE将端口掩碼輸出到交換機構,該機構訓示應該轉發到的端口。當ALE_CONTROL寄存器中的ALE_ENABLE位被設定時,ALE被啟用。當ALE_ENABLE位被清除為0時,所有包被删除。
可以通過ALE_CONTROL寄存器的ALE_BYPASS位,将ALE配置為bypass(跳過)模式。當為bypass模式時,所有由MAC子產品接收到的資料包都被發往主機端口(端口0)。主機端口同樣可以跳過ALE,直接将資料包發送到MAC端口。
1. ALE 表
ALE表包含1024個表項。每個表項表示一個空閑條目、一個位址、一個VLAN、一個位址/VLAN對或一個OUI位址。
2. ALE資料包轉發流程
對于發送到ALE的每一個資料包,ALE會确定該資料包是否應該丢棄或者轉發。如果需要轉發,那麼ALE需要确定該資料包應該發往哪一個或哪些端口。每個端口都有一個相應的資料包轉發狀态,該狀态可以是以下四個中的一個:
Ø Disable(無效)
Ø Blocked(阻塞)
Ø Learning(學習)
Ø Forwarding(轉發)
預設狀态下,所有端口都是關閉的。為了使能端口,主機必須通過設定各自的ALE_PORTCTL寄存器以配置資料包轉發狀态。
一個資料包的轉發需要經過以下四個步驟
1、 入口過濾
2、 VLAN Aware查詢
3、 VLAN Unaware查詢
4、 發出
2.3 SGMII架構
SGMII子產品的主要功能是在CPGMAC子產品和SerDes子產品之間做資料格式轉換。SGMII子產品也負責與其他裝置建立連接配接和自協商。
2.3.1 SGMII接收端口
SGMII接收端口主要負責将經過編碼的SerDes信号,轉換成MAC子產品需要的GMII信号。
2.3.2 SGMII發送端口
SGMII發送端口主要負責将MAC子產品的GMII信号,轉換成SerDes子產品需要的8B/10B編碼信号。
2.3.3 SGMII的操作模式
1、 回環模式
SGMII子產品支援在内部将發送信号和接收信号連接配接起來。這樣連接配接起來後,是不會經過SerDes的。當處于回環模式時,發送時鐘同時作用于接收時鐘。可以通過SGMII_CONTROL寄存器的LOOPBACK位設定回環模式。當進入或退出回環模式時,一定要通過SOFT_RESET寄存器的RT_SOFT_RESET位,重置發送和接收邏輯。進入和退出回環模式的配置步驟如下:
Ø 将SGMII_CONTROL寄存器的MR_AN_ENABLE位清零
Ø 将SOFT_RESET寄存器的RT_SOFT_RESET位置位
Ø 将SGMII_CONTROL寄存器的LOOPBACK位置位
Ø 将SOFT_RESET寄存器的RT_SOFT_RESET位清零
2、 與PHY的連接配接配置
當連接配接到外部PHY時,PHY作為主裝置,SGMII子產品需要被配置為從裝置,配置步驟參見資料手冊。連接配接如圖 2.2所示:
圖2.2 SGMII與PHY連接配接
3、 SGMII與SGMII自協商
當兩個SGMII裝置以自協商的方式連接配接時,一個SGMII必須配置為主裝置,另一個必須配置為從裝置,配置步驟參見資料手冊。如圖 2.3所示:
圖2.3 兩個SGMII以自協商的方式連接配接
4、 SGMII與SGMII強制連接配接
當兩個SGMII裝置強制連接配接,那麼每個SGMII裝置都必須被配置為主裝置,配置過程參見資料手冊。如圖 2.4所示:
圖2.4 兩個SGMII以強制方式連接配接
2.4 MDIO架構
MDIO子產品可以最多管理32個連接配接到EMAC的PHY裝置。MDIO子產品允許幾乎透明的MDIO接口操作,幾乎沒有DSP的維護。MDIO子產品通過不斷輪詢32個MDIO位址來枚舉系統中的所有PHY裝置。當它檢測到一個PHY裝置時,MDIO子產品讀取PHY狀态寄存器來監控PHY連結狀态。
2.5 KeyStone I SerDes架構
SerDes宏是一個自包含的宏,包括兩對發送(TX)和接受(RX),以及鎖相環(PLL)。每對發送和接收端口對應一個SGMII子產品。内部的PLL會乘以一個使用者提供的參考時鐘。
2.6 GbE交換子系統初始化流程
Ø 配置CPSW_CONTROl寄存器
Ø 配置MAC1_SA和MAC2_SA源位址寄存器
Ø 通過CPSW_STAT_PORT_EN寄存器,使能需要統計的端口
Ø 配置ALE
Ø 配置MAC子產品
Ø 配置MDIO和PHY
Ø 配置SGMII子產品
2.7 中斷
在GbE交換子系統中,有三個子產品可以生成中斷,分别是MDIO子產品、統計子產品、以及時間同步子產品。
轉載于:https://blog.51cto.com/7183031/2149923