鏈路初始化和訓練

一、總覽

鏈路初始化和訓練,由物理層進行控制,是一個基于硬件的過程。初始化設備的鏈路和端口,使得設備能夠收發報文,在鏈路上正常通信。

在reset后由硬件自動啟動完整的訓練過程,并由LTSSM管理。

1 位鎖定

訓練開始,接收端時鐘和發送端時鐘不同步,接收端無法可靠采樣輸入信號的數據bit

訓練期間,接收端的時鐘和數據恢復(CDR,clock and data recovery)邏輯,通過使用數據bit流作為時鐘的參考信號,來重建發送端的時鐘,一旦從數據流中恢復了時鐘,表示接收端完成位鎖定。

2 符號鎖定

編碼8b/10b來說,下一步訓練進行符號鎖定,接收端可以接收單個bit,但是不知道10bit組成符號的邊界,收發端交換有序集TS1和TS2時候,接收端接收可識別的pattern,如COM符號,因為COM符號獨特編碼導致它容易被識別找到,識別到COM后,接收方不但定位到兩個符號的邊界,還可以定位到兩個有序集邊界(TS1 TS2以COM作為開端,可區分)。

3 塊鎖定

和符號鎖定不太一樣,沒有編碼方案的支持,但是還是需要區分塊邊界。解決方式就是在有序訓練集中包含更多的EIEOS(電氣空閑退出有序集),用于定位邊界。特定是00h和FFh交替的pattern。

4 鏈路寬度

PCIE可以使用不同的鏈路寬度,如X2和X4的端口設備連接,鏈路訓練過程中, 兩臺設備會設置為兩者能接受的最大值(交集)。

5 通道翻轉

通常設備端口在多通道情況下,從0開始依次遞增;端口對端口也是0對0,1對1這樣;

這個功能主要是簡化PCB布線,當支持通道翻轉時候,如4通道情況下,默認是0-0,1-1,...這樣的,但是某種原因,需要0-3 1-2 2-1 3-0這樣交叉進行對接,如有通道翻轉,開啟后,效果和默認一樣;這是可選項。

6? 極性翻轉

兩個設備間D+和D-是支持反接的,目的也是為了簡化PCB布局布線。任意的接收端都需要單獨檢測查分信號的連接情況,如發生極性翻轉,訓練期間自動糾正。這是必選項。

?7 數據鏈路速率

reset后,鏈路初始化和訓練狀態機總是會將速率設置為默認的2.5Gbit/s,實現向后兼容(第一代就是2.5)。若是要實現更高的速率,完成訓練后,LSTTM再重新進行一次過程更短的訓練,以改變雙方都支持的最高速率;

8 多lane信號去偏移

通道間的傳輸線長度有差異,導致多通道鏈路中同時并行傳輸的bit,到達接收端有差距,稱為信號偏斜;接收方需要延遲到達早的通道,對齊所有通道的信號時間,補償通道之間的信號傳輸快慢的差異;

6~8可以很大程度上簡化PCIE PCB設計。

二、鏈路訓練的有序集

鏈路訓練過程設計的有序集TS1和TS2

?LTSSM在輪詢、配置以及恢復狀態中,收發端都會交換TS1 TS2有序集。

symboldescription
0gen1/gen2:COM(k28.5)符號;GEN3: 1Eh->TS1有序集
1

Link Number鏈路編號:

  • 不支持GEN3端口:0~255,PAD
  • 支持GEN3的下游端口:0~31,PAD
  • 支持GEN3的上游端口:0~255,PAD
2

Lane Number鏈路編號:

  • 0~31,PAD
3

N_FTS

有序集數量:從L0s返回L0時,接收方收到快速FTS有序訓練集數量。

4

data rate identitifer(數據速率標識符)

bit 0:reserved;

bit 1:必須置1,支持2.5GT/s

bit 2: 若bit3為1,那么bit2必須為1,支持5GT/s

bit 3:支持8GT/s

bit 5:4::reserved;

bit 6:LTSSM一些特定狀態下使用,其他狀態reserved;

bit 7:speed change,只在recovery和rcvLock LTSSM狀態設置,其余狀態reserved;

