Hari Balisetty,Broadcom
如您所知,USB3.0 有一個名為 LTSSM(鏈路訓(xùn)練和狀態(tài)狀態(tài)機)的狀態(tài)機,它負(fù)責(zé)
- 初始化和鏈路訓(xùn)練
- 電源管理轉(zhuǎn)換
- 鏈路錯誤恢復(fù)和其他連接問題。
在這里,您可以找到有關(guān)我們驗證 IP 的更多信息。
LTSSM 有 12 個高級狀態(tài),如下所示。在這篇博客中,我們將檢查鏈接訓(xùn)練中涉及的狀態(tài),并了解鏈接伙伴如何移動到實際傳輸開始的狀態(tài) U0。

鏈路訓(xùn)練是在上電復(fù)位后或熱復(fù)位時在鏈路初始化期間發(fā)生的一系列事件。這基本上是為了檢測鏈路伙伴并在開始對鏈路進行任何類型的傳輸之前訓(xùn)練鏈路。如上圖所示,鏈路訓(xùn)練序列從 Rx.Detect(上游端口和下游端口的開機狀態(tài))開始,以出口到 U0 結(jié)束,這是發(fā)送和接收數(shù)據(jù)包的正常操作狀態(tài)。在鏈路訓(xùn)練之前,上游和下游端口都將處于 SS 狀態(tài)。禁用狀態(tài)(刪除端口的超高速連接的狀態(tài))。在輪詢狀態(tài)下,通過 LFPS(低頻周期信號)握手啟用鏈路訓(xùn)練,該握手用于在沒有 SS 信令的情況下傳達(dá)信息
下圖顯示了鏈接訓(xùn)練狀態(tài)及其子狀態(tài)。

如何配置驗證 IP 以與 DUT 同步完成超高速鏈路訓(xùn)練序列?Synopsys 的 USB 3.0 和 3.1 驗證 IP 定義了多個具有適當(dāng)默認(rèn)值的計時器和參數(shù),這使得實現(xiàn)這一目標(biāo)變得簡單。其中一些參數(shù)映射到 USB 規(guī)范,添加一些參數(shù)是為了幫助驗證 DUT 在正常或錯誤條件下的運行情況。默認(rèn)值可確保您可以啟用鏈接訓(xùn)練序列,而無需覆蓋任何參數(shù)值。
在某些情況下,您可能需要調(diào)整參數(shù)以嘗試不同的極端情況或進一步減慢鏈接訓(xùn)練所需的時間。在這里,我們將專門查看鏈路訓(xùn)練序列(由于熱復(fù)位或上電復(fù)位),并將關(guān)聯(lián) VIP 中影響該序列的參數(shù)。
斜體中提到的所有名稱都是 USB VIP 中svt_usb_configuration類中的變量,方括號 [] 中的名稱/值是 USB 規(guī)范名稱/值。如果未提及端口方向,則將其視為上游(主機)和下游(設(shè)備)端口。
Rx.檢測.重置
進入此狀態(tài)可能是由于熱復(fù)位或開機復(fù)位。當(dāng)物理電源進入 P2 狀態(tài)時,請注意以下參數(shù)。根據(jù)以前的物理電源狀態(tài),VIP 使用以下一個(或多個)計時器值。
- p0_to_p2_transition_time
- p3_to_p2_transition_time
- p3_to_p0_transition_time
- allow_p2_p3_direct_transition
如果該條目不是由于熱重置,則它直接移動到 Rx.Detect.Active。如果條目是由于熱重置,則轉(zhuǎn)換取決于端口 VIP 配置為的類型。
- 如果將 VIP 配置為下游端口(主機),則它會在 t_reset_timeout[tReset] 時間內(nèi)傳輸 LFPS。這稱為熱復(fù)位序列。一旦計時器到期,VIP 就會停止發(fā)送 LFPS 并移動到 Rx.Detect.Active。
- 如果將 VIP 配置為上游端口(設(shè)備),則在主機(連接到 VIP 的 DUT)完成發(fā)送 LFPS 熱復(fù)位信號后,將轉(zhuǎn)換為 Rx.Detect.Active。
Rx.Detect.Active
此狀態(tài)用于檢測另一端的鏈路伙伴。在此狀態(tài)下,如果檢測到“接收器終止”,VIP 將執(zhí)行“接收器終止”檢測 (receiver_detect_time) 并移動到 Polling.LFPS。如果未檢測到接收器終止,則執(zhí)行以下操作。
- 如果VIP是下游端口(主機),則它將移動到Rx.Detect.Quiet。
- 如果VIP是上游端口(設(shè)備),則它會移動到Rx.Detect.Quiet rx_detect_termination_detect_count[8]次。如果即使在此之后仍未檢測到低阻抗端接,則移至SS。禁用。
Rx.Detect.Quiet
在這里等到rx_detect_quiet_timeout[12ms計時器]到期,然后移回Rx.Detect.Active。

