USB 3.0 LTSSM 狀態機

USB2.0在電源供應后,通過Pull Up D-來決定枚舉LS,Pull Up D+有一個USB高速握手過程,來決定HS FS。USB3.0則會通過鏈路訓練(Link Training),來準備USB3.0通信。

每當我們插上USB線的時候,對于3.0的5G頻率來說,USB線全程的狀態需要參數調整,在long channel和short channel的問題上可能也有不同,鏈路五花八門,我們需要磨練出來適合自己鏈路的參數

今天介紹一下USB3.0基于Upstream Facing Port(USB設備)Downstream Facing Port(USB主機)使用LTSSM(Link Training and Status State Machine) 進行鏈路訓練過程。

USB 3.0 協議棧

我們可以看到USB實際主要是3層通信模型,協議層,鏈路層,物理層。鏈路訓練主要是使用鏈路層定義的相關包進行協議通信的過程。

LTSSM

基于鏈路層,物理層提供了很多處理單元來輪轉鏈路訓練狀態

同時我們可以看到LTSSM的12種狀態。LTSSM有12個高級狀態,用于鏈路訓練,再訓練,鏈路級錯誤處理,鏈路電源管理,鏈路測試管理。

操作狀態:U0,U1,U2,U3。

鏈路初始化和訓練狀態:Rx.Detect、Polling、Hot Reset、Recoverry。

其它狀態:SS.Inactive、SS.Disabled。

我們重點關注Rx.Detect和Polling狀態機,Link Training主要使用這兩個狀態。

USB 3.0的LTSSM用于在USB 3.0設備間建立通信鏈接前進行鏈路訓練。鏈路訓練的目標是確保一個可靠的5 Gb/s信號。鏈路訓練將適應實際鏈路信號條件的主要負擔放在了每個鏈路伙伴的接收物理層(PHY)邏輯上

鏈路訓練的主要任務包括:

接收均衡(Receiver Equalization)由于USB 3.0的高速率,傳輸路徑上的高頻損耗較大,因此接收端需要進行均衡以補償高頻損耗,保證信號完整性。訓練過程中,發送端會發送特定的比特流模式(pattern),接收端根據這些模式調整均衡參數。接收機均衡邏輯的設置在鏈路訓練期間分兩步完成。

第一步:發射機首先發送 10-50 MHz 的 Polling.LFPS 脈沖串,提醒鏈路伙伴的 LTSSM 開始訓練,并允許接收機設置低頻參數(也被寬泛地稱為直流參數)。由于頻率較低,無論信道長度如何,接收機都應能恢復有效的 LFPS 方波信號。

第二步:接下來,發射機發送 5 Gb/s 超高速訓練序列(TSEQ)有序集,讓接收機建立高頻均衡器參數。為了提供多種硬件均衡解決方案,發射機需要重復 32 個符號的 TSEQ 有序集 65,536 次耗費大約 4毫秒的鏈路訓練時間,約 4mS 的鏈路訓練時間。

時鐘恢復(Clock Recovery)USB 3.0的時鐘是內嵌在數據流中的,為了保證接收端可以從數據流中恢復時鐘,采用了8b/10b編碼。在發送訓練序列(TSEQ)時,接收端會從數據流中恢復時鐘。時鐘恢復使用均衡期間接收到的 TSEQ 有序集。之后,在退出 U1、U2 和 U3 電源管理等狀態時,使用 TS1/TS2 有序集進行時鐘恢復。

數據恢復(Data Recovery)使用恢復的時鐘對數據進行采樣,將每個比特的數據恢復出來,并送入串并轉換模塊。(Serial ToParallel)

串并轉換和字符鎖定(Serial to Parallel Conversion and Symbol Lock)數據恢復后,需要將比特流轉換為10比特一組的數據符號,并找到起始點以正確解讀數據。

極性翻轉(Differential Polarity Inversion)高速鏈路使用差分信號,極性翻轉是為了確保信號的正確傳輸。

彈性緩沖區初始化(Elastic Buffer Initialization)彈性緩沖區作為鏈路時鐘和本地時鐘的中間過渡區域,初始化過程主要是將數據符號搬運到緩沖區中,并確保緩沖區不會出現溢出或欠載。

LTSSM的握手信號

LTSSM使用下面3種信號來握手。

LPFS

有6個LFPS信號,其中5個用于LTSSM狀態轉換(差異是Burst不一樣),如上圖12-2所示。

Ordered Sets

在鏈路訓練過程中,TSEQ、TS1和TS2有序集以兩種方式使用,如上圖12-3。首先,它們使接收機物理層能夠接收連接到鏈路合作伙伴的超高速發射機的電氣接口。這包括接收機均衡化、時鐘和串行數據恢復、彈性緩沖區管理等。其次,隨著鏈路訓練的進行,這些有序集的交換被用來推進LTSSM狀態,直到進入U0鏈路狀態。

Link Conmmands

USB 3.0定義了一組電源管理鏈路命令如上圖12-4,在請求鏈路伙伴從U0到U1、U2、U3或U3時使用。使用鏈路命令代替TS1/TS2有序集有兩個優點,都與速度有關。首先,鏈接命令的長度為8字節(TS1/TS2s的長度為16字節)。其次,使用鏈接命令節省了額外的時間,因為它避免了通過恢復轉換(在使用TS2有序集時根據需要)。

注:LGO_Ux鏈路命令用于從U0過渡到電源管理狀態U1-U3,從鏈路狀態U1-U3退出需要一個LFPS握手以退出電氣空閑,并通過恢復進行過渡以返回到U0。

Link Training輪轉LTSSM

