1.FTS (Fast Training Sequence)
作用:快速训练序列(FTS)在从L0s过渡到L0时用于位和符号锁定。Receiver接收到FTS会退出电气空闲状态,并且完成bit and Symbol lock。
At 2.5 GT/s and 5.0 GT/s data rates:
一个FTS由一个K28.5(COM)符号后跟三个K28.1符号组成。如果数据速率是5.0 GT/s,在传输第一个FTS之前,会先传输四个连续的EIE(Electrical Idle Exit,即K28.7,具有低频分量的符号,用于receiver退出电气空闲状态)符号。receiver通过这些符号识别到电气空闲状态的退出。需要注意的是,在传输第一个FTS之前,传输的EIE字符数量不能超过8个。当扩展同步位(Extended Synch bit)被设置成1时,必须发送4096个FTSs,以便为外部链路监控工具提供足够的时间来实现位和帧同步。
At 8.0 GT/s and above data rates:
一个FTS是一个 130-bit unscrambled Ordered Set Block, 如图Table 4-17 。一个PCIe组件可以请求的最大FTS(N_FTS)数量是255。PCIe组件允许在不同速度下提示需要不同的N_FTS。在退出L0s状态时,transmitter首先发送一个EIEOSQ,EIEOSQ的低频特性将帮助receiver退出电气空闲状态。在发送第一个EIEOSQ之后,transmitter必须发送所需数量的FTS(当Extended Synch bit of the Link Control register数值为1时,所需FTS数量为4096;否则为N_FTS),并且在每32个FTS之后发送一个EIEOSQ。FTS序列将使receiver能够完成位锁定。当扩展同步位(Extended Synch bit)被设置成1时,必须在FTSs和EIEOSQ之间插入并传输SKP有序集,以满足时钟补偿(Clock Tolerance Compensation)要求(见Section 4.2.7 )。
如果N_FTS等于零,则不发送FTS有序集。如果N_FTS不等于零,FTS sequence的最后一个FTS Ordered Set 后面会跟一个EIEOSQ,目的是帮助receiver获得块对齐(Block alignment)。
EIEOS能复位transmitter和Receiver的扰码器(scrambler )。在最后一个EIEOSQ之后,会传输一个SDS有序集,以帮助receiver 完成去偏移(perform de-skew),并指示从有序集到数据流的过渡。在传输SDS有序集之后,必须传输一个数据块(Data Block )。
1.1.EIE字符
如表格B-2所示,EIE的Current RD-拥有连续5个1,而Current RD+拥有连续5个0,连续多个EIE一起送,体现在传输通道上的现象是信号频率较低。
1.2.Extended Synch
Extended Synch为1会强制PCIe设备的在退出L0s状态时、在部分recovery状态中发送更多数量的Ordered Sets ,此配置为外部设备(例如,PCIe逻辑分析仪)提供监控Link时间,以便在Link进入L0状态并恢复通信之前实现位和符号锁定。简单来说就是通过发送更多的Ordered Sets,使得外部设备能够提前准备好,从而更好的监控链路行为,防止监控时丢失部分数据。
2.ltssm之L0s
3.参考文档
PCI Express Base Specification Revision 5.0, Version 1.0
作者:IC小鸽
文章来源:IC小鸽
推荐阅读
- vim进阶:200个终身受益的命令
- 芯片开发必备工具 | 正则表达式(RegularExpression)使用指南
- 设计模式在芯片验证中的应用——状态
- PCIe Gen4 ltssm协商过程
- SystemVerilog/Verilog中的各种延迟模型
更多IC设计干货请关注IC设计专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。