pcie phy電氣層(PCS)詳解gen1、2 (rx)

注:推薦大家查看英文原版,筆者大部分內容也為翻譯;

S IP:

1. pcie供電:

Vph: 1.2,1.5, 1.8V high voltage IO supply;

Vp/VptxX/Vpdig :analog supply, 0.9V;

vddcore: core supply; 0.75~0.9V;

其中Vddcore和Vp在進行upf時會通過power switch對外部pin進行控制;

一,. upcs層 支持的feature:

1, 支持original PIPE結構;

2. 支持serdes 結構;

3.支持pclk方式: pclk as phy output/input; 支持external pll;

4. 支持low pin count interface,移除那些對timing時序較低的信號線,將他們挪到message bus register中;

5. 標準的pipe接口連接mac層;

6. pcie 8b/10b以及128b/130b編解碼;

7. 傳輸PIPE 相關的power state(P0,P1,等)到phy層,并維持power相關的sequence;

8. 時鐘補償 elastic buffer (original pipe結構)

9. error report

10. 可選的bif & aggre 結構

11. 最多支持連接x16 lane;

Original PIPE:在檢測到EIOS之后,phy_rxX_data_en; 被拉低;lane CDR停止轉換;使用elastic buffer模式,來補償lane skew;

serdes pipe 結構:

數據move 在controller中實現;pipeline 可選用于timing 收斂。

Mindshare 部分翻譯

整體框圖;

差分對接收:

RX 時鐘恢復:

gen1,2 沒有CDR結構;使用的是RX本地PLL進行恢復,PLL時鐘和tx數據流同頻(2.5或者5Ghz)。并且將RX數據進行解串。解串數據10bit為一組。解析出COM碼。

接收bit鎖定:在TX 8b/10b編碼中,已經包含了頻率信息。(CRD)當RX時鐘和TX時鐘的頻率同步了,可以被稱為“bit lock”

在低功耗下(l0s或L1),為了避免數據包丟失造成bit lock 失鎖。所以TX在進入到低功耗之前要發送EIOS碼告知RX關閉其輸入(de-gate)。

Regaining Bit lock:重新鎖定

當TX 從L0s狀態恢復時,會發送特定數量的FTS(S IP 默認CX_NFTS=200)接收端會從新獲取bit和symbol lock。從L1恢復和L0s情況完全不同。

symbol lock:

COM碼有兩種編碼方式:

所有order set 均不會進行scramble 在tx端。只要檢測到了COM之后就被稱為“symbol lock”

RX 端時鐘補償

elastic buffer: 輸入recovery clock;輸出receiver clock;當輸入快輸出慢時會刪除SKP,反之亦然;elastic buffer有兩種方式:empty buffer,half-empty buffer。TX周期性的發送SKIP碼流就是為了消除skew。他們在傳到下一個層dllp之前會被完全丟棄。

當在1180到1538 個symbol 周期內發送SKIP order set。一個symbol就是10bit 碼流。

SKIP最大間隔:

lane到lane之間的deskew

由于多種原因(pcb布線等)會找出RX端存在lane之間的skew。

ordered set 幫助deskew

所有的lane在相同時間檢測到COM碼,用于deskew;超前檢測到COM碼會加入延遲。

RX lane2lane de-skew capability

放在elastic buffer之后;優點:到達時間差現在被本地時鐘同步為符號時間。可以通過延遲早到的COM適當符號時鐘來使其與晚到的COM對齊。接收器允許的最大時鐘偏移是時鐘周期的整數倍。

(注:官方spec中只提及了Gen1 允許的最大de-skew,其余未提及,gen2~gen5應該都是4 clocks最大,正好是一個SKP order set有續集時間)

注:1. 為什么8b/10b decode要放在elastic buffer之后?

1)時鐘域隔離;

elastic buffer就是一個跨時鐘與fifo;所以必須先緩存并穩定數據,然后再到本地時鐘域解碼。確保穩定性。

2)保持碼流完整性;

8b/10b 編碼保證了傳輸的直流平衡和足夠的邊沿用于時鐘恢復。CDR用的是10bit編碼后的數據來鎖相。先解碼可能會丟失時鐘邊沿信息。

3) 鏈路訓練需要使用原始10b數據

鏈路訓練過程中檢測特殊字符K碼。都是10bit編碼;

4) 更尬獲得處理碼流skew

8b/10b解碼

通過查找表來解碼,兩個查找表。D碼和K碼。

10b碼流disparity計算。當symbol lock之后開始指定初始的disparity。

如果一個符號(Symbol)中的兩位發生錯誤翻轉,該錯誤可能不會被察覺,而該符號仍可能被解碼為一個有效的8位字符。這樣的錯誤在物理層是無法被檢測到的。

descrambler(解碼器)

