当前位置: 首页 > news >正文

PCIE Order Set

1 Training Sequence

        Training Sequence是由Order Set(OS) 组成,它们主要是用于bit aligment,symbol aligment,交换物理层的参数。当data_rate = 2.5GT or 5GT 它们不会被扰码(scramble),当date_rate = 8GT or higher 根据特殊的规则决定是否对Order Set 进行扰码。

        LTSSM中使用最多的训练序列为TS1 TS2,它们一般都是连续进行发送,只可以被SKP**以及 **EIOS(2.5GT除外,因为其不支持低功耗模式)打断。协议中对于“连续”的描述是:

  1. 对于使用8b/10b 的TS1 or TS2,symbol 6与前一个symbol 6是一致;
  2. 对于使用128/130b编码的TS1 or TS2, symbol 6~9与前几个symbol 6 -9是相同的,对于symbol 中Reserved field 需要按照如下的规则处理。发送时Reserved 字段全部填充为0,对于接收机必须对reserved bit进行奇偶性计算(parity computation)(如果reserved bit 进行了奇偶性计算), 如果明确指出相邻的symbol中所有的Reserved bit必须保持相同,则may 需要直接比较前后symbol中的reserved bit。
  3. 此外对于**128b/130b**的编解码每条lane能偶独立跟踪各自的DC Balance (dc balance指的是1 和 0 之间的差距),最大的differenct 为511,达到最大值之后会保持在511。

        在两种情况下Dc Balance differentce会被 set to 0:

  1.  发送机进入电气空闲状态[electrical idle]
  2. 发送机在发送EIEOS退出电气空闲后发送了Data BLock。

        每发送8个TS1 or TS2 OS,发送机必须评估running DC Balance并设置TS 中的DC Balance Symbol ,设置的算法如下:如果需要降低对方发送 "1“ ,需要set 20h for symbol14 and 08h for symbol 15;如果需要降低发送”0“, 需要set DFh for symbol 14 and F7h symbol 15。

  1. runing dc balance > 31 DC Balance (symbol 14 and symbol 15)  are not scrambld.
  2. runing dc balance > 15 symbol 14  TS1 Identifier Symbol  is scarmbled , DC Balance ( symbol 15)  are not scrambld.
  3. else  symbol 14   and 15 TS1 Identifier Symbol  is scarmbled .

note 任何DC Balance symbol(symbol 14、15) 禁止进行扰码

 2 Electrical Idle

        在发送机进入电气空闲(Electrical Idle) 之前,它必须发送Electrical Idle Order Set Sequence(EISOQ)。EIOSQ 是1个EIOS symbol  in data_rate 2.5T 8GT 16GT,   2个EIOS symbol in data_rate 5GT。在8b/10b编码下EIOS = K28.5(COM)+ 3个K28.3(IDL) Symbol,发送时需要发送所有的4个symbol,在接受时只要收到 COM+2个IDL便认为识别到了一个EIOS Symbol。在128b/130b编码条件下EIOS 是一个order set block,正常发送时需要发送完整的symbol(但是如果在它发送接收进入电气空闲状态,个人理解它指的是最有一个EIOS,此时可以只发送EIOS 中的symbol 0-14),接收时如果一个OS block 的symbol 0-3 符合EIOS的定义则认为收到了一个EIOS 序列。

        在发送Electrical IDLE OS 最后一个symbol ,发送机必须处于电气空闲状态。

当使用8b/10b编码时并且data_rate = 5GT ,EIEOS还可以被用作如下场景中:

  1.  在进入Configuration.Linkwidht.start的第一个TS1 OS之前;
  2. 在进入Recovery.Lock的第一个TS1 OS之前;
  3. 每隔32个TS1 or  TS2 OS 需要发送一个EIOS(Configuration.Linkwidht.start  Recovery.Lock Recovery.RcvrCfg );

当使用128b/130b编码时EIEOS也可以被用作Block Alignment,也可以用作在如下场景中:

  1.  在进入Configuration.Linkwidht.start的第一个TS1 OS之前;
  2.  在进入Recovery.Lock的第一个TS1 OS之前;
  3. 在Data Stream 发送结束时候,如果不发送EIOS 也不进入Recovery.RcvrLock 则需要在EDS Frame Token 之后发送一个EIEOS;
  4. 每隔32个TS1 or  TS2 OS 需要发送一个EIOS ; 
  5. 如果Reset EIEOS Interval Count Bit =1 则避免将TS打断,则在Recovery.Equalizatoin 状态需要每隔65536个 TS1 OS 发送后需要发送一个EIOS ; 
  6. 它是FTS OS, Compliance Pattern,or Modified Compliance pattern中需要使用。