下面將從鏈路從初始狀態過渡到允許 5 Gb/s 超高速數據包傳輸的 U0 運行狀態所需的事件序列來描述鏈路訓練。如上圖7-13描述了12個狀態機輪轉條件。整個鏈路訓練過程由LTSSM管理,涉及到多個狀態和子狀態,主要是從RX.Detect到Polling.Idle等,最終進入USB 3.0的正常工作狀態U0,這個過程確保了USB 3.0設備間的可靠通信和高效數據傳輸。

鏈路初始化和訓練狀態Rx.Detect、Polling、HotReset、Recoverry

Rx.Detect

如上圖12-9,鏈路訓練的初始狀態,設備在電源上電復位后開始處于Rx.Detect狀態。也可以從其他LTSSM狀態通過特定的超時或熱復位轉移到Rx.Detect狀態。在LTSSM的Rx.Detect狀態下,每個SS(SuperSpeed)設備會定期嘗試檢測鏈路伙伴,方法通過檢查遠端接收器的低阻抗端接來判斷有SS設備接入。

Rx.Detect.Reset

Rx.Detect.Reset子狀態中的要求

在Rx.Detect.Reset子狀態中,設備正在等待電源開啟重置初始化完成,然后才能進行鏈路訓練。以下要求適用于LTSSM處于Rx.Detect.Reset狀態時。請注意,對于面向下游(DS)的端口和面向上游(US)的端口,要求略有不同。

? 如果進入此子狀態是由于電源開啟重置,那么上游和下游端口將完成所需的內部初始化。

? 如果進入此子狀態是由于溫重啟,則面向下游的端口將繼續驅動溫重啟LFPS信號80-100毫秒(tReset)。

? 如果進入此子狀態是由于溫重啟,則面向上游的端口將保持在此子狀態,直到溫重啟信號結束。

退出Rx.Detect.Reset子狀態的規定

? 如果進入此子狀態是由于電源開啟重置,那么當上游和下游端口完成所需的內部初始化時,它們將進入Rx.Detect.Active子狀態(無需握手)。

? 如果進入此子狀態是由于Warm Reset,則面向下游的端口在完成80-100毫秒的溫重啟LFPS信號后,將過渡到Rx.Detect.Active子狀態(無需握手)。

? 如果進入此子狀態是由于Warm Reset,則面向上游的端口將在溫重啟LFPS信號結束時過渡到Rx.Detect.Active子狀態(無需握手)。

Rx.Detect.Active

在Rx.Detect.Active子狀態中的要求

這是 Rx.Detect 鏈路訓練狀態的第二個子狀態。此狀態的目的是在嘗試鏈路訓練之前,為連接設備提供一個檢測是否存在超高速鏈路伙伴的機會。在Rx.Detect.Active子狀態中,設備嘗試確認SuperSpeed鏈路伙伴的存在。該方案涉及每個發射機通過電氣檢測遠端接收器的端接阻抗。以下要求適用于LTSSM處于Rx.Detect.Active狀態時。請注意,對于面向下游(DS)的端口和面向上游(US)的端口,要求略有不同。

? 所有端口的發射機都嘗試感知遠端接收器的端接。

? 面向上游的端口需要計數檢測嘗試,并在八次嘗試后過渡到SS.Disabled狀態。如果發生這種情況,設備將“故障轉移”并嘗試以USB 2.0速度建立連接。可以參考上圖9-1。

Rx.Detect.Active子狀態的退出規則

在Rx.Detect.Active子狀態中有三種可能的退出狀態。上游(US)和下游(DS)端口都遵循的退出規則:

? 如果檢測到遠端低阻抗接收器端接(RRX-DC),端口將過渡到Polling狀態。

僅下游(DS)端口遵循的退出規則:

? 當被指示時,面向下游的端口將過渡到SS.Disabled狀態。

? 如果沒有檢測到遠端低阻抗(RRX-DC),面向下游的端口將過渡到Rx.Detect.Quiet狀態。

僅上游(US)端口遵循的退出規則:

? 如果沒有檢測到遠端低阻抗(RRX-DC),面向上游的集線器端口將過渡到Rx.Detect.Quiet狀態。

? 如果沒有檢測到遠端低阻抗(RRX-DC),并且檢測嘗試次數少于八次,面向上游的外圍設備端口將過渡到Rx.Detect.Quiet狀態。

? 如果沒有檢測到遠端低阻抗(RRX-DC),并且檢測嘗試次數達到八次,面向上游的外圍設備端口將過渡到SS.Disabled狀態。規范指出,八次嘗試規則使設備能夠在大約80毫秒內“故障轉移”到USB 2.0速度。

USB3.0終端電阻檢測原理

如上圖20-8,20-9在USB3.0中Device連接到Host等價于連接了一個R_Term,右圖為不接Device的等效電路,此時由于R_term不存在,故電路模型實際為一RC串聯電路,可簡單計算出時間因子:

T=R_Detect*C_Parasitic

左圖為接上Device的等效電路,此時R_term存在,得出此時時間因子:

T=(R_Detect+R_Term)*(C_AC+C_Parasitic)

顯然后者遠遠大于前者(Tcharge就是這個參數),故有無設備可根據充放電時間進行判斷。計算出另外R_Term是否滿足協議中規定的RTX-DC(18-30ohm)的要求,判斷是否有終端電阻接入,另外接入R_term后,會對R_Detect產生分壓的作用,電壓會有所下降。

Rx.Detect.Quiet

在Rx.Detect.Quiet子狀態中的要求

在Rx.Detect.Quiet子狀態中,設備嘗試在連續嘗試檢測鏈路伙伴存在之間節省電源。這在USB動態連接/移除環境中非常有用。設備在Rx.Detect狀態之間每12毫秒從Rx.Detect.Active子狀態轉換到Rx.Detect.Quiet子狀態,直到檢測到鏈路伙伴。在Rx.Detect.Quiet期間,發射機關閉檢測邏輯,并等待定時器到期,然后再次嘗試。以下要求適用于LTSSM處于Rx.Detect.Quiet狀態時的上游和下游端口。

