目前我們已經發布了NXP的QorIQLS架構系列的幾款平臺,包含LS1046A、LS1043A、LS1028A、LS1012A。這幾款平臺都原生支援網口、PCIE、SATA等高速介面協議,很多使用者在產品選型和方案設計之初,對於硬體介面資源分配不熟悉,不遵守晶片規範使用導致專案出現問題,造成了嚴重損失。
本期我們就此係列平臺的SerDes資源分配做一篇文章。
LS系列產品的資源不可為不豐富,其中最讓人頭暈的當屬於SerDes協議。百度百科這樣解釋,SERDES是英文SERializer(序列器)/DESerializer(解串器)的簡稱。
它是一種主流的時分多路複用(TDM)、點對點(P2P)的序列通訊技術。即在傳送端多路低速並行訊號被轉換成高速序列訊號,經過傳輸媒體(光纜或銅線),最後在接收端高速序列訊號重新轉換成低速並行訊號。這種點對點的序列通訊技術充分利用傳輸媒體的通道容量,減少所需的傳輸通道和器件引腳數目,提升訊號的傳輸速度,從而大大降低通訊成本。
我們先以最複雜的LS1046A做講解,參考NXP官方文件《LS1046ARM》。
PART.1 LS1046A
在下圖框圖中可以看到有2個SerDes模組,每個模組各有2個PLL,每個模組各有4lane,共有4個PLL,8條lane,有網口、PCIe、SATA功能。
在《LS1046 ARM》文件的“Chapter31 SerDes Module”章節,比較詳細的描述了這一部分,所以我也建議使用者在制定方案前看一看這一部分。我們列出所有LS1046A的 SerDes功能:
第一列是RCW位,只能在這些選項中選擇方案(所以不存在8條lane都配置成網口這種操作);後面ABCD列代表硬體上的訊號名稱和介面功能;最後兩列是時鐘PLL的配置,需要注意Mapping這個詞,表示你需要配置PLL1還是PLL2,舉例:2222代表ABCD4條lane都使用PLL2,2211代表AB lane使用PLL2,CD lane使用PLL1,not available代表此方案不支援PCIe Gen3速度。
XFI,SGMII,QSGMII都是網路。SGMII.n表示1G速度,n是MAC;QSGMII包含4個MAC,每個都有1G的速度;XFI是10G的速度。配置網口必須注意MAC不能衝突。
PCIe.n的n表示PCIE標號,為了方便理解,可以認為n是RC(PCI Express root complex)標識,不可以配置衝突,舉例說SerDes1配置為1163,SerDes2配置為5559,這是不可以的!因為PCIe.1重複了。PCIe.nx4表示4條lane合併為一個PCIE RC,只可以接一個EP(endpoint device)裝置,那麼速度會x4翻倍。
SATA就不用多說了,從可選擇的方案中挑選出來就可以了。
選定好了每條lane的功能之後,還需要選擇SerDes參考時鐘。各功能需要的時鐘如下圖:
這就是我們需要配置的PLL1和PLL2,硬體和軟體需要同時做好。參考的時鐘源我們在核心板上已經做好,使用者不需要額外做這部分的硬體。 具體是這樣實現的:
SerDes2只有PCIE、SATA、SGMII(1.25G)的功能,這三個功能都可以參考100MHz時鐘,那麼我們的核心板上硬體已經固定死100MHz,只需要軟體去選擇PLL即可。
SerDes1有SGMII(1.25G),SGMII(3.125G),QSGMII,XFI,PCIE功能,我們看Table31-4表中這些功能的PLL1都可以設定為100MHz,所以我們在核心板中硬體固定死100MHz,PLL2可以參考100MHz和156.25MHz即可實現全部功能,我們從核心板引出一個SD1_REFCLK_SEL引腳,用於選擇100M,156M,然後軟體配置相對應的PLL即可。
所以使用我們的核心板S2的PLL1,PLL2只能選100MHz;S1_PLL1只有100MHz,S1_PLL2在100M和156M之間做選擇。
可以關閉PLL來禁用對應的SerDes模組。
如果還是沒講清楚那麼我們舉個例子來說。假如有個專案需求1個萬兆網口,4個千兆網口,3個PCIEx1,1個SATA。
Serdes1模組選擇RCW為1040:
XFI.9參考serdes1的PLL2,將S1的PLL2寫為1:156MHz
QSGMII參考serdes1的PLL1,將S1的PLL1寫為0:100MHz
SerDes2模組選擇RCW為5559:(PCIEGen3不可用,Gen2速度為5Gbps)。
PCIe.1,PCIe.2,PCIe.3參考serdes2的PLL2,將S2的PLL2寫為0:100MHz
SATA參考serdes2的PLL1,將S2的PLL1寫為0:100MHz
看到這裡大家有沒有覺得這個配置方案很熟悉啊,是的,我們飛凌釋出的OK1046A-C開發板就是採用的這個方案, 加上CPU原生的2路RGMII,共組成1萬兆+6千兆+3路pcie+1路SATA,實現了CPU介面資源最大化,可供使用者除錯開發。
講完了LS1046A平臺,其他平臺只有1個serdes模組,就比較簡單了。
為了加深大家對於飛凌LS10XX系列產品中serdes模組配置方案的理解,在本文第二部分,我們再講LS1028A平臺的SerDes設計方案做個簡單解讀。
PART.2 LS1028A
飛凌9月份釋出了NXP的LS系列家族新成員--FET1028A-C核心板。其包含豐富的高速介面:PCIE、SATA、USB、乙太網。與我們早已上市的LS1043A、LS1046A相同的是內含SerDes模組,不同的是LS1028A的乙太網口不一樣,因為內建TSN Switch,下面我們先詳細講這一部分。下圖是LS1028A的功能框圖:
以下內容參考NXP官方手冊《LS1028 ARM》,手冊可以在網站或者在我們的使用者資料裡獲取到。在使用核心板做方案設計時,建議使用者也翻一翻這個手冊。
網口switch介紹
乙太網系統由兩個元件組成:乙太網控制器(ENETC)和支援TSN的乙太網交換機。下圖描述了LS1028A中的乙太網子系統。
ENETC(乙太網NET控制器)是一個4埠虛擬化乙太網控制器,支援千兆級設計和時敏網路(TSN)功能,有兩個外部乙太網埠,兩個內部埠連線到該交換機,並且充當Cortex-A72 CPU與ENETC和支援TSN的乙太網交換機互動的PCI根聯合體整合端點。
具有TSN功能的乙太網交換機總共有6個埠:4個外部乙太網埠,以及兩個內部連線到ENETC的埠,用於交換資料和管理/控制功能。
TSN乙太網交換機核心包含5個10/100/1000/2500Mbps乙太網埠和1個10/100/1000Mbps乙太網埠。
概括起來就是LS1028A最多可以引出6個網口,且都支援TSN。
Serdes介紹
SerDes模組可以引出PCIE,SATA,和網口,前面講的ENETC中有5個網口都是透過SerDes引出的SGMII/QSGMII/QXGMII,這部分涉及到的硬體介面有SD1_TX[0:3]_P/N,SD1_RX[0:3]_P/N,SD1_REFx_CLK_P/N,TX/RX是傳送/接收資料的訊號線,CLK是輸入到SerDes的參考時鐘。
讓我們來看看SerDes模組的時鐘結構。
SerDes的參考時鐘源有2個,SYSCLK或者外部輸入的REF_CLK。SYSCLK是固定100MHz的頻率,當SerDes參考SYSCLK 100MHz的時候,有些介面功能是有限制的;使用外部的REF_CLK則可以靈活選擇配置時鐘。
Serdes方案
在LS1028A晶片中,SerDes可以配置下表的功能,不在表中的搭配是不允許使用的。
選定SesDes方案後還需要配置時鐘,根據前面的時鐘結構我們可以看到SerDes內部有PLL1和PLL2,PCIeGen1/2 PLL mapping這一列就是我們需要配置PLL1還是PLL2,比如2211,表示laneA和laneB選擇PLL2,laneC和laneD選擇PLL1。
下圖是每種功能介面需要的參考時鐘頻率。
比如PCIE功能需要參考100MHz或者125MHz時鐘,因為我們的SYSCLK是100MHz的,就不需要額外再REF_CLK引腳上新增外部時鐘。一旦我們使用了2.5xSGMII或者USXGMII網路功能,SYSCLK就不符合需求了,就需要在REF_CLK引腳上輸入參考時鐘。
飛凌FET1028A-C核心板考慮到高性價比並覆蓋絕大部分應用場合,只做好了100MHz的SYSCLK時鐘,同時也將SD1_REFx_CLK_P/N引腳連線到聯結器中,允許使用者在設計中使用更高頻率的時鐘。
建議使用者在收到產品準備測試前,先看看手冊中的SerDes章節,這一部分很重要。希望這篇文章能對您的設計有所幫助,您也可以聯絡飛凌技術支援獲取幫助。