3 Fast Training Sequence

        FTS用于从L0s(低功耗)  退出至L0时用于bit and symbol锁定的序列,它被Receiver用于检查测是否退出电气空闲状态,并对齐Receiver 's  bit and symbol 电路应应对后续到来的数据

        当速度是2.5GT or 5 GT时FTS = K28.5 + 3个K28.1,N_FTS(number of FTSs)是组件可以请求对端设备需要发送FTSs 的最大数量(max is 255)。 如果data_rate = 5GT, 在发送第一个FTS之前,会先发送4个EIE symbol (主要是帮助Receiver 检测到 退出电气空闲) ,规范允许至多发送8个EIE symbol (帮助恢复发送机pin上的电压可以在允许的时间内达到一个可接收的水平 )。如果Extended Sync Bit = 1 则需要发送4096个FTS,提供给link 监控工具足够的时间实现完成bit frame 同步。  SKP必须FTSs之间发送,但是在第一个N_FTS FTSs 不可以发送中间不可以发送FTS,主要是为了维持两端设备间的clk 频偏,在最后一个FTS后需要发送一个SKP OS

Note:协议规范也允许最后发送2个SKP OS,一个用于指示FTS已经发送完成,另一个用于补偿频偏。

        当速度是8GT or higher时:N_FTS(number of FTSs)是组件可以请求对端设备需要发送FTSs 的最大数量(max is 255)。第一个FTS 是130 bit的unscrambled 的Order Set Block,在退出至L0s,发送机需要发送first 1个EIEOS帮助Receiver 识别到退出电气空闲,随后发送N_FTS个FTSs (如果Extended Sync Bit = 1,N_FTS=4096),FTS目的主要是为了完成bit or symbol锁定。规范要求每隔32个FTS则需要发送一个EIEOS,当last FTS 发送结束后需要发送 1个EIEOS帮助receiver 完成block alignment。当最后一个EIEOS发送结束后,需要发送一个SDS OS,它是用于帮助接收机完成去偏移和指示link partner 跳转到Data stream,SDS OS之后必须发送Data Block。

Note:协议允许在最后一个FTS后发送2个EIEOS,前提是N_FTS是32的整数倍。

需要注意的是N_FTS字段的值可以通过Recovery 阶段更新new value,但同时也可以通过上层软件通过Common Clock Configuration bit进行修改。

相关文章:

  • java spring cloud 企业电子招标采购系统源码:营造全面规范安全的电子招投标环境,促进招投标市场健康可持续发展
  • 大宇、固特、希亦超声波清洗机实测,哪款清洗效果好?一篇掌握
  • Laravel Octane 和 Swoole 协程的使用分析二
  • Unity 向量计算、欧拉角与四元数转换、输出文本、告警、错误、修改时间、定时器、路径、
  • SQL server创建数据库
  • leetcode--接雨水(双指针法,动态规划,单调栈)
  • 【AI Agent系列】【MetaGPT多智能体学习】3. 开发一个简单的多智能体系统,兼看MetaGPT多智能体运行机制
  • python66-Python的循环之常用工具函数
  • pyspark(一) DataFrame结合jupyter入门
  • Redis内存淘汰策略详解
  • Java面试题总结6
  • 【GPTs分享】每日GPTs分享之Image Generator Tool
  • 加密和签名的区别及应用场景
  • 详解字符串函数<string.h>(上)
  • 详解IP安全:IPSec协议簇 | AH协议 | ESP协议 | IKE协议
  • 回溯 Leetcode 47 全排列II
  • 鸿蒙ArkTs开发WebView问题总结
  • ChatGPT学习第三周
  • SpringBoot 自定义映射规则resultMap association一对一
  • Nacos配置
  • 新闻1+1丨应对外部冲击,中央政治局会议释放哪些信号?
  • 调查丨当节气出现“时差”,陕西的果农们经历着什么?
  • 《不眠之夜》上演8年推出特别版,多业态联动形成戏剧经济带
  • 毕节两兄弟摘马蜂窝致路人被蜇去世,涉嫌过失致人死亡罪被公诉
  • 为什么猛起身会头晕?你的身体在发出这个警报
  • 北京市交通委通报顺平路潮白河大桥事故直接原因