? 禁用遠端接收器端接檢測

? 在進入子狀態時啟動一個12毫秒的定時器,tRxDetectQuietTimeout。

Rx.Detect.Quiet子狀態的退出規則

在Rx.Detect.Quiet子狀態中有兩種可能的退出狀態。退出規則如下:

? 每當12毫秒定時器到期時,所有端口都會過渡到Rx.Detect.Active狀態。

? 當被指示時,面向下游的端口將過渡到SS.Disabled狀態。

Polling

Polling是鏈路訓練的第二步,可使設備在實際鏈路條件下調整其超高速發射機和接收機,以適應 5 Gb/s的運行。交換 LFPS 脈沖串和 TSEQ、TS1、TS2 有序集,可實現接收器均衡、時鐘和數據恢復、差分信號反轉等功能。

Polling.LFPS

在Polling.LFPS子狀態中的要求

一旦檢測到鏈路伙伴處于 Rx.Detect.Active,兩個(上游和下游)端口都將進入輪詢狀態以訓練鏈路。在Polling.LFPS子狀態中,設備使用簡單的10-50MHz LFPS方波建立接收器PHY直流工作點。Polling.LFPS的交換還啟動了握手過程,這將攜帶它們完成剩余的鏈路訓練。以下要求適用于LTSSMs處于Polling.LFPS子狀態時的上游和下游端口。

? 進入Polling.LFPS子狀態時,所有端口必須啟用LFPS接收器檢測。

? 一旦接收器檢測到Polling.LFPS信號,它必須在80微秒內建立直流工作點。接收器可以選擇也使用Polling.LFPS開始均衡器訓練。

? 所有端口在進入Polling.LFPS子狀態時啟動一個360毫秒的定時器(tPollingLFPSTimeout)。

Polling.LFPS子狀態的退出規則

上游(US)和下游(DS)端口都遵循的規則:

? 端口在以下條件滿足時過渡到Polling.RxEQ狀態:

1)至少發送了16個Polling.LFPS脈沖;

2)接收到了兩個連續的Polling/LFPS脈沖;

3)在從鏈路伙伴接收到至少一個Polling.LFPS脈沖后發送了四個連續的Polling.LFPS脈沖。

polling_lfps_sent_count*(發送的LFPS突發數量)[16]

polling_lfps_received_count* (收到LFPS數量) [2]

polling_lfps_sent_after_received_count*(從鏈路伙伴接收到第一個 LFPS 后發送的 LFPS 突發數)[4]

? 如果360毫秒的Polling.LFPS定時器(tPollingLFPSTimeout)到期,并且滿足另外兩個條件,則端口過渡Compliance Mode狀態:

1)自上次電源開啟重置以來,端口從未完成Polling.LPFS;

2)成功完成Polling.LFPS握手以過渡到Polling.RxEQ尚未發生。

僅下游(DS)端口遵循的退出規則:

? 當被指示時,面向下游的端口將過渡到SS.Disabled狀態。

? 當被指示發出溫重啟時,面向下游的端口將過渡到Rx.Detect狀態。

? 如果360毫秒的Polling.LFPS定時器(tPollingLFPSTimeout)到期,并且自電源開啟重置以來鏈路至少訓練過一次,則面向下游的端口將過渡到Rx.Detect狀態。

Polling.RxEq

在Polling.RxEQ子狀態中的要求

在Polling.RxEQ子狀態中,設備在SuperSpeed鏈路上交換第一次5 Gb/s的流量。發送和接收65,536個TSEQ有序集(每個TSEQ有序集32字節),允許接收器PHY完成均衡器訓練。以下要求適用于LTSSMs處于Polling.RxEQ子狀態時的上游和下游端口。

? 如果檢測到線路極性反轉,每個接收器必須進行糾正。

? 端口傳輸65,536個TSEQ有序集。

? 接收器基于接收到的TSEQ有序集訓練均衡器邏輯。

Polling.RxEQ子狀態的退出規則

上游(US)和下游(DS)端口都遵循的規則:

? 在接收器均衡完成并且向鏈路伙伴發送了65,536個TSEQ有序集后,端口自動過渡到Polling.Active狀態。僅下游(DS)端口遵循的退出規則:

? 當被指示時,面向下游的端口將過渡到SS.Disabled狀態。

? 當被指示發出溫重啟時,面向下游的端口將過渡到Rx.Detect狀態。

僅上游(US)端口遵循的退出規則:

? 當檢測到Warm Reset,面向上游的端口將過渡到Rx.Detect狀態。

Polling.Active

在Polling.Active子狀態中的要求

在Polling.Active子狀態中,接收器均衡已完成,設備繼續進行鏈路訓練的剩余部分。在此子狀態中使用TS1有序集,并且可能會看到TS2有序集,因為一個設備可能在其鏈路伙伴退出此子狀態之前進入下一個子狀態,Polling.Configuration。請注意,在Polling.Active狀態下,面向下游(DS)的端口和面向上游(US)的端口的要求略有不同。

? 端口在進入時啟動一個12毫秒的定時器(tPolling.ActiveTimeout)。

? 端口向鏈路伙伴傳輸TS1有序集。

? 接收器完成任何剩余的訓練任務,然后準備過渡到Polling.Configuration子狀態。

Polling.Active子狀態的退出規則

在Polling.Active子狀態中有三種可能的退出狀態。

上游(US)和下游(DS)端口都遵循的退出規則:

? 當接收到八個連續且相同的TS1或TS2有序集時,端口過渡到Polling.Configuration子狀態。僅下游(DS)端口遵循的退出規則:

? 當被指示時,面向下游的端口將過渡到SS.Disabled狀態。

? 當被指示發出溫重啟時,面向下游的端口將過渡到Rx.Detect狀態。

