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

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

如何配置驗證 IP 以與 DUT 同步完成超高速鏈路訓練序列?Synopsys 的 USB 3.0 和 3.1 驗證 IP 定義了多個具有適當默認值的計時器和參數,這使得實現這一目標變得簡單。其中一些參數映射到 USB 規范,添加一些參數是為了幫助驗證 DUT 在正常或錯誤條件下的運行情況。默認值可確保您可以啟用鏈接訓練序列,而無需覆蓋任何參數值。
在某些情況下,您可能需要調整參數以嘗試不同的極端情況或進一步減慢鏈接訓練所需的時間。在這里,我們將專門查看鏈路訓練序列(由于熱復位或上電復位),并將關聯 VIP 中影響該序列的參數。
斜體中提到的所有名稱都是 USB VIP 中svt_usb_configuration類中的變量,方括號 [] 中的名稱/值是 USB 規范名稱/值。如果未提及端口方向,則將其視為上游(主機)和下游(設備)端口。
Rx.檢測.重置
進入此狀態可能是由于熱復位或開機復位。當物理電源進入 P2 狀態時,請注意以下參數。根據以前的物理電源狀態,VIP 使用以下一個(或多個)計時器值。
- p0_to_p2_transition_time
- p3_to_p2_transition_time
- p3_to_p0_transition_time
- allow_p2_p3_direct_transition
如果該條目不是由于熱重置,則它直接移動到 Rx.Detect.Active。如果條目是由于熱重置,則轉換取決于端口 VIP 配置為的類型。
- 如果將 VIP 配置為下游端口(主機),則它會在 t_reset_timeout[tReset] 時間內傳輸 LFPS。這稱為熱復位序列。一旦計時器到期,VIP 就會停止發送 LFPS 并移動到 Rx.Detect.Active。
- 如果將 VIP 配置為上游端口(設備),則在主機(連接到 VIP 的 DUT)完成發送 LFPS 熱復位信號后,將轉換為 Rx.Detect.Active。
Rx.Detect.Active
此狀態用于檢測另一端的鏈路伙伴。在此狀態下,如果檢測到“接收器終止”,VIP 將執行“接收器終止”檢測 (receiver_detect_time) 并移動到 Polling.LFPS。如果未檢測到接收器終止,則執行以下操作。
- 如果VIP是下游端口(主機),則它將移動到Rx.Detect.Quiet。
- 如果VIP是上游端口(設備),則它會移動到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 狀態,兩個(上游和下游)端口都將進入輪詢狀態以訓練鏈路。在此狀態下,VIP 將傳輸 LFPS,直到突發計時器 polling_lfps_burst_time) 過期。它還計算收到的突發次數,并檢查是否滿足退出條件(檢查下面的退出標準)。如果不滿足退出條件,則VIP將等待“重復計時器”(polling_lfps_repeat_time)過期,然后再次啟動上述過程(傳輸LFPS)。
退出到 Polling.RxEq 的退出條件。
- polling_lfps_sent_count(發送的LFPS突發數量)[16]
- polling_lfps_received_count (收到LFPS數量) [2]
- polling_lfps_sent_after_received_count(從鏈路伙伴接收到第一個 LFPS 后發送的 LFPS 突發數)[4]
在 [360ms 計時器] 到期之前滿足退出條件非常重要polling_lfps_timeout。如果超時過期,則 VIP 根據端口的方向執行以下操作之一
- 如果下游端口(主機),則移動到 Rx.Detect
- 如果上游端口(設備),則它移動到SS。禁用

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

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

圖 4:鏈路訓練結束時的 U0 狀態
完成輪詢.空閑后,鏈路將變為 U0 狀態,此時物理功率更改為 P0,實際傳輸開始。在任何給定時間點通過此序列,上游端口(設備)移動到 Rx.Detect 在熱復位時。大多數VIP可以選擇從U0狀態(usb_ss_initial_ltssm_state)開始,以便用戶可以跳過整個初始鏈路訓練,并且可以從模擬開始就開始傳輸。有時連接到VIP的DUT可能沒有跳過鏈路訓練的選項,在這種情況下,我們建議使用本博客中提到的配置參數,以盡量減少鏈路訓練中的模擬時間。
審核編輯:郭婷
-
usb
+關注
關注
60文章
8152瀏覽量
271372 -
計時器
+關注
關注
1文章
430瀏覽量
33569 -
DUT
+關注
關注
0文章
190瀏覽量
12876
發布評論請先 登錄
USB3.0與USB2.0的差別
是否可以與USB2.0集線器 (CYUSB2302) 共享USB2通道SS線路直接到USB3.0端口?

USB3.0的連接問題
請問USB3.0中HS和SS信號什么情況下可以分開使用?
USB3.0和USB2.0

USB3.0系統的ESD防護設計方案

FPGA和USB3.0通信-USB3.0 PHY簡介

什么是USB3.0?usb3.0與usb2.0有什么區別?
USB3.0如何辨別

評論