Loopback状态的作用是测试和故障隔离,SPEC中只指定Loopback的进入和退出,至于一些其他的细节取决于设计的实现。Loopback既可以在单独的Lane上进行,也可以在配置好的Link上进行。Loopback Master指的是发起Loopback请求的组件,Loopback Slave指的是回传数据的组件。
1 LinkUp=0b。
2 在该子状态下,Rx收到的TS1/2中的Link Number和Lane Number都会被忽略。
3 Loopback Master的要求如下:
(1) 如果Loopback.Entry是从Configuration.Linkwidth.Start进入的,确定Master支持的最高速率并且在任意的Lane上Rx连续接收的两个TS1中解析的速率也是该最高速率,这个时候Master会进入Loopback.Entry。如果当前的速率不是双方支持的最高速率,则:
(2)Tx发送Loopback bit=1的TS1。
(3)如果Tx发送的TS1的Compliance Receive bit置1,则在2ms后进入Loopback.Active。
(4)如果当前的速率切到了32GT/s并且在任意的Lane上发送了16个连续的带有Enhanced Link Behavior Control bits=01b的TS1,则进入 Recovery.Equalization状态。
(5)如果Loopback.Entry是从Recovery.Equalization进入并且被测试的Lane上收到了连续两个带有Loopback bit=1的TS1,则进入Loopback.Active状态。
(6)如果Tx发送的TS1的Compliance Receive bit为0并且特定实现的Lanes上收到了连续两个带有Loopback bit=1的TS1,则进入Loopback.Active状态。
注:如果速率改变了并且32.0GT/s的EQ没有做,在进入Loopback.Active状态之前,Master需要考虑Slave处于电气空闲状态的时间并且需要发送足够多的TS1给Slave去实现Symbol Lock或者Block Alignment。
(7)在小于100ms特定实现的超时后,则进入Loopback.Exit状态。
4 Loopback Slave的要求如下:
(1)如果Loopback.Entry是从Configuration.Linkwidth.Start进入的,确定Slave支持的最高速率并且从连续接收的两个TS1中解析的速率指示Slave进入该状态,如果当前的速率不是双方支持的最高速率,则:
(2)如果Loopback.Entry是从Configuration.Linkwidth.Start进入的,并且双方最高支持的速率为32GT/s,并且Tx发送的指示Slave进入该状态的TS1的Enhanced Link Behavior Control bits=01b,则进入Recovery.Equalization状态:
(3)如果Tx发送的指示Slave进入该状态的TS1的Compliance Receive bit=1,则进入Loopback.Active状态。
(4)如果上述三个条件都不满足,则Slave的Tx会发送Link Number和Lane Number为PAD的TS1。
1 Master必须发送有效的编码数据。Master不能发送EIOS除非退出Loopback状态。
2 如果transmit_modified_compliance_pattern_in_loopback设置为1,从Recovery.Equalization进入Loopback.Active的Slave必须在所有的Lane上除开测试的Lane(Lane under test)上发送Modified Compliance Pattern,否则这些Lane必须进入电气空闲状态。测试的Lane(Lane under test)需要符合下面Loopback Slave的行为。
3 Slave被要求去将接收到的数据以相应的Polarity(Polling状态下决定)重新发送出去,与此同时,会进行相应的时钟补偿:
(1)SKP可以在独立的Lane上实现增加或者减少,并不需要在所有的Lane上同步进行增加或者减少。
(2)Slave对接收到的编码数据不能进行更改(除开Polling状态下决定的Polarity Inversion),即使Slave收到的数据是无效的编码数据也不允许进行修改。
4 如果满足以下的其中一个条件,Slave的下一个状态是Loopback.Exit。
(1)如果PCIe上层指示进入Loopback.Exit或者在任意的Lane上收到了连续的4个EIOS。
(2)可选的:如果当前的速率为2.5GT/s并且收到了一个EIOS或者在任意的Lane上检测或推测出电气空闲状态。
(3)Slave必须可以在Slave接收EIOS的1ms时间内任意的Lane上检测到电气空闲状态。
5 如果PCIe上层指示进入Loopback.Exit,Master的下一个状态是Loopback.Exit。
1 对于仅仅支持2.5GT/s的Port,Loopback Master发送一个EIOS;对于支持速率大于2.5GT/s的Port,Loopback Master发送8个连续的EIOS;并且所有的Lanes进入电气空闲状态2ms。
(1)在发送完最后一个EIOS的时候,Loopback Master所有的Lanes必须在“TX-IDLE-SET-TO-IDLE”时间内转换到一个有效的电气空闲状态。
2 Loopback Slave所有的Lanes必须进入电气空闲状态2ms。
(1)在进入电气空闲状态之前,Loopback Slave必须将收到的所有数据进行回传。这个可以确保当Loopback Master看到EIOS时,将Loopback行为结束的标志传递给相应的发送逻辑和比较逻辑。
3 Loopback Master和Loopback Slave的下一个状态是Detect。
1 PCI Express® Base Specification Revision 5.0 Version 1.0
2 PCI Express Technology Comprehensive Guide to Generations 1.x, 2.x, 3.0