? 如果12毫秒的定時器(tPollingActiveTimeout)到期且未滿足過渡到Polling.Configuration的要求,面向下游的端口將過渡到Rx.Detect狀態。

僅上游(US)端口遵循的退出規則:

? 如果12毫秒的定時器(tPollingActiveTimeout)到期且未滿足過渡到Polling.Configuration的要求,面向上游的集線器端口將過渡到Rx.Detect狀態。

? 如果12毫秒的定時器(tPollingActiveTimeout)到期且未滿足過渡到Polling.Configuration的要求,面向上游的外圍設備端口將過渡到SS.Disabled狀態。

? 當檢測到溫重啟時,面向上游的端口將過渡到Rx.Detect狀態。

Polling.Configuration

在Polling.Configuration子狀態中的要求

在Polling.Configuration子狀態中,鏈路伙伴信號表明它們已完成鏈路訓練。此外,在此子狀態中提供了設置TS2重置、環回或禁用擾碼位的機會。如果設置了這些位中的一個,那么過渡到U0以外的LTSSM狀態是可能的。請注意,在Polling.Configuration狀態下,面向下游(DS)的端口和面向上游(US)的端口的要求略有不同。

? 端口在進入時啟動一個12毫秒的定時器(tPollingConfigurationTimeout)。

? 端口向鏈路伙伴傳輸TS2有序集。端口還可以選擇在TS2有序集的符號5中設置(HOt)Reset。注意:TS2重置位僅在響應從下游面向端口收到的TS2中檢測到重置位設置時,由上游面向端口發送的TS2中設置。

? 端口還可以選擇在TS2有序集的符號5中設置環回或禁用擾碼位。Polling.Configuration子狀態的退出規則

在Polling.Configuration子狀態中有三種可能的退出狀態。

? 當接收到八個連續且相同的TS2有序集并且發送了至少8個連續且相同的TS2后發送了16個TS2有序集時,所有端口過渡到Polling.Idle子狀態。

僅下游(DS)端口遵循的退出規則:

? 當被指示時,面向下游的端口將過渡到SS.Disabled狀態。

? 當被指示發出溫重啟時,面向下游的端口將過渡到Rx.Detect狀態。

? 如果12毫秒的定時器(tPollingConfigurationTimeout)到期且未滿足過渡到Polling.Idle的要求,面向下游的端口將過渡到Rx.Detect狀態。

僅上游(US)端口遵循的退出規則:

? 如果12毫秒的定時器(tPollingConfigurationTimeout)到期且未滿足過渡到Polling.Idle的要求,面向上游的集線器端口將過渡到Rx.Detect狀態。

? 如果12毫秒的定時器(tPollingConfigurationTimeout)到期且未滿足過渡到Polling.Idle的要求,面向上游的外圍設備端口將過渡到SS.Disabled狀態。

? 如果檢測到Warm Reset,面向上游的端口將過渡到Rx.Detect狀態。

Polling.Idle

在Polling.Idle子狀態中的要求

在Polling.Idle子狀態中,鏈路伙伴解碼在Polling.Configuration子狀態中接收到的TS2,并確定下一個LTSSM狀態應該是U0、環回還是熱重啟。在Polling.Idle狀態下,面向下游(DS)的端口和面向上游(US)的端口的要求略有不同。

? 端口在進入時啟動一個2毫秒的定時器(tPollingIdleTimeout)。

? 端口解碼在Polling.Configuration子狀態中早些時候接收到的TS2。

? 面向下游的端口重置鏈路錯誤計數(LEC)。

? 面向上游的端口重置端口配置信息。

? 端口啟用擾碼,除非在接收到的TS2中明確禁用。

? 如果下一個LTSSM狀態是U0,端口開始傳輸(邏輯)空閑符號。

? 端口準備接收來自鏈路伙伴的Header Sequence Number和Flow Control Credit廣告。

Polling.Idle子狀態的退出規則

在Polling.Idle子狀態中有五種可能的退出狀態。上游(US)和下游(DS)端口都遵循的退出規則:

? 當被指示并且設備能夠作為環回主設備時,端口過渡到環回狀態。

? 當在Polling.Configuration期間接收到帶有環回位設置的TS2有序集,并且設備能夠作為環回從設備時,端口過渡到環回狀態。? 如果TS2有序集中沒有設置環回和重置位,并且滿足以下兩個條件時,端口過渡到U0狀態:

1)接收了八個連續的空閑符號;

2)在從鏈路伙伴接收至少一個空閑符號后發送了十六個連續的空閑符號。

僅下游(DS)端口遵循的退出規則:

? 當被指示時,面向下游的端口將過渡到SS.Disabled狀態。

? 當被指示發出溫重啟時,面向下游的端口將過渡到Rx.Detect狀態。

? 當被指示發出熱重啟時,面向下游的端口將過渡到HOT Reset狀態。

? 如果2毫秒的定時器(tPollingIdleTimeout)到期且未滿足過渡到U0的要求,面向下游的端口將過渡到Rx.Detect狀態。

僅上游(US)端口遵循的退出規則:

? 如果2毫秒的定時器(tPollingIdleTimeout)到期且未滿足過渡到U0的要求,面向上游的集線器端口將過渡到Rx.Detect狀態。

? 如果2毫秒的定時器(tPollingIdleTimeout)到期且未滿足過渡到U0的要求,面向上游的外圍設備端口將過渡到SS.Disabled狀態。

? 當檢測到溫重啟時,面向上游的端口將過渡到Rx.Detect狀態。

通過鏈路命令進入U0(如分析儀Enter U0,后續就開始了設備枚舉)就算是鏈路訓練完成了。

Recovery

