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

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

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

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

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

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

圖 4:鏈路訓(xùn)練結(jié)束時(shí)的 U0 狀態(tài)
完成輪詢.空閑后,鏈路將變?yōu)?U0 狀態(tài),此時(shí)物理功率更改為 P0,實(shí)際傳輸開(kāi)始。在任何給定時(shí)間點(diǎn)通過(guò)此序列,上游端口(設(shè)備)移動(dòng)到 Rx.Detect 在熱復(fù)位時(shí)。大多數(shù)VIP可以選擇從U0狀態(tài)(usb_ss_initial_ltssm_state)開(kāi)始,以便用戶可以跳過(guò)整個(gè)初始鏈路訓(xùn)練,并且可以從模擬開(kāi)始就開(kāi)始傳輸。有時(shí)連接到VIP的DUT可能沒(méi)有跳過(guò)鏈路訓(xùn)練的選項(xiàng),在這種情況下,我們建議使用本博客中提到的配置參數(shù),以盡量減少鏈路訓(xùn)練中的模擬時(shí)間。
審核編輯:郭婷
-
usb
+關(guān)注
關(guān)注
60文章
8190瀏覽量
272996 -
計(jì)時(shí)器
+關(guān)注
關(guān)注
1文章
432瀏覽量
33753 -
DUT
+關(guān)注
關(guān)注
0文章
191瀏覽量
12954
發(fā)布評(píng)論請(qǐng)先 登錄
USB3.0與USB2.0的差別
是否可以與USB2.0集線器 (CYUSB2302) 共享USB2通道SS線路直接到USB3.0端口?

USB3.0的連接問(wèn)題
請(qǐng)問(wèn)USB3.0中HS和SS信號(hào)什么情況下可以分開(kāi)使用?
USB3.0和USB2.0

USB3.0系統(tǒng)的ESD防護(hù)設(shè)計(jì)方案

FPGA和USB3.0通信-USB3.0 PHY簡(jiǎn)介

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

評(píng)論