Configuration.Lanenum.Accept
如果use_modified_TS1_TS2_Ordered_Set為1,需要注意:
(1)tx需要發送Modified TS1而不是正常的TS1;
(2)rx端必須檢查是否收到Modified TS1(注意一開始進入這個狀態的時候可能還是收到標準的TS1,需要檢查的是收到連續的Modified TS1)
Dsp:
如果dsp在所有通道上都接收到連續兩個TS1,它們攜帶的鏈路和通道編號都和 dsp在這些通道上發送的數值一致,那么代表usp同意了dsp通告的鏈路編號和通道編號,dsp隨之進入 Configuration.Complete 狀態。如果dsp接收到的通道編號順序與通告的順序相顛倒,如果dsp支持通道順序顛倒,那么dsp同樣進入 Configuration.Complete狀態,并采用接收到的,顛倒的通道編號順序。(針對usp,進入Configuration.Complete狀態的條件是,如果 USP在所有通道上都接收到連續兩個TS2,它們攜帶的鏈路和通道編號都和 USP 在這些通道上發送的 TS1 中的數值一致,那么USP 進入 Configuration.Complete 狀態。)
如果一條正在被配置的鏈路可以由一部分而不是全部的可用通道組成,這些通道都收到連續兩個 TS1 ,鏈路編號為相同有效的數值,并且通道編號也不為填充符號。那么在這部分通道上發送鏈路編號相同,通道編號重新編制的 TS1,旨在用更少數量的通道來編成一條鏈路。新的通道編號必須從 0 開始順序遞增,指派給鏈路所使用的通道。任何沒有接收到 TS1 的通道不能成為鏈路的一部分,并且中斷通道編號遞增。舉例而言,如果共有 8 條通道,但是通道 2 沒有接收到 TS1,那么這組通道將不能組成包括通道 2 的鏈路。這樣一來,不能組成 x8 或者 x4 的鏈路,只能組成 x2 或者 x1 的鏈路。剩下不使用的通道,必須在其上發送鏈路和通道編號都為填充符號的 TS1。此時下個狀態是Configuration.Lanenum.Wait。-dsp/usp均滿足
如果沒有鏈路可以被配置,或者所有通道接收到兩個連續的 TS1,其鏈路和通道編號都為填充符號,下個狀態是detect。-dsp/usp均滿足
為了避免將鏈路的寬度配置小于正常寬度,協議建議如果在多通道鏈路上發現某些通道出現錯誤或者失去 Block Alignment 狀態,那么延遲一段時間后再進行本過程。8b/10b 編碼時等待至少 2 個 TS1,128b/130b 編碼時至少等待 34 個 TS1,但任何情況下不要等待超過 1ms。-dsp/usp均滿足
注意幾點:
(1)針對Reversed Lane來說,其lane num的變化要求是非常嚴格的,比如原來lane num是0,那么收到的TS1中的Lane num就為n-1;原來為n-1的lane,那么收到的TS1中的lane num為0;-dsp/usp均滿足
(2)注意,如果use_modified_TS1_TS2_Ordered_Set變量設為1,并且Alternate Protocol Negotiation執行了,那么轉換到Configuration.Complete狀態必須要延遲10us,直到dsp收到usp的rsp(這里有問題,什么是Alternate Protocol Negotiation??,usp這里同樣有這樣的描述,同樣需要注意)
變量變化:
1.在如下條件下:SRIS_Mode_Enabled設為1:
(1)Linkup = 0;
(2)自從進入Configuration state狀態后,port已經發送了SRIS Clocking (Symbol 4, bit 7 = 1b)的TS1;
寄存器變化:
1.如果當前的configuration狀態是從recovery狀態進入的,那么Link Status Register中的Link Bandwidth Management Status和Link Autonomous Bandwidth Status域需要根據如下規則更新:
(1)由于鏈路可靠性導致的dsp發起的bandwidth的改變Link Bandwidth Management Status設為1;
(2)bandwidth的改變不是由于dsp,并且收到的連續兩個TS1中的Autonomous Change(Symbol 4 bit 6)為0,Link Bandwidth Management Status設為1;
(3)其他情況下Link Autonomous Bandwidth Status域設為1;
Configuration.Complete
Flit_Mode_Enabled為0 + LinkUp為1,允許雙方設備在進入本狀態時,改變它們的支持速率列表和鏈路寬度恢復能力(upconfigure capability),但一旦進入本狀態后,這些設置就不再允許修改。
Flit_Mode_Enabled為1 + LinkUp為0,允許雙方設備在進入本狀態時,改變L0p capability,但一旦進入本狀態后,這些設置就不再允許修改。
如果use_modified_TS1_TS2_Ordered_Set為1,需要注意:
(1)tx需要發送Modified TS1而不是正常的TS1;
(2)rx端必須檢查是否收到Modified TS1(注意一開始進入這個狀態的時候可能還是收到標準的TS1,需要檢查的是收到連續的Modified TS1)
Dsp:
1.在 Configuration.Complete 狀態期間,DSP 將發送 TS2 序列,其中的鏈路和通道編號與接收到的 TS1 中的內容。(針對usp,在Configuration.Complete 狀態期間,USP 將發送 TS2 序列,其中的鏈路和通道編號與接收到的 TS2 中的內容)
2.如果該端口能夠在當前分配的lane0上向下支持x1鏈路,并在LinkUp=1b時支持增加鏈路寬度恢復(upconfigure),那么允許dsp將置位TS2序列中的Upconfigure Capability/L0p比特設為1。-dsp/usp均滿足
3.DSP 會記錄接收到的 TS2 中的 N_FTS 域數值,其表示對端退出L0s狀態必需的 FTS 數量,以備后續使用。-dsp/usp均滿足
4.使用8b/10b編碼時,必須在離開當前狀態前完成通道間去偏移。-dsp/usp均滿足
5.如果所有配置中的通道都收到了兩個連續的 TS2,其中關閉加擾(Disable Scrambling)比特設置為 1'b1,那么停止對編碼進行加擾(scrambling)。發送端發送TS2中Disable Scrambling比特為1的端口也必須停止加擾。在128b/130b 編碼模式時,無法關閉加擾,因為添加的擾碼對信號完整性的幫助不可或缺。-dsp/usp均滿足
6.下個條件是Configuration.Idle狀態如果滿足如下條件:
當所有發送 TS2 的通道都接收到 8 個滿足條件的 TS2 時,并且在接收到一個 TS2 后該通道已經發送至少 16 個 TS2 后,狀態機將跳轉至下一個狀態:Configuration.Idle。這些條件指的是所有接收的 TS2 中都攜帶有匹配的鏈路編號和通道編號(非填充符號),匹配的速率標識符( rate identifier),以及匹配的鏈路 Upconfig Capability 比特。-dsp/usp均滿足
7.如果設備支持 2.5 GT/s 以上的速率,那么它必須記錄在任何已配置通道上的速率標識符,并覆蓋所有此前記錄的數值。“changed_speed_recovery” 用于在 Recvory 狀態中追蹤速率編號的變量,此時清除為 0。-dsp/usp均滿足
8.Flit_Mode_Enabled為0的情況下,如果tx發出的TS2中的Link Upconfigure/ L0p Capability (Symbol 4 bit 6)域設置為 1b,并且接收到 8 個連續的 TS2 序列,TS2在該比特上的設置同樣為1,變量upconfigure_capable設為1。否則,該變量清除為 0。-dsp/usp均滿足
9.Flit_Mode_Enabled為1+ LinkUp=0b的情況下,如果tx發出的TS2中的Link Upconfigure/ L0p Capability (Symbol 4 bit 6)域設置為 1b,并且接收到 8 個連續的 TS2 序列,TS2在該比特上的設置同樣為1,那么L0p_capable變量設為1,Device Status 3 Register中的Remote L0p Supported bit設為1;-dsp/usp均滿足
10.任何沒有配置為鏈路一部分的通道將與當前的 LTSSM 不再有關聯,并且必須設置為下述各種狀態中的一種:
(1)與新的 LTSSM 相關聯;(針對usp,是指和新的crosslink LTSSM關聯)
(2)轉為電氣空閑狀態,這里涉及一種特殊的狀態,即這些未被配置進鏈路的通道曾經在 L0 狀態中被配置為鏈路的一部分,并且從那之后 LinkUp 狀態位一直被設置為 1b。如果鏈路支持 upconfigure,那么它們需要仍然和原來的 LTSSM 相關聯。這種情況下,協議建議這些通道仍然保持打開對接收端的終結(termination)特性,因為在 upconfigured 之后,它們又會重新變成鏈路的一份子。如果不保持終結特性打開,那么在LTSSM從Configuration.Complete 狀態轉為 Recovery.RcvrCfg 狀態時,也需要再次打開(upconfigure_capable變量為1的情況下)。不過,如果這些通道并非曾經是鏈路的一部分,那么它們無法通過該過程成為鏈路的一部分。-dsp/usp均滿足
對于可選配的 crosslink 特性,接收阻抗必須保持在這兩者之間。-dsp/usp均滿足
在 LTSSM 返回 Detect 狀態后,這些通道會和LTSSM重新和其關聯。-dsp/usp均滿足
這些通道進入電器空閑狀態之前無需發送 EIOS 序列,并且狀態轉變到Electrical Idle也并不一定需要發生在符號或者命令集的邊界上。-dsp/usp均滿足
11.
2ms超時后根據如下情況進行:
(1)如果當前狀態是2.5GT/s或者5.0GT/s,那么下個狀態時detect狀態-dsp/usp均滿足
(2)如果 idle_to_rlock_transitioned 變量小于 FFh,并且當前數據速率為 8GT/s,那么接下來轉入 Configuration.Idle 狀態。注意在這次狀態跳變中,changed_speed_recovery 變量清除為 0。并且,變量 upconfigure_capable 也可能會被更新(非強制),當至少一個通道上收到8個連續的 TS2 序列,它們都攜帶有匹配的鏈路編號和通道編號(非填充符號),如果鏈路收發雙方的 Upconfig Capability 比特都為 1,那么 upconfigure_capable 變量更新為 1b,否則清除為 0。-dsp/usp均滿足
(3)任何沒有配置為鏈路一部分的通道將與當前的 LTSSM 不再有關聯,其他所需的條件與上述列出的非超時時的條件一致(也就是條件(2))。-dsp/usp均滿足
(4)在超時后,如果未滿足上一段的條件,則轉入 Detect 狀態。-dsp/usp均滿足