恢復提供低延遲的重訓練和返回U0狀態,適用于那些已經完成完整鏈路訓練的鏈路。這個狀態在電源管理退出、由于不可恢復的鏈路錯誤等原因時進入。由于接收器均衡和其他參數被保留,恢復是一個低延遲的事件。

注意其中Recovery.Active Recovery.Configuration Recovery.Idle不作詳細描述

Hot Reset

Hot Reset提供了一種低延遲的重置方法,適用于那些之前已經完成完整鏈路訓練的鏈路。熱重置避免了長時間的熱重置和過渡到Rx.Detect以進行完整鏈路訓練的過程,而是假設之前建立的某些物理層(PHY)參數仍然有效。如果熱重置成功,鏈路伙伴將使用TS2有序集進行握手,初始化內部邏輯,并快速返回U0狀態。熱重置始終由下游面向端口在軟件控制下發起。在熱重置期間,所有端口將保持正常的發射器和接收器電氣規格,包括低阻抗接收器端接(RRX-DC)。下游面向端口還將重置鏈路錯誤計數(LEC)、電源管理定時器和U1/U2不活動定時器。

注意:其中 Hot Reset.Active Hot Reset.Exit不作描述。

U0

U0是SuperSpeed連接的活躍、功能狀態。在這個狀態下,數據包和鏈路命令的發送和接收不會因為鏈路電源管理而產生延遲。在沒有其他流量的情況下,NOP(邏輯空閑)符號和時鐘補償SKP有序集使得接收器能夠與發射器保持同步。

在U0狀態下的要求

當LTSSM處于U0狀態時,以下要求適用。請注意,對于面向下游(DS)的端口和面向上游(US)的端口,要求略有不同。

? 端口必須遵守所有U0發射器和接收器的電氣規格,包括低阻抗接收器端接,RRX-DC。

? 啟動1毫秒的tU0RecoveryTimeout定時器,以跟蹤連續入鏈路命令之間的間隔。每當接收到鏈路命令時,定時器都會重新啟動。

? 在進入U0時,也啟動一個10微秒的tU0LTimeout定時器。這個定時器跟蹤連續發送給鏈路伙伴的鏈路命令之間的總線空閑間隔。在發送第一個出鏈路命令的符號時重置定時器,并在發送最后一個符號時開始倒數,鏈路進入邏輯空閑狀態。

? 如果沒有其他鏈路流量,并且10微秒的tU0LTimeout定時器(見前述項目)到期,面向下游的端口將發送一個LDN鏈路命令;面向上游的端口將發送一個LUP鏈路命令。這些鏈路命令重新確認鏈路仍在正常工作,合作伙伴仍然處于U0狀態。

U0狀態的退出規則

從U0狀態有七種可能的退出方式(見第12-5頁的圖)。

上游(US)和下游(DS)端口都遵循的退出規則:

? 如果LGO_U1握手成功完成,端口將過渡到U1。

? 如果LGO_U2握手成功完成,端口將過渡到U2。

? 如果LGO_U3握手成功完成,端口將過渡到U3。注意,只有面向下游的端口,在軟件控制下,才能發起到U3(掛起)的過渡。

? 如果被指示,端口將過渡到恢復狀態。

? 如果檢測到TS1有序集,端口將過渡到恢復狀態。

? 對于與頭部數據包流控制和錯誤處理相關的各種錯誤條件,端口將根據規范中的定義過渡到恢復狀態。這包括PENDING_HP_TIMER、CREDIT_HP_TIMER超時,重播計數器溢出等。

? 當PENDING_HP_TIMER超時第四次時,端口將過渡到SS.Inactive。

僅下游(DS)端口遵循的退出規則:

? 當被指示時,面向下游的端口將過渡到SS.Inactive。

? 如果U3入口握手失敗三次,面向下游的端口將過渡到SS.Inactive。

? 當被指示時,面向下游的端口將過渡到SS.Disabled。

? 當被指示對鏈路發出溫重啟時,面向下游的端口將過渡到Rx.Detect狀態。

? 如果tU0Recovery定時器到期,表示在1毫秒內沒有收到數據包或鏈路命令(包括LUP),面向下游的端口將過渡到恢復狀態。

僅上游(US)端口遵循的退出規則:

? 自行供電設備的上游面向端口當VBUS關閉時,將過渡到SS.Disabled。

? 當檢測到溫重啟時,上游面向端口將過渡到Rx.Detect。

? 當被指示時,上游面向端口將過渡到SS.Disabled。這發生在進入U0狀態后,如果在規定的時間內沒有收到端口能力LMP。

? 上游面向端口在tU0Recovery定時器到期時,如果1毫秒內沒有收到數據包或鏈路命令(包括LDN),將過渡到恢復狀態。

U1

U1是一個電源管理狀態,在這個狀態下,鏈路被禁用以在空閑時間節省電源。U1狀態被假設為比U2狀態節省的電源少,但在需要返回U0狀態時具有較短的“退出延遲”。USB 3.0描述符使軟件能夠確定每個設備的U1和U2退出延遲。這些信息使電源管理軟件能夠為每個鏈路做出明智的電源管理決策。

在U1狀態下的要求

在LTSSM處于U1狀態時,以下要求適用。請注意,對于面向下游(DS)的端口和面向上游(US)的端口,要求略有不同。

? 端口接收器必須保持低阻抗接收器端接,RRX-DC。

? 端口發射器必須保持SuperSpeed發射器的直流共模電壓,符合VTX-CM-DC-ACTIVE-DELTA的規定。

? 端口必須保持LFPS檢測啟用,以便識別U1退出LFPS信號。

? 面向上游的端口還必須檢測Warm Reset LFPS信號。

? 當啟動從U1狀態退出時,端口啟用LFPS發射器。

? 端口在進入U1時啟用U2不活動定時器倒計時(如果U2不活動定時器的值大于0)。

