4.1 簡介
物理層將事務層和數據鏈路層與用于鏈路數據交換的信令技術隔離開來。物理層被劃分為邏輯物理層和電氣物理層子模塊(見圖4-1)。
?4.2 邏輯物理層子模塊
邏輯子模塊有兩個主要部分:一個發送部分,它準備從數據鏈路層傳遞過來的信息,以便通過電氣子模塊傳輸;一個接收部分,它識別并準備接收到的信息,然后將其傳遞給數據鏈路層。
邏輯子模塊和電氣子模塊通過狀態和控制寄存器接口或功能等效設備協調每個收發器的狀態。邏輯子模塊指導物理層的控制和管理功能。
PCI Express在數據速率為2.5 GT/s或5.0 GT/s時使用8b/10b編碼。對于大于或等于8.0 GT/s的數據速率,它使用每條通道的編碼以及物理層封裝。
4.2.1? 2.5 GT/s和5.0 GT/s數據速率編碼
4.2.1.1 符號編碼
在2.5和5.0 GT/s的數據速率下,PCI Express使用8b/10b傳輸編碼。這種傳輸編碼的定義與ANSI X3.230-1994標準第11條款(以及IEEE 802.3z,36.2.4)中指定的定義相同。采用這種方案,8位數據字符被當作3位和5位映射到一個4位代碼組和一個6位代碼組上。控制位與數據字符結合使用,用于確定何時編碼8b/10b傳輸編碼中包含的12個特殊符號之一。這些代碼組連接起來形成一個10位符號。如圖4-2所示,ABCDE映射到abcdei,FGH映射到fghj。
4.2.1.1.1 數據的串行化和反串行化
符號的位被放置在一條通道上,從位"a"開始,以位"j"結束。圖4-3和圖4-4中展示了示例。?
4.2.1.1.2 用于幀定界和鏈路管理的特殊符號(K代碼)
8b/10b編碼方案提供了與用于表示字符的數據符號不同的特殊符號。這些特殊符號用于本章后面描述的各種鏈路管理機制。 特殊符號也用于對DLLPs和TLPs進行幀定界, 使用不同的特殊符號允許這兩種類型的包能夠快速且容易地區分開來。
表4-1顯示了PCI Express使用的特殊符號,并為每個符號提供了簡要說明。這些符號將在后續章節中更詳細地討論。每個這些特殊符號以及數據符號,都必須通過查看整個10位符號來解釋。
4.2.1.1.3 8b/10b 解碼規則
有效的8b/10b代碼的符號表在附錄B中給出。這些表格有一列用于正差錯和一列用于負差錯。
在從電氣空閑狀態出來后首次傳輸差分數據時,除非有其他要求,否則發射器可以選擇任何差錯,發射器之后必須遵循正確的8b/10b編碼規則,直到進入下一個電氣空閑狀態。
當接收器檢測到從電氣空閑狀態退出時,初始差錯設置為獲得符號鎖定時使用的第一個符號的差錯。如果由于硬件設計實現的錯誤數量,在傳輸差分信息期間丟失并重新獲得符號鎖定,差錯也可能會被重新初始化。
在初始差錯設置后,所有接收到的符號都必須在與當前運行差錯相對應的正確列中找到。 如果接收到的符號在與錯誤的運行差錯相對應的列中找到,或者符號與兩列都不對應,則物理層必須通知數據鏈路層接收到的符號無效。這是一個接收器錯誤,并且是與端口相關聯的報告錯誤(見第6.2節)。
4.2.1.2 符號到鏈路的幀定界和應用
符號到通道的幀定界和應用分為兩類。第一類是有序集(Ordered Sets),第二類是TLPs(事務層包)和DLLPs(數據鏈路層協議包)。有序集總是在每條通道上串行傳輸,以便在多通道鏈路上,所有通道同時出現完整的有序集。
幀定界機制使用特殊符號K28.2 "SDP"來開始一個DLLP,使用特殊符號K27.7 "STP"來開始一個TLP。特殊符號K29.7 "END"用于標記TLP或DLLP的結束。
符號的概念流必須從其內部表示(這是實現依賴的)映射到外部通道。符號被映射到通道上,以首位符號(代表字符0)放置在通道0上;第二個放置在通道1上;依此類推。x1鏈路是一個最簡單案例,映射是最普通的,所有符號按順序放置在單一通道上。
當沒有傳輸包信息或特殊有序集時,發射器處于邏輯空閑狀態。在此期間,必須傳輸空閑數據。空閑數據必須由數據字節0('h00),根據4.2.1.3節的規則進行擾亂,并根據4.2.1.1節的規則進行8b/10b編碼,與TLP和DLLP數據符號的擾亂和編碼方式相同。同樣,當接收器沒有接收任何包信息或特殊有序集時,接收器處于邏輯空閑狀態,并且應接收上述描述的空閑數據。 在傳輸空閑數據期間,必須繼續按照4.2.7節的規定傳輸SKP有序集。
對于以下規則,"放置"定義為發射器將符號放入鏈路的正確通道的要求。
- TLPs必須通過在TLP開始放置一個STP符號,在TLP結束放置一個END符號或EDB符號來幀定界(見圖4-5)。
- 一個正確形成的TLP在STP和END或EDB符號之間包含至少18個符號。如果接收到的序列在STP和END或EDB符號之間少于18個符號,接收器允許將其視為接收器錯誤。 如果檢查,這是一個與接收端口相關聯的報告錯誤(見第6.2節)。
- DLLPs必須通過在DLLP開始放置一個SDP符號,在DLLP結束放置一個END符號來幀定界(見圖4-6)。
- 邏輯空閑定義為一個或多個符號時間的時間段,在此期間沒有傳輸/接收信息:TLPs、DLLPs或任何類型的特殊符號。與電氣空閑不同,在邏輯空閑期間,空閑符號(00h)正在被傳輸和接收。
- 當發射器處于邏輯空閑狀態時,所有通道上必須傳輸邏輯空閑數據(00h)。 這根據4.2.1.3節的規則進行擾亂。
- 接收器必須忽略傳入的邏輯空閑數據,并且除了擾亂序列外,不得對任何特定數據模式有任何依賴。
- 對于大于x1的鏈路,當從邏輯空閑鏈路條件開始傳輸TLP時,必須將STP符號(代表TLP的開始)放置在通道0上。
- 對于大于x1的鏈路,當從邏輯空閑鏈路條件開始傳輸DLLP時,必須將SDP符號(代表DLLP的開始)放置在通道0上。
- STP符號放置在鏈路上的頻率不得超過每個符號時間一次。
- SDP符號放置在鏈路上的頻率不得超過每個符號時間一次。
- 只要滿足上述規則,就允許TLP和DLLP傳輸連續跟隨彼此。
- 在同一符號時間內,可以放置一個STP符號和一個SDP符號在鏈路上。
- 大于x4的鏈路可以在第4*N通道上放置STP和SDP符號,其中N是一個正整數。 例如,在x8鏈路上,STP和SDP符號可以放置在通道0和4;在x16鏈路上,STP和SDP符號可以放置在通道0、4、8或12。
- 對于N等于8或更大的xN鏈路,如果END或EDB符號被放置在通道K上,而K不等于N-1,并且通道K+1后面沒有STP或SDP符號(即,沒有TLP或DLLP立即跟隨),那么PAD符號必須被放置在通道K+1到通道N-1。
- 例如,在x8鏈路上,如果END或EDB被放置在通道3上,當后面沒有STP或SDP跟隨時,PAD必須被放置在通道4到7。
- EDB符號用于標記一個無效化TLP的結束。有關EDB使用的更多信息,請參見第3.6.2.1節。
- 接收器可以自行選擇檢查本節規則的違規情況。這些檢查是獨立的可選檢查(見第6.2.3.4節)。如果進行了檢查,違規被視為接收器錯誤,并且是與端口相關聯的報告錯誤(見第6.2節)。
4.2.1.3 數據擾碼
為了改善鏈路的電氣特性,通常會對數據進行擾亂。這涉及到使用線性反饋移位寄存器(LFSR)生成的模式與數據流進行異或(XOR)操作。在發射端,擾亂是在8b/10b編碼之前對字符應用的。在接收端,在8b/10b解碼之后對字符應用反擾亂。
在多通道鏈路上,擾亂功能可以使用一個或多個LFSR實現。當每個鏈路有多個發射LFSR時,這些LFSR必須協同工作,在每個LFSR中保持相同的同時(通道到通道輸出偏斜)值。當每個鏈路有多個接收LFSR時,這些LFSR也必須協同工作,在每個LFSR中保持相同的同時(通道到通道偏斜)值。無論它們如何實現,LFSR必須以通道為單位與數據交互,就好像鏈路內每個通道都有一個單獨的LFSR一樣。
LFSR在圖4-10中有圖形表示,擾亂或反擾亂是通過將8位(D0-D7)字符與LFSR的16位(D0-D15)輸出進行串行異或操作來執行的。LFSR的一個輸出,D15,與要處理的數據的D0進行異或。然后,LFSR和數據寄存器串行前進,重復D1到D7的輸出處理。數據異或后,LFSR前進。LFSR實現了多項式:
數據鏈路層用來通知物理層禁用擾亂的機制和/或接口是硬件定義實現的,并且超出了本規范的范圍。 數據擾亂規則如下:
- COM符號初始化LFSR。
- 除了SKP符號外,每個符號LFSR值前進八個串行移動。
- 所有數據符號(D代碼),除了有序集內(例如,TS1、TS2、EIEOS)、合規模式(見第4.2.8節)和修改后的合規模式(見第4.2.9節)之外,都被擾亂。
- 所有特殊符號(K代碼)都不被擾亂。
- 線性反饋移位寄存器(LFSR)的初始種子值(D0-D15)是FFFFh。當一個COM符號從發射端LFSR退出后,發射端的LFSR會被初始化。每當COM符號進入該鏈路任何通道上的接收端LFSR時,接收端的LFSR也會被初始化。
- 擾亂只能在配置結束時禁用(見第4.2.6.3.5節)。
- 對于回環從設備,擾亂不適用。
- 默認情況下,在檢測模式下擾亂始終是啟用的。
?