欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > PCIe Gen3 phy(编解码,token相关)

PCIe Gen3 phy(编解码,token相关)

2025/7/21 17:45:25 来源:https://blog.csdn.net/u012780083/article/details/148073847  浏览:    关键词:PCIe Gen3 phy(编解码,token相关)

注:内容大部分翻译来源:mindshare chapter 12;

在链路训练时,pcie 永远都会从gen1开始进行;在gen1 速率到达L0状态时,若此时capability中设置的max speed不是gen1则会进入到recovery状态接着跳到genX中。其中TS1 中symbol 4的bit7 speed_change一定会被置起。在recovery.rcvrlock 状态。

其中当gen5时有两个选项可以加快traning:

1. equalization bypass to highest rate:链路在gen1 L0时可以直接进行Gen5(highest rate)的训练,不需要经过gen3,gen4;

2. No equaliztion needed: 当支持时,从gen5降到gen4或gen3时不需要从新进行eq训练。

Gen3主要改变:新的编码方式,以及复杂的eq训练(sophisticated signal equalization mode)

128b/130b 编码

8b/10b:对齐K码的方式进行编码和解码;

新的编码方式以16B为一组。每个通道看到的还是8bit码流。

sync file用于表示是data还是order set;rx端如果是order set的话必须在所有通道上同时传输。

复杂信号的均衡

相比于gen1,gen2 固定的de-emphasis;gen3 可以动态调整(present)

8Gbps,编码

低位先发送;

block alignment

通过发送EIOS(electric order set)来进行块的锁定。

order set block

注:gen1,gen2,gen3中都称为order set ;但是gen1,gen2 是10bit格式,用K码来表示;gen3中是每个ordered set16个symbol;

gen3 ordered set共有以下几种:

1.SOS,skip ordered set;用于时钟补偿;

2. EIOS- electrical idle ordered set;用来进入 electrical idle state;

3. EIOS,退出elecidle ;gen3 下block对齐。

4. TS1, 

5 TS2,

6. FTS :用于退出L0s(NFTS)

ordered set 在所有lane上必须同时出现(rx,tx lane)

这个长度规则的一个例外是 SOS(SKP 有序集),它允许由时钟补偿逻辑(例如与链路中继器相关的逻辑)以每组四个 SKP 符号的方式添加或移除。因此,SOS 的合法长度可以是 8、12、16、20 或 24 字节。

Five types of Data structures (called Framing Tokens) are also used within a Data Block.五种数据类型的结构成为信令(tokens)。STP,SDP,IDLE,EDS,EDB;

data+skp ordered set fram;

(此处mindshare 的gen3 fram 和spec有出入,以gen5 spec为主)

一旦两个端口都进入 Recovery 状态,从进入到完成整个恢复的往返时间预计不超过 1 微秒(1µs)

TX 编码规则:

STP之后紧跟这tlp包内容。如果是nullified 数据包(结尾应该是EDB,且lengh 字段全为0)。

同理SDP之后紧跟dllp包内容。

数据流中发送一个 SOS(SKP 有序集) 时,遵循以下流程:

  1. 在当前数据块(Data Block)的最后一个 dword(32 位字)发送一个 EDS Token(End of Data Stream 标记符号)。

  2. 紧接着发送一个 SOS,作为下一个有序集块(Ordered Set Block)。

  3. 立即在 SOS 后发送一个新的数据块(Data Block)。数据流将从这个数据块的第一个 Symbol 重新开始。

  4. 如果要插入多个 SOS它们不能像早期 PCIe 代那样连续发送。每个 SOS 前必须先有一个以 EDS Token 结尾的数据块。

    • 该数据块可以包含 TLP、DLLP 或 IDL 等内容

对于多lane情况链路中发送了IDL码,那么stp或sdp必须在lane0中出现。

Receiver Framing Requirements

收到 STP(Start of TLP)Token 时:
  • 必须检查:

    • CRC 和奇偶校验(Frame Parity)字段

    • 注意:有 Framing Error 的 STP Token 不算作 TLP 的一部分(报错时要独立处理)。

  • 接收到 TLP 的最后一个双字(DW)后:

    • 紧随其后的 Symbol 是下一个要处理的 Token;

    • 接收端必须检查它是否是一个 EDB(End of Data Block)Token,用于标记该 TLP 已被 nullified(无效化)。

  • 可选检查项(实现可选):

    • 如果 TLP 长度字段为 0,则为 Framing Error

    • 如果同一个 Symbol Time 内收到多个 STP Token,也应视为 Framing Error(若实现该检查)。


收到 EDB(End of Data Bad)Token 时:
  • 接收器在检测到 第一个 EDB 符号时(或随后任何部分符号)必须立即通知链路层(Link Layer)

  • 如果 Token 中有任意 Symbol 不是合法的 EDB Symbol,判定为 Framing Error

  • 只有在一个 TLP 之后立即出现 EDB Token 是合法的,其他位置使用 EDB 都是 Framing Error


收到 EDS(End of Stream)Token 作为数据块最后一个双字(DW)时:
  • 接收器必须停止当前数据流处理

  • 接下来只允许收到以下三种 Ordered Set 中之一:

    • SKP

    • EIOS

    • EIEOS
      否则为 Framing Error

• 当接收到一个 IDL(空闲)token时:
— 下一个token可以在任意双字(DW)对齐的通道(Lane)上开始,前提是该通道在 IDL 令牌之后。对于 x4 或更窄的链路来说,这意味着下一个令牌只能在下一个符号时间(Symbol Time)的 Lane 0 上开始。而对于更宽的链路,例如 x16 链路,下一个令牌可以在当前符号时间的 Lane 0、4、8 或 12 上开始。

— 在同一个符号时间内,唯一可能出现在 IDL 令牌之后的令牌是另一个 IDL 或 EDS(端数据流)令牌。

• 在处理数据流期间,接收器将以下情况视为帧错误(Framing Errors):
— 一个有序集(Ordered Set)紧跟在 SDS(开始数据流)之后;
— 一个具有非法同步头(Sync Header,值为 11b 或 00b)的数据块(Block);这类错误可以选择性地在 Lane 错误状态寄存器中报告;
— 在任一通道上接收到一个有序集块(Ordered Set Block),但在前一个块中未收到 EDS 令牌;
— 一个数据块紧跟在前一个块中的 EDS 令牌之后;
— (可选)验证所有通道接收到的有序集是否一致。

Recovery from Framing Errors

在AER中使能receiver error status;


 


 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词