在8b/10b之后是解碼器;只對Data數據進行解碼,K碼不進行解碼。當一個 COM 字符進入解擾器時,它會將 LFSR(線性反饋移位寄存器)的值重新初始化為 FFFFh。

disable:

If the descrambler receives at least two TS1/TS2 ordered sets with
the “disable scrambling” bit set on all of its configured Lanes, it disables the
descrambler.當收到至少兩個TS序列中包含了disable scrambing bit時,disable該功能。

Byte-unstrip

un-striping: 去交織;在接受端將多條lane中的字符從新按原始順序合并成串行數據流的過程。

TX strip:tx交織的實現;

將一個數據包中的字節分發到多個通道(lanes)中,形成并行發送的結構。例如在 x8 鏈路中,第1個字節發到 Lane 0,第2個發到 Lane 1,以此類推,循環分配。Round-Robin 字節分發。但是要注意STP/SDP/END symbol需要有一些特定的規則。

RX buffer

RX buffer 保存TLP和DLLP的數據(header+data)。

物理層錯誤處理

內容不多,放到一起了。

S IP中通過CR端口或者Jtag 端口可以讀到Phy內部的所有reg;用于判定phy status。

必須上報錯誤:

8b/10b decode error: disparity, illegal symbol;

S IP中有pipe_rxX_rec_ovrd_8b10b_decerr 信號;用于指示當收到error時應該如何處理。

可選的error checking;

? Loss of Symbol lock (see “Achieving Symbol Lock” on page 396)
? Elastic Buffer overflow or underflow
? Lane deskew errors (see “Lane‐to‐Lane Skew” on page 398)
? Packets inconsistent with format rules
Response of Data Link Layer to Receiver Error

物理層像dllp層報告一個rx error之后會自動出發dllp的錯誤重傳機制。回復nak,retry buffer輸出當前tlp報文。當使能了AER時該錯誤會報告出來,一個correctable error;

Active State Power Management

phy + controller 配合支持pcie 低功耗。(低功耗內容,可能會開一個專題)

Link Training and Initialization

后續會開一個專題。
?


?


?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/906210.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/906210.shtml
英文地址,請注明出處:http://en.pswp.cn/news/906210.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java—— File詳解

說明 File對象就表示一個路徑,可以是文件的路徑、也可以是文件夾的路徑 這個路徑可以是存在的,也允許是不存在的 獲取File對象 方法名稱說明public File(String pathname)根據文件路徑創建文件對象public File(String parent,String child)根據父路徑名…

【數字圖像處理】半開卷復習提綱

1:要求 2張A4紙以內,正反面均可寫 (不過博主由于墨水浸到背面了,采用了把2張單面通過雙面膠粘起來的方法,結果考前半個小時都在用這個難用的雙面膠。。。) 2:提綱內容 3:提示 考的…

Neovim 如何安裝和配置縮進標識插件 indent-blankline.nvim

Neovim 0.9 以?lazy.nvim?為核心的現代化配置指南 一次性搞定插件管理、UI 優化與高效行跳轉 適用平臺:Linux/macOS/WSL/Windows (Neovim ≥?0.9) 目錄 為什么選?lazy.nvim安裝與初始化 2.1 創建配置目錄 2.2 克隆?lazy.nvi…

VulnHub | Breach - 1

🌟 關注這個靶場的其它相關筆記:[網安靶場] 紅隊綜合滲透靶場 —— VulnHub 靶場筆記合集 Breach: 1 ~ VulnHubBreach: 1, made by mrb3n. Download & walkthrough links are available.https://vulnhub.com/entry/breach-1,152/ 0x01:…

城市綜合管廊監測與維護一體化解決方案

一、 方案概述 城市綜合管廊監測主要源于現代城市對地下管線管理的迫切需求。隨著城市化進程的加快,地下管線作為城市的“生命線”,其重要性日益凸顯。傳統的地下管線管理方式存在分散、低效、易產生信息孤島和管理盲區等問題,已無法滿足現代…

【iOS】alloc的實際流程

目錄 前言 為什么不按源碼流程調用? alloc的調用流程 前言 在之前的博客中我們有學習到過alloc的底層原理,沿著源碼一步步找到了alloc的調用鏈——alloc—>_objc_rootAlloc—>callAlloc—>_objc_rootAllocWithZone—>_class_createInstan…

MySQL 故障排查與生產環境優化