? 面向下游的端口保持啟用,以檢測Ping.LFPS,并啟用300毫秒的tU1PingTimeout定時器,以驗證鏈路伙伴定期發送Ping.LFPS。

? 面向上游的端口每隔160-240毫秒發送Ping.LFPS。

U1狀態的退出規則

在U1狀態有五種可能的退出狀態。

上游(US)和下游(DS)端口都遵循的退出規則:

? 如果啟用了U2不活動定時器并且到期,端口將無聲地過渡到U2。

? 如果U1退出LFPS握手信號完成成功,端口將過渡到恢復狀態。

? 如果U1退出LFPS握手信號失敗,并且2毫秒的tNoLFPSResponseTimeout超時,端口將過渡到SS.Inactive。

僅下游(DS)端口遵循的退出規則:

? 當被指示時,面向下游的端口將過渡到SS.Disabled。

? 當Ping.LFPS未收到并且300毫秒的tU1PingTimeout超時時,面向下游的端口將過渡到Rx.Detect狀態。

? 當被指示對鏈路發出溫重啟時,面向下游的端口將過渡到Rx.Detect狀態。

僅上游(US)端口遵循的退出規則:

? 自行供電設備的上游面向端口當VBUS關閉時,將過渡到SS.Disabled。

? 當檢測到Warm Reset時,上游面向端口將過渡到Rx.Detect。

U2

U2是一個電源管理狀態,在該狀態下,鏈路在空閑時間被禁用以節省電源。U2狀態被假設為比U1狀態節省更多的電源,但在需要返回U0狀態時具有更長的“退出延遲”。USB 3.0描述符使軟件能夠確定每個設備的U1和U2退出延遲。這些信息使電源管理軟件能夠為每個鏈路做出明智的電源管理決策。

在U2狀態下的要求

在LTSSM處于U2狀態時,以下要求適用。請注意,對于面向下游(DS)的端口和面向上游(US)的端口,要求略有不同。

? 端口發射器不需要保持SuperSpeed發射器的直流共模電壓在規格VTX-CM-DC-ACTIVE-DELTA內。

? 端口接收器必須保持低阻抗接收器端接,RRX-DC。

? 端口必須保持LFPS檢測啟用,以便識別U2退出LFPS信號。? 面向上游的端口還必須檢測溫重啟LFPS信號。

? 當啟動從U2狀態退出時,端口啟用LFPS發射器。

? 面向下游的端口必須意識到鏈路伙伴可能處于U1或U2狀態,因為U2不活動轉換是無聲的。如果伙伴處

于U1狀態,它將每200毫秒發送Ping.LFPS;面向下游的端口必須區分Ping.LFPS和U1 LFPS退出信號。

? 面向下游的端口必須每100毫秒進行遠端接收器端接檢測(使用tU2RxdetDelay超時)。

U2狀態的退出規則

在U2狀態有四種可能的退出狀態。

上游(US)和下游(DS)端口都遵循的退出規則:

? 如果U2退出LFPS握手信號完成成功,端口將過渡到恢復狀態。

? 如果U2退出LFPS握手信號失敗,并且2毫秒的tNoLFPSResponseTimeout超時,端口將過渡到SS.Inactive。

僅下游(DS)端口遵循的退出規則:

? 當被指示時,面向下游的端口將過渡到SS.Disabled。

? 當檢測到遠端高阻抗端接ZRX-HIGH_IMP_DC_POS時,面向下游的端口將過渡到Rx.Detect狀態。

? 當被指示對鏈路發出溫重啟時,面向下游的端口將過渡到Rx.Detect狀態。

僅上游(US)端口遵循的退出規則:

? 自行供電設備的上游面向端口當VBUS關閉時,將過渡到SS.Disabled。

? 當檢測到Warm Reset時,上游面向端口將過渡到Rx.Detect。

U3 (Suspend)

U3是掛起電源管理狀態,提供最大的電源節省,但涉及最長的退出延遲。與進入U1和U2電源管理狀態的硬件控制不同,U3狀態的進入總是由軟件發起的。請求進入U3的請求起源于下游面向端口。

在U3狀態下的要求

在LTSSM處于U3狀態時,以下要求適用。請注意,對于面向下游(DS)的端口和面向上游(US)的端口,要求略有不同。

? 端口發射器不需要保持SuperSpeed發射器的直流共模電壓在規格VTX-CM-DC-ACTIVE-DELTA內。

? 端口接收器必須保持低阻抗接收器端接,RRX-DC。

? 端口必須保持LFPS檢測啟用,以便識別U3退出LFPS信號。

? 面向上游的端口還必須檢測溫重啟LFPS信號。

? 當啟動從U3狀態退出時,端口啟用LFPS發射器。

? 面向上游的端口不發送Ping.LFPS。? 面向下游的端口禁用Ping.LFPS檢測。

? 面向下游的端口每100毫秒進行遠端接收器端接檢測(使用tU3RxdetDelay超時)。

? 與U1和U2狀態不同,如果在10毫秒的tNoLFPSResponseTimeout內無法響應U3退出LFPS信號,不會導致過渡到SS.Inactive。如果端口無法在其鏈路伙伴的U3退出LFPS信號內響應,當準備好返回U0時,它可以啟動U3 LFPS喚醒。在重新嘗試喚醒之前,應觀察100毫秒的延遲(tU3WakeupRetryDelay)。

U3狀態的退出規則

在U3狀態有三種可能的退出狀態。

上游(US)和下游(DS)端口都遵循的退出規則:

? 如果U3退出LFPS握手信號完成成功,端口將過渡到恢復狀態。

? 如果U3退出LFPS握手信號失敗,并且10毫秒的LFPS握手超時(tNoLFPSResponseTimeout)到期,端口將保持在U3狀態。在延遲100毫秒(tU3WakeupRetryDelay)后,設備可以選擇發送U3 LFPS喚醒信號以喚醒主機,當準備好返回U0時。