5

training controller(訓練控制)

  • bit 0:Hot Reset
  • bit 1:disable Link
  • bit 2:lookback
  • bit 3:disable scramble(2.5 or 5.0;gen3 reserved)
  • bit 4:compliance receive(可選支持2.5,其余必須支持)
  • bit 7~bit 5:reserved
6

Gen1/Gen2:

  • TS1(4Ah),即10.2
  • EQ TS1,普通TS不適應

? ? ? ? ? bit0~bit2:receiver present hint

? ? ? ? ? bit3~bit6:transmitter present

? ? ? ? ? bit7:set 1

GEN3:

bit0~bit1:equalization control(僅在recovery equalization 以及loopback狀態使用)

bit2:reset EIEOS interval Count(僅在recovery equalization 以及loopback狀態使用)

bit3~bit6:transmitter preset

bit 7: use preset(僅在recovery equalization 以及loopback狀態使用)

7

GEN1/GEN2

TS1標識符:4Ah(D10.2)

GEN3:

bit0~bit5:FS(Full Swing value)

bit6~bit7:reserved

8

GEN1/GEN2

TS1(4Ah):D10.2

GEN3:

bit0~bit5:LF(Low Frequency value),需要符號6的EC=01b

bit6~bit7:reserved

9? ? ? ? ? ? ? ? ? ??

GEN1/GEN2

TS1(4Ah):D10.2

GEN3:

bit0~bit5:post-cursor coefficient

bit6: reject coefficient values

bit 7:parity(P)---該校驗碼覆蓋范圍:6 7 8 以及符號9[6:0],接收方需要重新計算校驗碼并且與之比較,通過后TS1才算有效

10~13

Gen1/Gen2:
? TS1 標識符(4Ah) ,即 D10.2
Gen3:
? TS1 標識符(4Ah)

14~15Gen1/Gen2:
? TS1 標識符(4Ah) ,即 D10.2
Gen3:
? TS1 標識符(4Ah),或者DC-balance符號

?TS2:

symboldescription
0gen1/gen2:COM(k28.5)符號;GEN3: 2Dh->TS1有序集
1

Link Number鏈路編號:

  • 不支持GEN3端口:0~255,PAD
  • 支持GEN3的下游端口:0~31,PAD
  • 支持GEN3的上游端口:0~255,PAD
2

Lane Number鏈路編號:

  • 0~31,PAD
3

N_FTS

有序集數量:從L0s返回L0時,接收方收到快速FTS有序訓練集數量。

L0s:0~255

4

data rate identitifer(數據速率標識符)

bit 0:reserved;

bit 1:必須置1,支持2.5GT/s

bit 2: 若bit3為1,那么bit2必須為1,支持5GT/s

bit 3:支持8GT/s

bit 5:4::reserved;

bit 6:LTSSM一些特定狀態下使用,其他狀態reserved;

bit 7:speed change,只在recovery和rcvLock LTSSM狀態設置,其余狀態reserved;

5

training controller(訓練控制)

  • bit 0:Hot Reset
  • bit 1:disable Link
  • bit 2:lookback
  • bit 3:disable scramble(2.5 or 5.0;gen3 reserved)
  • bit 4~bit 7:reserved
6

Gen1/Gen2:

  • TS2(4Ah),即D10.2
  • EQ TS2,普通TS2不適應

? ? ? ? ? bit0~bit2:receiver present hint

? ? ? ? ? bit3~bit6:transmitter present

? ? ? ? ? bit7:equalization command

GEN3:

bit0~bit5:reserved(僅在recovery equalization 以及loopback狀態使用)

bit6:Quiesce Guarantee(僅在recovery revrCfg狀態使用)

bit 7:request equalization(僅在recovery revrCfg狀態使用)

7~13

GEN1/GEN2

TS2(45h):D5.2

GEN3:

TS2(45h)

14~15Gen1/Gen2:
? TS1 標識符(4Ah) ,即 D10.2
Gen3:
? TS1 標識符(4Ah),或者DC-balance符號

每個字段的詳細含義:

1 symbol 0:

? GEN1/GEN2:所有有序集的首個符號都是K28.5(COM)字符。

接收方通過接收COM字符,鎖定符號,確定邊界。COM字符需要同時出現在所有通道上,因此可以用于信號去偏移。

? GEN3:有序集所在的block前面是2bit的同步頭,后面的首個符號標識有序集類型(TS1是1Eh,TS2=2Dh)。

2 Symbol 1(Link #):鏈路編號;poll狀態使用填充字符填充,其他狀態為分配的鏈路編號;

3 Symbol 2(Lane #):通道編號,poll狀態使用填充字符填充,其他狀態為分配的鏈路編號;

4 Symbol 3(N_FTS):接收方,從L0s(電源狀態)退出,返回L0,接收到快速訓練序列(FTS)數量。

? ?退出L0s狀態時,發送方至少會發送N_FTS個FTS。取決于需要FTS的數量和當前鏈路速率。

5 Symbol 4(Rate ID):設備報告所支持的數據速率,和一些給由硬件發起的帶寬改變功能信息。

? 所有信息都必須支持2.5GT/s速率,且復位后始終被訓練為2.5GT的速率,任何新設備都需要后向兼容(如支持8GT,那么必須支持5GT/s)

? Autonomous change:

? ? 若為1,任何帶寬改變請求都是基于電源管理方面原因發起的;

? ?若發起帶寬請求時候,未置1,那么代表設備在較高速率或者較寬鏈路檢測到工作不穩定的情況時候,需要改變帶寬設置(如降低速率或減小鏈路寬度)來解決這些問題。

Selectable De-emphasis

? ? 上游端口:5GT速率下期望的去加重水平設置,具體設置取決于實現。

? ? 下游端口/根節點端口:在polling.Compliance狀態中,接收該bit數據設置select_deemphasis變量。

?Link Upconfigure Capability:表示一個較寬的鏈路減少寬度后,是否有能力重新恢復原來的鏈路寬度。

Symbol 5(training control):鏈路雙方一些特殊情況交流(或者說通信)。如一次熱復位,使能回環或者關閉加擾。

Symbol6~9:

GEN2/GEN1:符號7~9表示TS1和TS2的標識符。符號6的bit7若是0,那么也表示標識符。

若bit7為1,表示當前有序集面向一個下游端口,發送的是EQ TS1或者EQ TS2,發送EQ TS意味著鏈路速率達到8GT,上游端口是需要知道當前使用的均衡參數。信息包括發送端的預設集選擇,接收預設集選擇提示。

GEN3:6~9符號提供均衡過程所需的預設集選擇數值及參數。

Symbol10~13:TS1或者TS2標識符

Symbol 14~15:

GEN1/GEN2:表示TS1或者TS2標識符;

GEN3:表示基于本通道DC均衡的需要。DC均衡指的是目前發送的0和1的數量差值。

三、數據訓練與狀態控制機

?LTSSM包含11個頂層狀態:

detect、polling、configuration、recovery、L0、L0s、 L1、 L2、Hot Reset、Loopback、DIsable;

可分五大類:

鏈路訓練狀態;

重訓練狀態;

軟件驅動電源管理狀態;

主動電源管理;

任意復位釋放后,LTSSM進入訓練類狀態,一切正常情況下,順序如下:

detect->polling->configuration->L0,進入L0狀態后,便可以正常收發報文。

進入鏈路重訓練(recovery)狀態的原因很多,如L1重恢復或者鏈路帶寬切換。在此狀態下,鏈路重復類似訓練操作的狀態,來解決鏈路問題,并最終回到L0(正常工作狀態)。

設備進入低功耗狀態下,會強制鏈路進入低功耗軟件管理鏈路狀態,如L1 L2;

如果鏈路上很長時間沒有報文需要傳輸,ASPM硬件邏輯會使得鏈路進入低功耗ASPM狀態,如L0s或者ASPM L1。

其他狀態:禁用狀態(disable)、回環狀態(loopback)、熱復位(hot reset)狀態。

檢測狀態(detect):復位釋放后進入的初始狀態,用于檢測鏈路對端設備是否存在。其他LTSSM的狀態也可轉移到detect狀態。

輪詢polling:發送端將以2.5Gbps的速率向對端發送TS1和TS2序列,使用協議最低速率以實現對早期協議的后向兼容。接收端接收到序列后,完成如下功能:

? ? 位鎖定;

? ? 符號鎖定或者塊鎖定;

? ? 必要情況下校正通道極性翻轉;

? ? 獲取通道支持的鏈路數據速率 ;

? ?測試條件下,發起兼容性測試(主要是快速驗證鏈路的電壓 BER 時序以及其他指標都在鏈路可容范圍內);

配置狀態(configuration):上游或者下游器件,按照2.5速率,交換TS1和TS2序列,實現如下目標:

協商鏈路寬度;

為各個通道指派編號;

檢測通道是否順序或者極性交換,在本地恢復這些交換;

補償各個通道之間的時序偏斜;

這個狀態可以關閉加擾,進入disable或者loopback狀態,還會記錄TS1和TS2序列交換時候的N_FTS,即L0s狀態進入L0狀態所需的FTS序列數量。

L0狀態:L0是一個鏈路全功能正常的狀態,鏈路上可以正常進行TLP DLLP和有序集的交換。L0狀態下,鏈路速率可以比2.5GT/s更高,但只能在進入recovery狀態,經歷一次速率切換后,才能達到更高的速率。

恢復狀態recovery:當鏈路需要重訓練時,進入recovery狀態。可能原因:L0狀態中發生了錯誤、從L1低功耗狀態恢復到L0狀態、從L0s狀態恢復到L0時,無法通過FTS序列重新完成訓練。該狀態下會重新進行bit和字符/塊鎖定,方法是和polling時候一樣,一般來說,此次更快。

L0s狀態:L0s是一個由硬件控制的ASPM低功耗狀態,L0s狀態的目標是在節約一定功耗的同時,能夠快速地恢復到L0狀態。進入方式:L0狀態下,鏈路一方發送EIOS。退出L0s:會通過FTS序列重新完成bit和字符/塊鎖定。

L1狀態:L1狀態能夠比L0s狀態降低更多的功耗,代價在于需要更長時間恢復到L0狀態。進入L1狀態需要鏈路雙方進行協商,并一起進入。進入L1方式:

其一,ASPM控制下,自動進入L1。如上游端口沒有DLLP或者TLP包時候,硬件自動與下游端口協商,鏈路一起轉向L1狀態。如果下游同意,那么鏈路進入L1狀態,否則上游端口將單方面進入L0s狀態。

其二,功耗管理軟件命令設備進入低功耗狀態。上游端口通知下游端口,下游端口響應通知,鏈路進入L1。

對比L0s和L1:

L1需要雙方協商,鏈路狀態才能到達L1,但是L0s可以單方面進入;

L0s快速恢復,L1恢復相對較慢;

L1功耗更低;

L2狀態:更顯著功耗節約狀態;

回環狀態loopback:測試狀態;目的是驗證鏈路完整性。

禁用狀態(disable):鏈路配置為禁用狀態;發送邏輯為電氣空閑,接收邏輯為低阻狀態。

熱復位狀態(hot reset):橋控制寄存器配置次級總線復位bit,復位鏈路。

四、詳細次狀態

(一)detect

?

(二)polling

?(三)configuration

本狀態目標主要是弄清楚設備端口(port)和各個通道(lane)的連接情況,以及為連接的通道分配編號。

端口在此狀態下分面向上游端口和面向下游端口,這是兩個不同的端口。配置過程也會根據上游端口和下游端口行為進行討論。

DSP(downstream Port)端口在鏈路中是扮演“領導者”,USP(upstream port)端口是跟隨者。

configuration狀態訓練過程分析

具體分析見下圖:?

(四)L0

L0狀態介紹可以參考此處。?

?總結L0狀態:

鏈路的全功能正常工作狀態。實際使用時候,判斷鏈路正常與否就是看進入L0狀態。L0進入L0s和L1、L2,進入低功耗狀態。L0若進入recovery,可能是切換速率或者鏈路寬度(lane)。

(五)recovery

比較常見進入recovery狀態場景:

1 切換速率

2 切換鏈路寬度

3 鏈路需要重新EQ

具體可以參考此文,介紹比較詳細。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/15223.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/15223.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/15223.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Vue】diff 算法

diff的時機 當組件創建時,以及依賴的屬性或數據變化時,會運行一個函數,該函數會做兩件事: 運行_render生成一棵新的虛擬dom樹(vnode tree),返回根節點運行_update,傳入虛擬dom樹的根節點,對新舊…

typedef定義結構體包含函數指針的巨坑

起因 嘗試在c中模仿c的類,把成員函數放置到結構體中。顯然只能放置一個結構體指針。 于是準備這么做。 錯誤示范 typedef struct {int id;void(*show)(Person p); }Person;void showPerson(Person p){ //.... }void init(Person * p){p->show showPerson; …

犀牛8 for Mac/Win:重塑三維建模的新標桿

在數字創意的浪潮中,犀牛8(Rhinoceros 8)作為一款卓越的三維建模軟件,以其強大的功能和出色的性能,在Mac和Windows平臺上都贏得了廣大設計師和工程師的青睞。 犀牛8不僅繼承了前代產品的優秀基因,更在細節…

基于python+Django+opencv的疲勞檢測系統設計與實現

博主介紹: 大家好,本人精通Java、Python、C#、C、C編程語言,同時也熟練掌握微信小程序、Php和Android等技術,能夠為大家提供全方位的技術支持和交流。 我有豐富的成品Java、Python、C#畢設項目經驗,能夠為學生提供各類…

Nginx的集群負載均衡(nginx構建tomcat集群案例)

一 .Nginx的集群負載均衡 1.nginx 集群負載均衡示意圖 2.四層負載均衡和7層負載均衡 LVS 四層負載均衡(常用); Haproxy四層負載均衡;Nginx 四層負載均衡; Haproxy七層負載均衡;Nginx 七層負載均衡(常用); 3.nginx構建tomcat集群 步驟1:安裝tomcat 步驟2:nginx配置tom…

夸夸生肖屬鼠的女性朋友

屬鼠人一生的命運受到許多因素的影響,包括性格、家庭、教育、環境等。屬鼠人性格外向、求知欲強、善解人意、善于結交各種各樣的朋友,有豐富的人脈,容易得到他人的幫助和支持。 屬鼠的人聰明、機智,他們善于觀察,富有…

MySQL(七) 表的內連和外連

表的連接分為內連和外連 9.1 內連接 內連接實際上就是利用where子句對兩種表形成的笛卡兒積進行篩選,我們前面學習的查詢都是內連接,也是在開發過程中使用的最多的連接查詢。 語法: select 字段 from 表1 inner join 表2 on 連接條件 and …

【代碼隨想錄】面試常考類型之動態規劃基礎題目

前言 更詳細的在大佬的代碼隨想錄 (programmercarl.com) 本系列僅是簡潔版筆記,為了之后方便觀看 做題步驟 含義公式初始化順序檢查 確定dp數組以及下標的含義遞推公式dp數組如何初始化遍歷順序打印dp數組(看哪里有問題) 斐波那契數 …

MFC:CFileFind類使用方法介紹

這是一個介紹MFC中CFileFind類的小程序。編寫這個程序使用的編輯軟件是VS2022&#xff0c;基于C空項目。在C空項目下要調用MFC類需要&#xff1a;首先&#xff0c;頭文件要包含<afx.h>&#xff0c;這個頭文件包含了絕大部分使用MFC所需頭文件&#xff1b;其次&#xff0c…

在線改圖片怎么做更簡單?快速修改圖片尺寸的方法

現在一般拍攝出的圖片尺寸都會比較大&#xff0c;想要上傳大網上的一些平臺展示時&#xff0c;經常會受到平臺的限制&#xff0c;無法將圖片正常上傳到平臺&#xff0c;那么如何將圖片尺寸快速調整呢&#xff1f;比較簡單的一種方式&#xff0c;可以通過在線改圖片的工具來實現…

一個開源的個人主頁模板,可以通過 Github Actions 來進行自動構建。

無名の主頁 簡單的小主頁&#xff0c;原來的看夠了&#xff0c;重新弄了一個 主頁的 Logo 字體已經過壓縮&#xff0c;若用本站 Logo 以外的字母會變回默認字體&#xff0c;這里是 完整字體&#xff0c;若無法下載&#xff0c;可將字體目錄下的 Pacifico-Regular-all.ttf 進行替…

Linux程序開發(十一):進程與進程間通信設計之趣味貓咪抓老鼠游戲

Tips&#xff1a;"分享是快樂的源泉&#x1f4a7;&#xff0c;在我的博客里&#xff0c;不僅有知識的海洋&#x1f30a;&#xff0c;還有滿滿的正能量加持&#x1f4aa;&#xff0c;快來和我一起分享這份快樂吧&#x1f60a;&#xff01; 喜歡我的博客的話&#xff0c;記得…

他用AI,抄襲了我的AI作品

《大話西游》里面有一句經典臺詞&#xff1a;每個人都有一個媽&#xff0c;但是“你媽就一定是你媽嗎&#xff1f;” 用AI創作的藝術作品&#xff0c;也走進類似的困境&#xff1a;如何證明你用AI生成的作品&#xff0c;就是你的作品&#xff1f; 近日&#xff0c;騰訊科技獨…

Google手機連接wifi后提示“無法連接互聯網“解決方法

1.原因分析 谷歌手機聯網前會先訪問谷歌的服務器:http://clients3.google.com/generate_204來探測網絡是否連通&#xff0c;由于國內網絡防火墻的原因訪問不了&#xff0c;所以就提示"無網絡連接"。 2.解決方法 可以通過adb命令修改驗證網絡是否連通的服務器地址&…

SpringCloudAlibaba:6.3SpringBoot接入RocketMQ

依賴 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 htt…

【C++提高編程-04】----C++之Vector容器實戰

&#x1f3a9; 歡迎來到技術探索的奇幻世界&#x1f468;?&#x1f4bb; &#x1f4dc; 個人主頁&#xff1a;一倫明悅-CSDN博客 ?&#x1f3fb; 作者簡介&#xff1a; C軟件開發、Python機器學習愛好者 &#x1f5e3;? 互動與支持&#xff1a;&#x1f4ac;評論 &…

STM32+CubeMX移植SPI協議驅動W25Q16FLash存儲器

STM32CubeMX移植SPI協議驅動W25Q16FLash存儲器 SPI簡介拓撲結構時鐘相位&#xff08;CPHA&#xff09;和時鐘極性&#xff08; CPOL&#xff09; W25Q16簡介什么是Flash&#xff0c;有什么特點&#xff1f;W25Q16內部塊、扇區、頁的劃分引腳定義通訊方式控制指令原理圖 CubeMX配…

iBarcoder for Mac v3.15.1中文激活版:讓條形碼生成變得如此簡單

在現代社會&#xff0c;條形碼無處不在&#xff0c;從超市商品到物流包裹&#xff0c;都離不開它的身影。iBarcoder for Mac作為一款簡單易用的條形碼生成軟件&#xff0c;讓條形碼的生成變得如此簡單。 iBarcoder for Mac v3.15.1中文激活版下載 無論你是需要為商品添加條形碼…

Scrapy框架簡單介紹及Scrapy項目編寫詳細步驟

引言 Scrapy是一個用Python編寫的開源、功能強大的網絡爬蟲框架&#xff0c;專為網頁抓取和數據提取設計。它允許開發者高效地從網站上抓取所需的數據&#xff0c;并通過一系列可擴展和可配置的組件來處理這些數據。Scrapy框架的核心組成部分包括&#xff1a; Scrapy Engine&…

aws glue配置讀取本地kafka數據源

創建連接時填寫本地私有ip地址&#xff0c;選擇網絡配置 配置任務選擇kafka作為數據源 但是執行任務時日志顯示連接失敗 文檔提到只能用加密通信 如果您希望與 Kafka 數據源建立安全連接&#xff0c;請選擇 Require SSL connection (需要 SSL 連接)&#xff0c;并在 Kafka priv…