目錄 一、前置知識點 MySQL的運行原理 1. 客戶端連接 2. SQL 解析與優化 3. 存儲引擎處理 4. 日志與持久化 二、MySQL 單實例故障排查 (1)故障現象1 (2)故障現象2 (3)故障現象3 (4&am…

C++學習:六個月從基礎到就業——C++20:模塊(Modules)與其他特性

C學習:六個月從基礎到就業——C20:模塊(Modules)與其他特性 本文是我C學習之旅系列的第五十三篇技術文章,也是第三階段"現代C特性"的第十五篇,深入探討C20引入的模塊(Modules)系統及其他重要特性。查看完整系列目錄了解…

Vue百日學習計劃Day36-42天詳細計劃-Gemini版

總目標: 在 Day 36-42 理解組件化開發的思想,熟練掌握 Vue 組件的注冊、Props、Events、v-model、Slots、Provide/Inject 等核心概念和實踐,能夠構建可復用和易于維護的組件結構。 所需資源: Vue 3 官方文檔 (組件基礎): https://cn.vuejs.org/guide/es…

深入解析Spring Boot與Kafka集成:構建高效消息驅動微服務

深入解析Spring Boot與Kafka集成:構建高效消息驅動微服務 引言 在現代微服務架構中,消息隊列扮演著至關重要的角色,而Apache Kafka憑借其高吞吐量、低延遲和可擴展性,成為了許多企業的首選。本文將詳細介紹如何在Spring Boot應用…

谷歌 NotebookLM 即將推出 Sparks 視頻概覽:Gemini 與 Deep Research 加持,可生成 1 - 3 分鐘 AI 視頻

近期,谷歌旗下的 NotebookLM 即將推出一項令人矚目的新功能 ——Sparks 視頻概覽。這一功能借助 Gemini 與 Deep Research 的強大能力,能夠生成 1 - 3 分鐘的 AI 視頻,為用戶帶來全新的內容創作與信息獲取體驗。 NotebookLM:AI 筆…

第十六屆藍橋杯復盤

文章目錄 1.數位倍數2.IPv63.變換數組4.最大數字5.小說6.01串7.甘蔗8.原料采購 省賽過去一段時間了,現在復盤下,省賽報完名后一直沒準備所以沒打算參賽,直到比賽前兩天才決定參加,賽前兩天匆匆忙忙下載安裝了比賽要用的編譯器ecli…

Manus AI 突破多語言手寫識別技術壁壘:創新架構、算法與應用解析

在人工智能領域,手寫識別技術作為連接人類自然書寫與數字世界的橋梁,一直備受關注。然而,多語言手寫識別面臨諸多技術挑戰,如語言多樣性、書寫風格差異、數據稀缺性等。Manus AI 作為該領域的領軍者,通過一系列創新技術…

25考研經驗貼(11408)

聲明:以下內容都僅代表個人觀點 數學一(130) 25考研數學一難度介紹:今年數學一整體不難,尤其是選填部分,大題的二型線面和概率論大題個人感覺比較奇怪,其他大題還是比較容易的。.26如何準備&a…

嵌入式軟件--stm32 DAY 6 USART串口通訊(下)

1.寄存器輪詢_收發字符串 通過寄存器輪詢方式實現了收發單個字節之后,我們趁熱打鐵,爭上游,進階到字符串。字符串就是多個字符。很明顯可以循環收發單個字節實現。 然后就是接收字符串。如果接受單個字符的函數放在while里,它也可…

QT使用QXlsx讀取excel表格中的圖片

前言 讀取excel表格中的圖片的需求比較小眾,QXlsx可以操作excel文檔,進行圖片讀取、插入操作,本文主要分享單獨提取圖片和遍歷表格提取文字和圖片。 源碼下載 github 開發環境準備 把下載的代碼中的QXlsx目錄,整個拷貝到所創建…

抽獎相關功能測試思路

1. 抽獎系統功能測試用例設計(登錄 每日3次 中獎40% 道具兌換碼) ? 功能點分析 必須登錄后才能抽獎每天最多抽獎3次抽獎有 40% 概率中獎中獎返回兌換碼 ? 測試用例設計 編號 用例描述 前置條件 操作 預期結果 TC01 未登錄時抽獎 未登錄 …

Unity editor文件數UI(支持勾選框)

unity editor文件數(支持勾選框) 使用的時候new一個box即可 using Sirenix.OdinInspector; using Sirenix.OdinInspector.Editor; using System; using System.Collections; using System.Collections.Generic; using UnityEngine;[Serializable] publ…

RabbitMQ通信模式(Simplest)Python示例

RabbitMQ通信模式-Python示例 0.RabbitMQ官網通信模式1.Simplest(簡單)模式1.1 發送端1.2 接收端 0.RabbitMQ官網通信模式 1.Simplest(簡單)模式 1.1 發送端 # -*- coding: utf-8 -*- """ Author: xxx date: 2025/5/19 11:30 Description: Simaple簡單模…

隨筆20250519 Async+ThreadPoolTaskExecutor?定義線程池進階實戰

1.ThreadPoolTaskExecutor線程池 有哪?個重要參數, 什么時候會創建線程 1.核心綫程數 查看核心綫程數目是否已經滿,未滿 創建一條綫程 執行任務,已滿負責執行第二部 2.阻塞隊列 查看阻塞隊列是否已經滿,未滿將任務加入阻塞隊列&…