僅下游(DS)端口遵循的退出規則:

? 當被指示時,面向下游的端口將過渡到SS.Disabled。

? 當檢測到遠端高阻抗端接ZRX-HIGH_IMP_DC_POS時,面向下游的端口將過渡到Rx.Detect態。

? 當被指示對鏈路發出溫重啟時,面向下游的端口將過渡到Rx.Detect狀態。僅上游(US)端口遵循的退出規則:

? 自行供電設備的上游面向端口當VBUS關閉時,將過渡到SS.Disabled。

Compliance Mode

將從輪詢過程中輸入Compliance Mode。LFPS子狀態,用于驗證超高速發射器滿足各種可能的USB 3.0物理通道的電壓等規定,比如USB眼圖測試

Compliance Mode的要求

在Compliance Mode下,以下要求適用。請注意,Compliance Mode通常涉及一個測試夾具和一個待測設備(DUT)。DUT是九種測試模式的來源;它的鏈路伙伴負責在每次需要推進測試模式時發送Ping.LFPS脈沖(CP0-CP8)。

? 端口保持低阻抗接收器端接,RRX-DC。? 端口啟用LFPS接收器。

? 負責發送合規測試模式的端口在發送第一個Compliance Mode(CP1)之前,必須符合SuperSpeed發射器的直流共模電壓規范,VTX-CM-DC-CM。

? 端口在檢測到Ping.LFPS時發送下一個Compliance Mode。

? 當最后一個Compliance Mode(CP8)處于活動狀態并且再次接收到Ping.LFPS時,第一個模式(CP0)會連續發送,直到檢測到Compliance Mode退出。

Compliance Mode退出規則

如圖12-13所示,有兩條可能的退出路徑。

? 面向下游的端口在收到指示時將過渡到SS.Disabled狀態。

? 面向下游的端口在收到指示對鏈路發出溫重啟時將過渡到Rx.Detect狀態。

? 面向上游的端口在檢測到溫重啟時將過渡到Rx.Detect狀態。

Loopback

回環測試提供了一種標準的方法來量化SuperSpeed鏈路的比特錯誤率(BER),并幫助隔離鏈路本身發生的錯誤與與內部設備硬件問題、協議違規等相關的錯誤。在環回配置中有一個主設備和一個從設備。主設備通過在TS2中設置環回位來啟動環回,然后提供環回數據。從設備重傳發送給它的環回數據。主設備檢查返回的數據是否有錯誤。

SS.Inactive

SS.Inactive狀態是在鏈路無法操作的錯誤發生后進入的,需要軟件干預。在SS.Inactive狀態下,每個端口定期檢查遠端低阻抗接收器端接(RRX-DC)。如果檢測不到,可能意味著設備已被移除。

SS.Disabled State

在SS.Disabled狀態中,SuperSpeed連接被禁用,端口移除了其低阻抗接收器端接。面向下游的端口可以從任何其他LTSSM狀態被指示進入SS.Disabled。對于面向上游的外圍設備端口,在鏈路訓練中嘗試連接八次失敗后進入SS.Disabled。任何USB 2.0重置都會導致面向上游的外圍設備端口重新嘗試SuperSpeed鏈路訓練三次。如果這仍然失敗,鏈路將保持禁用SuperSpeed。USB 2.0接口仍然可用。

USB3.0識別主要是參考 Far-end Receiver Termination RX Detect USB終端阻抗實現,如果沒有檢測到終端將降到USB2.0枚舉。

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

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

相關文章

MySQL窗口函數與PyMySQL以及SQL注入

MySQL窗口函數與PyMySQL實戰指南:從基礎到安全編程 引言 在數據處理和分析領域,MySQL作為最流行的關系型數據庫之一,其窗口函數功能為數據分析提供了強大的支持。同時,Python作為數據分析的主要語言,通過PyMySQL庫與My…

高級項目——基于FPGA的串行FIR濾波器

