PCIe總線中的鏈路初始化與訓(xùn)練(Link Initialization & Training)是一種完全由硬件實現(xiàn)的功能,處于PCIe體系結(jié)構(gòu)中的物理層。整個過程由鏈路訓(xùn)練狀態(tài)機(Link Training and Status State Machine,LTSSM)自動完成,也就說基本沒有數(shù)據(jù)鏈路層和事務(wù)層啥事。
LTSSM在PCIe體系結(jié)構(gòu)中的位置的示意圖如下:

在系統(tǒng)復(fù)位后,會自動進行鏈路訓(xùn)練,以達成以下目標(biāo):位鎖定(Bit Lock)、字符鎖定(Symbol Lock,Gen1 & Gen2 Only)、塊鎖定(Block Lock,Gen3 Only)、確定鏈路寬度(Link Width)、通道位置翻轉(zhuǎn)(Lane Reversal)、信號極性翻轉(zhuǎn)(Polarity Inversion)、確定鏈路的數(shù)據(jù)率(Data Rate)和通道對齊(Lane-to-Lane De-skew)等功能。
下面依次的,簡要地介紹一下這些目標(biāo)。
注:本次連載博文主要Gen2為主,所以一些和Gen3相關(guān)的內(nèi)容只會簡單提及,并不會深入地介紹,有興趣的可以閱讀PCIe Spec V3.0或者Mindshare的相關(guān)書籍。
首先是
位鎖定(Bit Lock):
前面的文章中提到過,PCIe總線采用了一種嵌入式時鐘的機制,即發(fā)送端只向接收端發(fā)送數(shù)據(jù)信號,并不發(fā)送時鐘信號(時鐘信號影藏在數(shù)據(jù)信號中)。接收端可以通過CDR(Clock and Data Recovery)邏輯將時鐘從數(shù)據(jù)流中恢復(fù)出來,然后再用恢復(fù)出來的時鐘對數(shù)據(jù)信號進行采樣。當(dāng)然,時鐘恢復(fù)需要一定的時間,才能保證時鐘信號與數(shù)據(jù)信號的相位對應(yīng)關(guān)系符合要求。一旦CDR完成了時鐘的恢復(fù),我們就說PCIe總線完成了位鎖定。
字符鎖定(Symbol Lock):
完成了位鎖定之后,只是能夠準(zhǔn)確地識別出數(shù)據(jù)流中的0和1,還是不知道發(fā)送的內(nèi)容是個啥。對于Gen1&Gen2來說,采用的8b/10b編碼,即傳輸?shù)臄?shù)據(jù)是以10bit為一個字符。LTSSM可以引導(dǎo)物理層相關(guān)邏輯通過識別COM字符(K28.5)來確定每個字符的開始與結(jié)束為止,即字符鎖定。
鏈路寬度(Link Width):
由于PCIe允許將x1的PCIe卡插入x4、x8甚至是x16的PCIe插槽中。因此在鏈路訓(xùn)練與初始化過程中,相鄰的兩個PCIe設(shè)備需要相互通信來確定其支持的最大鏈路寬度。
注:實際上PCIe Spec還允許采用動態(tài)帶寬的機制,即允許鏈路寬度和數(shù)據(jù)率動態(tài)調(diào)整,以實現(xiàn)降低功耗等功能。
通道位置翻轉(zhuǎn)(Lane Reversal):
有的時候兩個PCIe設(shè)備的通道排列位置可能不太一致,PCIe Spec允許對默認(rèn)的通道排列位置重新排列,如下圖所示。但是,從大部分的PCIe設(shè)備(PCIe卡和插槽等)都是按照統(tǒng)一的標(biāo)準(zhǔn)實現(xiàn)的,一般不會出現(xiàn)這種情況,因此這一功能是可選的。

信號極性翻轉(zhuǎn)(Polarity Inversion):
前面的文章中介紹過,PCIe收發(fā)的都是差分信號,有的時候Link兩端的設(shè)備的對應(yīng)信號的極性可能是相反的。因此,PCIe Spec允許在鏈路訓(xùn)練與初始化的時候,對其進行調(diào)整,如下圖所示。和通道位置翻轉(zhuǎn)(Lane Reversal)不一樣的是,信號極性翻轉(zhuǎn)(Polarity Inversion)并不是一個可選項,而是所有標(biāo)準(zhǔn)PCIe設(shè)備都應(yīng)支持的。

鏈路的數(shù)據(jù)率(Data Rate):
系統(tǒng)剛復(fù)位的時候,鏈路訓(xùn)練和初始化都是基于2.5G T/s的速率的。如果Link兩端的設(shè)備都支持更高的速率,則會自動進入Re-training狀態(tài),以重新切換速率。
注:PCIe Spec規(guī)定,高速率的PCIe設(shè)備必須能夠向下兼容。即Gen2必須同時支持2.5G T/s和5G T/s。
通道對齊(Lane-to-Lane De-skew):
PCIe鏈路完成字符鎖定后,還需要進行通道對齊。因為有的通道的信號可能先到達,有的可能后到達。PCIe Spec規(guī)定PCIe鏈路應(yīng)有能力對一定范圍了的Lane-to-Lane Skew進行移除,使得各個Lane上的信號是同步的。關(guān)于通道對齊,會在后續(xù)的博文中詳細(xì)地介紹。
-
嵌入式
+關(guān)注
關(guān)注
5193文章
20276瀏覽量
331732 -
總線
+關(guān)注
關(guān)注
10文章
3031瀏覽量
91468 -
PCIe
+關(guān)注
關(guān)注
16文章
1437瀏覽量
87939
原文標(biāo)題:【博文連載】PCIe掃盲——鏈路初始化與訓(xùn)練基礎(chǔ)(一)
文章出處:【微信號:ChinaAET,微信公眾號:電子技術(shù)應(yīng)用ChinaAET】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
NVMe高速傳輸之?dāng)[脫XDMA設(shè)計之七:系統(tǒng)初始化
NVMe高速傳輸之?dāng)[脫XDMA設(shè)計之八:PCIe初始化狀態(tài)機設(shè)計
NVMe高速傳輸之?dāng)[脫XDMA設(shè)計33:初始化功能驗證與分析
NVMe高速傳輸之?dāng)[脫XDMA設(shè)計34:初始化功能驗證與分析2
NVMe高速傳輸之?dāng)[脫XDMA設(shè)計48: 核心測試內(nèi)容
NVMe高速傳輸之?dāng)[脫XDMA設(shè)計49:主要功能測試結(jié)果與分析1
SRIO重復(fù)初始化后鏈路不通了
使用iMPACT無法初始化鏈
PCIe總線必須要先完成Flow Control初始化
IIC總線初始化基本驅(qū)動參考程序應(yīng)用代碼免費下載
DDR4-初始化、訓(xùn)練和校準(zhǔn)
GraniStudio:初始化例程
EtherCAT總線初始化步驟
PCIe總線中的鏈路初始化與訓(xùn)練
評論