圖 1:輪詢中的 LFPS 信令。
Polling.LFPS
一旦檢測到鏈路伙伴處于 Rx.Detect 狀態(tài),兩個(上游和下游)端口都將進入輪詢狀態(tài)以訓(xùn)練鏈路。在此狀態(tài)下,VIP 將傳輸 LFPS,直到突發(fā)計時器 polling_lfps_burst_time) 過期。它還計算收到的突發(fā)次數(shù),并檢查是否滿足退出條件(檢查下面的退出標(biāo)準(zhǔn))。如果不滿足退出條件,則VIP將等待“重復(fù)計時器”(polling_lfps_repeat_time)過期,然后再次啟動上述過程(傳輸LFPS)。
退出到 Polling.RxEq 的退出條件。
- polling_lfps_sent_count(發(fā)送的LFPS突發(fā)數(shù)量)[16]
- polling_lfps_received_count (收到LFPS數(shù)量) [2]
- polling_lfps_sent_after_received_count(從鏈路伙伴接收到第一個 LFPS 后發(fā)送的 LFPS 突發(fā)數(shù))[4]
在 [360ms 計時器] 到期之前滿足退出條件非常重要polling_lfps_timeout。如果超時過期,則 VIP 根據(jù)端口的方向執(zhí)行以下操作之一
- 如果下游端口(主機),則移動到 Rx.Detect
- 如果上游端口(設(shè)備),則它移動到SS。禁用

圖 2:在輪詢期間交換 TSEQ。
Polling.RxEq
此狀態(tài)用于通過交換 TSEQ(均衡訓(xùn)練序列)有序集來訓(xùn)練均衡邏輯??梢酝ㄟ^啟用ltssm_skip_polling_rxeq來跳過此狀態(tài)。傳輸polling_rxeq_tseq_count [65,536] 個 TSEQ 訂購集 VIP 的數(shù)量將移動到輪詢活動。
輪詢.活動
在此狀態(tài)下,VIP 將繼續(xù)發(fā)送 TS1,直到連續(xù)收到polling_active_received_ts_count數(shù)量的 TS1/TS2。每次收到不同的序列時,VIP 都會重置計數(shù)器。因此,它確保連續(xù)接收 TS1 或 TS2 polling_active_received_ts_count [8] 次。
請務(wù)必在 [12ms 計時器] 到期之前滿足退出條件polling_active_timeout。如果此超時過期,則 VIP 將執(zhí)行以下操作之一:
- 如果它是下游端口(主機),它將移動到 Rx.Detect
- 如果它是上游端口(設(shè)備),那么它將移動到 SS。禁用。

圖 3:在輪詢中交換 TS1 和 TS2?;顒雍洼喸?。配置
輪詢.配置
在此狀態(tài)下,VIP 將開始發(fā)送 TS2,但只有在從鏈路伙伴收到第一個 TS2 后才會開始計數(shù)。
退出條件:滿足以下計數(shù)后,將退出此狀態(tài)。
- polling_configuration_received_ts2_count [8] //收到 TS2 的編號
- polling_configuration_sent_ts2_count [16] //從鏈路伙伴處收到第一個 TS2 后發(fā)送的 TS2 編號
在 [12ms 計時器] 到期之前滿足退出條件非常重要polling_configuration_timeout。如果超時過期,則 VIP 執(zhí)行以下操作之一
- 如果是下游端口(主機),則移至 Rx.Detect
- 如果它是上游端口(設(shè)備),它將移動到 SS。禁用。
輪詢.空閑
在此狀態(tài)下,VIP 要做的第一件事是檢查在輪詢配置中接收的 TS2 中是否設(shè)置了復(fù)位位,以及端口方向是否在上游(設(shè)備)。如果檢測到這兩種情況,VIP 將直接進入 LTSSM 的熱重置狀態(tài)。
如果上述條件為假,則在達(dá)到以下“計數(shù)”時退出 U0。
- polling_idle_received_idle_count [8] // 收到的閑置數(shù)
- polling_idle_sent_idle_count [16] // 從鏈接伙伴收到第一個空閑后發(fā)送的空閑編號。
這里重要的一點是在 [2ms 計時器] 到期之前滿足polling_idle_timeout退出條件。如果超時過期,則 VIP 執(zhí)行以下操作之一
- 如果下游端口(主機),則移至 Rx.Detect
- 如果上游端口(設(shè)備),則移至SS。禁用。

圖 4:鏈路訓(xùn)練結(jié)束時的 U0 狀態(tài)
完成輪詢.空閑后,鏈路將變?yōu)?U0 狀態(tài),此時物理功率更改為 P0,實際傳輸開始。在任何給定時間點通過此序列,上游端口(設(shè)備)移動到 Rx.Detect 在熱復(fù)位時。大多數(shù)VIP可以選擇從U0狀態(tài)(usb_ss_initial_ltssm_state)開始,以便用戶可以跳過整個初始鏈路訓(xùn)練,并且可以從模擬開始就開始傳輸。有時連接到VIP的DUT可能沒有跳過鏈路訓(xùn)練的選項,在這種情況下,我們建議使用本博客中提到的配置參數(shù),以盡量減少鏈路訓(xùn)練中的模擬時間。
審核編輯:郭婷
-
usb
+關(guān)注
關(guān)注
60文章
8441瀏覽量
284657 -
計時器
+關(guān)注
關(guān)注
1文章
434瀏覽量
35215 -
DUT
+關(guān)注
關(guān)注
0文章
194瀏覽量
13454
發(fā)布評論請先 登錄
USB3.0與USB2.0的差別
是否可以與USB2.0集線器 (CYUSB2302) 共享USB2通道SS線路直接到USB3.0端口?
USB3.0的連接問題
請問USB3.0中HS和SS信號什么情況下可以分開使用?
USB3.0和USB2.0
USB3.0系統(tǒng)的ESD防護設(shè)計方案
FPGA和USB3.0通信-USB3.0 PHY簡介
什么是USB3.0?usb3.0與usb2.0有什么區(qū)別?
USB3.0如何辨別
USB3.0中SS鏈路訓(xùn)練的來龍去脈
評論