給大家安利一個 AI 學習神站!在這個 AI 卷成紅海的時代,甭管你是硬核開發者還是代碼小白,啃透 AI 技能樹都是剛需。這站牛逼之處在于:全程用 "變量名式" 幽默 生活化類比拆解 AI,從入門到入土(啊…

JPrint免費的Web靜默打印控件:PDF打印中文亂碼異常解決方案

文章目錄JPrint是什么?中文亂碼(Using fallback font xxx for xxxx)1.字體嵌入2.客戶機字體安裝開源地址相關目錄導航使用文檔端口號修改代理使用場景打印服務切換中文亂碼解決方案 JPrint是什么? JPrint是一個免費開源的可視化靜…

MFT 在零售行業的實踐案例與場景:加速文件集成與業務協作的高效方案

零售行業競爭激烈、數字化轉型迭代迅速,業務對數據與檔案的傳輸、處理和整合要求極高。無論是新品上市市場數據,還是供應鏈物流單據,集成方式不論是通過API或是檔案傳輸, 對于傳輸的穩定性,安全性與性能, 都會直接影響決策效率與顧客體驗。MF…

OSG+Qt —— 筆記1 - Qt窗口加載模型(附源碼)

?? OSG/OsgEarth 相關技術、疑難雜癥文章合集(掌握后可自封大俠 ?_?)(記得收藏,持續更新中…) OSG+Qt所用版本皆為: Vs2017+Qt5.12.4+Osg3.6.5+OsgQt(master) 效果 代碼(需將cow.osg、reflect.rgb拷貝至工程目錄下) OsgForQt.ui main.cpp

開源安全云盤存儲:Hoodik 實現端到端數據加密,Docker快速搭建

以下是對 Hoodik 的簡單介紹: Hoodik 是一個使用 Rust 和 Vue 開發的輕量級自托管安全云存儲解決方案采用了非對稱RSA密鑰對和AES混合加密策略,從文件存儲加密到數據鏈路加密,全程保證數據安全支持Docker一鍵私有部署,數據和服務…

[C++] Git 使用教程(從入門到常用操作)

1. Git 簡介 Git 是一款分布式版本控制系統,用來跟蹤文件變化、協作開發、管理項目版本。 它是開源的,由 Linus Torvalds 在 2005 年開發,廣泛用于開源與企業項目中。 2. 安裝 Git Windows 前往 Git 官網 下載并安裝。 安裝時建議勾選 Git…

實盤回測一體的期貨策略開發:tqsdk獲取歷史數據并回測,附python代碼

原創內容第969篇,專注AGI,AI量化投資、個人成長與財富自由。 星球好多同學希望說說實盤,我們就從實盤開始吧。 我們選擇tqsdk給大家講解,tqsdk支持免費注冊,使用模擬賬戶,歷史和實時數據,方便…

大模型推理框架vLLM 中的Prompt緩存實現原理

背景:為什么需要Prompt緩存模塊?在大模型問答多輪對話應用場景中,不同請求的 Prompt 往往有相同的前綴,比如:第一次問答:你是一名專業的電子產品客服,負責回答客戶關于手機產品的咨詢。請根據以…

Python之Django使用技巧(附視頻教程)

概述 Django 是一個高級的 Python Web 框架,遵循 “batteries-included”(內置電池)理念,提供了構建 Web 應用所需的大部分組件,讓開發者可以專注于業務邏輯而不是底層細節。視頻教程:https://pan.quark.cn…

sqli-labs通關筆記-第44關 POST字符型堆疊注入(單引號閉合 手工注入+腳本注入3種方法)

目錄 一、堆疊注入 二、源碼分析 1、代碼審計 2、SQL注入安全性分析 三、堆疊手注法 1、進入靶場 2、正確用戶名密碼登錄 3、堆疊注入 4、查看數據庫 四、聯合手注法 1、獲取列數 2、確認回顯位 3、獲取數據庫名 4、獲取表名 5、獲取列名 6、獲取字段 7、總結…

從深度偽造到深度信任:AI安全的三場攻防戰

前言當大模型開始“睜眼”看世界,偽造者也開始“閉眼”造世界。2025 WAIC釋放出的信號很明確:沒有AI安全底座,就沒有產業智能化的高樓。WAIC 把“安全”擺在與“創新”同等重要的位置,形成了“1 份共識框架+2 份重磅報…

【C++】哈希的應用:位圖和布隆過濾器

目錄 一、位圖 1.1 位圖的概念 1.2 位圖的實現 1.3 位圖的應用 二、布隆過濾器 2.1 布隆過濾器的提出 2.2 布隆過濾器的概念 2.3 布隆過濾器的插入和查找 2.4 布隆過濾器的刪除 2.5 布隆過濾器的優點 2.6 布隆過濾器的缺點 一、位圖 1.1 位圖的概念 1. 面試題 給4…

C語言:指針(4)

1. 回調函數回調函數就是指通過函數指針調用的函數。如果將函數指針作為參數傳遞給另一個函數,另一個函數根據指針來調這個函數,那么被調用的函數就是回調函數。回調函數不是由這個函數的實現方直接調用,而是在特定的條件下由另一方調用的。例…

vue--video使用動態src時,視頻不更新

問題描述 在 Vue項目中&#xff0c;嘗試動態更新 標簽的 元素 src 屬性來切換視頻時&#xff0c;遇到了一個問題&#xff1a;即使 src 已更改&#xff0c;瀏覽器仍不顯示視頻。 <template><video width"100%" height"100%" controlspause"…

計算機視覺--opencv(代碼詳細教程)(一)

在計算機視覺的廣袤領域中&#xff0c;OpenCV 是一座極為關鍵的里程碑。無論是在前沿的學術研究&#xff0c;還是在蓬勃發展的工業界&#xff0c;OpenCV 憑借其強大的功能與高效的性能&#xff0c;為開發者提供了豐富的圖像處理和計算機視覺算法&#xff0c;助力無數項目落地。…

物聯網通訊協議-MQTT、Modbus、OPC

引言在物聯網迅速發展的今天&#xff0c;設備間的通信協議扮演著至關重要的角色。它們是不同設備、系統之間實現數據交換的橋梁。本文將詳細介紹三種在物聯網領域廣泛應用的通訊協議——MQTT、Modbus和OPC&#xff0c;包括它們的基礎概念、特點及在C#中的實現方法。一、MQTT協議…

牛客周賽R104 小紅的矩陣不動點

D-小紅的矩陣不動點_牛客周賽 Round 104 賽時這道題卡了一段時間&#xff0c;賽時代碼如下&#xff1a; #include<bits/stdc.h> using namespace std; int ans,h; int a[505][505]; signed main(){ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);int n,m;cin>…

Rust面試題及詳細答案120道(19-26)-- 所有權與借用

《前后端面試題》專欄集合了前后端各個知識模塊的面試題&#xff0c;包括html&#xff0c;javascript&#xff0c;css&#xff0c;vue&#xff0c;react&#xff0c;java&#xff0c;Openlayers&#xff0c;leaflet&#xff0c;cesium&#xff0c;mapboxGL&#xff0c;threejs&…

Jenkins + SonarQube 從原理到實戰三:SonarQube 打通 Windows AD(LDAP)認證與踩坑記錄

前言 在前兩篇文章中&#xff0c;已經介紹了 SonarQube 的部署 以及 通過 sonar-cxx 插件實現 C/C 代碼掃描。 本篇將重點講 如何讓 SonarQube 對接 Windows AD&#xff08;LDAP&#xff09;&#xff0c;實現域賬號登錄和基于 AD 組的權限管理。 一、背景與需求分析 需求分析…