本文为对PCIE协议的翻译,一方面是为了鞭策自己完成协议学习,一方面是为了让大家检查我理解不对的地方。这样的翻译不确定直接翻译会不会导致侵权,如涉及侵权,请联系我删除
如果是从Recovery.RcvrLock进入此状态,发送端在所有配置的Lanes上发送TS0或TS1,如表4-51所示,其中使用离开Configuration后设置的相同Link和Lane号。接收方必须只有当它在该通道中获得块对齐后、才会认为接收了任何TS1或TS0有序集。
如果从Loopback.Entry进入此状态:
- 发送端在Detect期间探测到接收端的所有Lanes上发送TS0或TS1,如表4-51所述,其中使用Loopback.Entry中定义的Link number和Lane number
- 被测通道是唯一参与均衡过程的通道。
- 非被测通道不得参与均衡过程,并且允许忽略它们收到的任何内容。非被测通道必须将其发送器预设值设置为P4/Q0。未被测试的通道的唯一目的是产生Loopback.Active状态中所需的噪声。
lane必须发送正确类型的有序集(TS0 vs TS1),并检查正确有序集(TS0 vs TS1)的接收,根据§表4-51,在Recovery.Equalization中任何提及TS0/TS1的地方。
表4-51 在不同的阶段使用TS0或TS1
Current Data Rate / Port | Phase 0 / Phase 1 | Phase 2 | Phase 3 |
---|---|---|---|
8.0 GT/s, 16.0 GT/s, or 32.0 GT/s;Upstream/Downstream Lanes | TS1 | TS1 | TS1 |
64.0 GT/s;Downstream Lanes | TS0 | TS0 followed by TS1 | TS1 |
64.0 GT/s;Upstream Lanes | TS0 | TS0 | TS0 followed by TS1 |
实现注意:
TS0到TS1的转换
所有TS0到TS1的转换都是预期的,并由端口发起,以便其接收端为NRZ到PAM4的转换做好准备。
第一个转变发生在下行通道进入阶段2时。下游通道发送EC=00b的TS0,直到他们的接收器达到1E-4的BER,然后他们发送EC=01b。然后他们只需要等待上行端口发生EC=01b的转换。当上游端口发送EC=01b时,其应保证在下游端口已经获得了1E-4目标的BER后的固定时间内完成该转换(EC=00b向EC=01b的转换)。
另一个转换发生在处于阶段3的上游通道,当上游端口接收EC=11b的时候。由于下游端口发送EC=11b,因此它期待NRZ到PAM4的转换。
我们还为Retimer提供了在阶段0和阶段1期间请求扩展EQ的规定,以实现64.0 GT/s的均衡。
4.2.7.4.2.1 Downstream Lanes
进入该子状态后:
- 当前阶段为Phase1
- 如果运行速率是8.0 GT/s:
- Link Status 2 Register中的Equalization 8.0 GT/s Phase 1 Successful、Equalization 8.0 GT/s Phase 2 Successful、Equalization 8.0 GT/s Phase 3 Successful、Link Equalization Request 8.0 GT/s和Equalization 8.0 GT/s Complete位,以及Link Control 3 Register中的Perform Equalization bit都设置为0b。
- 变量equalization_done_8GT_data_rate设为1b。- 如果运行速率是16.0 GT/s:
- 16.0 GT/s Status Register中的Equalization 16.0 GT/s Phase 1 Successful、Equalization 16.0 GT/s Phase 2 Successful、Equalization 16.0 GT/s Phase 3 Successful、Link Equalization Request 16.0 GT/s和Equalization 16.0 GT/s Complete bits,以及Link Control 3 Register中的Perform Equalization bit都设置为0b。
- 变量equalization_done_16GT_data_rate设为1b。
- 如果运行速率是32.0 GT/s:
- 32.0 GT/s Status Register中的Equalization 32.0 GT/s Phase 1 Successful、Equalization 32.0 GT/s Phase 2 Successful、Equalization 32.0 GT/s Phase 3 Successful、Link Equalization Request 32.0 GT/s和Equalization 32.0 GT/s Complete bits,以及Link Control 3 Register中的Perform Equalization bit都设置为0b。
- 变量equalization_done_32GT_data_rate设为1b。
- 如果运行速率是64.0 GT/s:
- 64.0 GT/s Status Register中的Equalization 64.0 GT/s Phase 1 Successful、Equalization 64.0 GT/s Phase 2 Successful、Equalization 64.0 GT/s Phase 3 Successful、Link Equalization Request 64.0 GT/s和Equalization 64.0 GT/s Complete bits,以及Link Control 3 Register中的Perform Equalization bit都设置为0b。
- 变量equalization_done_64GT_data_rate设为1b。
- 如果运行速率是16.0 GT/s:
- 如果运行速率是8.0 GT/s:
- 变量start_equalization_w_preset设为0b。
4.2.7.4.2.1.1 Phase 1 of Transmitter Equalization
- 发送端发送TS0/TS1,其使用的发送端预设设置为当前的数据运行速率。在TS0/TS1中,EC字段设置为01b。对于TS0,EC字段最初设置为00b。在收到两个连续的TS0、且其中Retimer Equalization Extend bit设为0b后,EC字段设置为01b。每个通道的Transmitter Preset bits设置为它在当前速率下相应的Transmitter preset setting。将FS和LF字段设置为适当的值。如果发送的是TS1,Pre-cursor系数、Cursor系数和Post-cursor系数字段设置为该lane的Transmitter Preset位相应的值。对于每条已配置的Lane,其Transmitter preset settings,必须按如下方式选择:
- 如果是从Loopback.Entry进入的Recovery.Equalization:
- 如果EQ TS1引导设备从Configuation.Linkwidth.Start跳转到Loopback.Entry,则EQ TS1中Preset字段中规定的Transmitter preset值必须被待测Lane使用;
- 如果标准的TS1引导设备从Configuation.Linkwidth.Start跳转到Loopback.Entry,则必须使用特定的实现方式来选择一种支持的Transmitter preset值使用。
- 如果perform_equalization_for_loopback_64GT为1b,则Loopback Follower必须在传输的TS0/TS1中通告支持64.0 GT/s(即数据速率标识符必须使用Flit Mode Encoding)。
- 否则,如果在最近一次跳转过Recovery.RcvrCfg收到了8个连续的128b/130b EQ TS2、且其中具有支持的Transmitter preset值,并且当前速率为16.0 GT/s或更高,则在128b/130b EQ TS2请求的Transmitter preset值必须使用。
- 否则,如果在最近一次跳转过Recovery.RcvrCfg收到了8个连续的128b/130b EQ TS2、且其中具有支持的Transmitter preset值,并且当前速率为32.0 GT/s,并且正在进行32.0 GT/s的EQ bypass,则必须使用EQ TS2中请求的Transmitter preset值。
- 否则,Lane Equalization Control Register Entry中的Downstream Port 8.0 GT/s Transmitter Preset字段、或16.0 GT/s Lane Equalization Control Register Entry中的Downstream Port 16.0 GT/s Transmitter Preset字段、或32.0 GT/s Lane Equalization Control Register Entry中的Downstream Port 32.0 GT/s Transmitter Preset、或64.0 GT/s Lane Equalization Control Register Entry中的Downstream Port 64.0 GT/s Transmitter Preset字段为一个支持的值、并且不是保留值,则它必须被使用。
- 否则,请使用特定于实现的方法来选择一个支持的Transmitter preset setting以供使用。
- 如果是从Loopback.Entry进入的Recovery.Equalization:
- 如果下游端口需要时间来稳定其接收器逻辑,则允许其在进入阶段1后等待最多500ns,然后再评估接收到的TS0/TS1有序集的信息。
- 如果所有已配置的通道接收到两个连续的TS0/TS1 Ordered set、且EC=01b,并且下游端口希望执行Phase 2和Phase 3,则下一阶段为阶段2。当变量perform_equalization_for_loopback为1b、且PCI Express Capabilities Register的Downstream Port’s Flit Mode Supported字段设置为1b时,必须执行Phase 2和Phase 3。
- 接收端在其接收器引脚上接收到第一个有效的有序集的第一个比特后,必须在2ms内完成bit lock过程,然后识别有序集。
- 如果数据速率为8.0 GT/s,则Link Status 2 Register中的Equalization 8.0 GT/s Phase 1 Successful bit设置为1b。
- 如果数据速率为16.0 GT/s,则16.0 GT/s Status Register中的Equalization 16.0 GT/s Phase 1 Successful bit设置为1b。
- 如果数据速率为32.0 GT/s、且perform_equalization_for_loopback为0b,则32.0 GT/s Status Register中的Equalization 32.0 GT/s
Phase 1 Successful bit设置为1b。 - 如果数据速率为64.0 GT/s、且perform_equalization_for_loopback为0b,则64.0 GT/s Status Register中的Equalization 64.0 GT/s
Phase 1 Successful bit设置为1b。 - 如果下游端口想要调整上游端口的发送器系数,则必须将收到的两个连续的TS1中的LF和FS值存储下来、以供Phase 3使用。
- 如果所有已配置的Lane收到了两个连续的TS0/TS1(EC=01b)、perform_equalization_for_loopback为0b、且下行端口不想执行Phase2和Phase3,则下一状态为Recovery.RcvrLock。
- 如果速率为8.0 GT/s,则Link Status 2 Register中的Equalization 8.0 GT/s Phase 1 Successful、Equalization 8.0 GT/s Phase 2 Successful、Equalization 8.0 GT/s Phase 3 Successful和Equalization 8.0 GT/s Complete bits设置为1b。
- 如果速率为16.0 GT/s,则16.0 GT/s Status Register中的Equalization 16.0 GT/s Phase 1 Successful、Equalization 16.0 GT/s Phase 2 Successful、Equalization 16.0 GT/s Phase 3 Successful和Equalization 16.0 GT/s Complete bits设置为1b。
- 如果速率为32.0 GT/s,则32.0 GT/s Status Register中的Equalization 32.0 GT/s Phase 1 Successful、Equalization 32.0 GT/s Phase 2 Successful、Equalization 32.0 GT/s Phase 3 Successful和Equalization 32.0 GT/s Complete bits设置为1b。
- 如果速率为64.0 GT/s,则64.0 GT/s Status Register中的Equalization 64.0 GT/s Phase 1 Successful、Equalization 64.0 GT/s Phase 2 Successful、Equalization 64.0 GT/s Phase 3 Successful和Equalization 64.0 GT/s Complete bits设置为1b。
- 如果速率为64.0 GT/s,在跳转到Recovery.RcvrLock之前、发送端必须发送24个EC=00b的TS0。
- 注:向Recovery.RcvrLock的跳转可能用于这种情况,其中下游端口基于平台和通道特性确定不需要Phase2和Phase3。
- 如果perform_equalization_for_loopback为1b,则在24ms超时后下一状态为Loopback.Entry。
- 否则如果perform_equalization_for_loopback为0b,则在24ms超时后下一状态为Recovery.Speed。
- successful_speed_negotiation设为0b.
- 如果速率为8.0 GT/s,则Link Status 2 Register的Equalization 8.0 GT/s Complete bit设为1b。
- 如果速率为16.0 GT/s,则16.0 GT/s Status Register的Equalization 16.0 GT/s Complete bit设为1b。
- 如果速率为32.0 GT/s,则32.0 GT/s Status Register的Equalization 32.0 GT/s Complete bit设为1b。
- 如果速率为64.0 GT/s,则64.0 GT/s Status Register的Equalization 64.0 GT/s Complete bit设为1b。
4.2.7.4.2.1.2 Phase 2 of Transmitter Equalization
-
如果速率为64.0 GT/s、而且所有Lane都没有收到2个连续的TS0(EC=10b),则发送端发送TS0(EC=10b);否则,发送TS1。
-
发送端发送TS1(EC=10b,每条Lane独立设置的coefficient settings),如下:
- 如果自从进入Phase2后曾收到两个连续的TS0/TS1(EC=10b),或收到两个连续的TS0/TS1、其中不同于最新两个连续的EC=10b的TS0/TS1中的preset或一系列的coefficients(由Use_Preset bit规定):
- 如果在最近两个连续的TS0/TS1中的preset或coefficient请求是合法的且支持的(见4.2.4节):
- 将发送端设置更改为所请求的preset或coefficients,以便在接收端接收到请求新设置的第二个TS0/TS1结束后的500ns内、新设置在发送端引脚上生效。发送端设置的更改,必须不会导致发送端引脚上出现任何超过1ns的非法的电平或参数。
- 在发送的TS1中,Transmitter Preset位被设置为请求的preset(对于预置请求),Pre-cursor、Cursor和Post-cursor Coefficient字段被设置为发送端设置(对于预置或系数请求),Reject Coefficient Value位被清除。
- 否则(请求的preset或coefficient是非法的或不支持的):不改变使用的Transmitter setting,但在发送的TS1中反映这个请求的preset或coefficient、并将Reject Coefficient Value位设为1b。
- 如果在最近两个连续的TS0/TS1中的preset或coefficient请求是合法的且支持的(见4.2.4节):
- 否则:当前preset和coefficient被Transmitter使用。
- 如果自从进入Phase2后曾收到两个连续的TS0/TS1(EC=10b),或收到两个连续的TS0/TS1、其中不同于最新两个连续的EC=10b的TS0/TS1中的preset或一系列的coefficients(由Use_Preset bit规定):
-
如果所有已配置的Lanes都收到了两个连续的TS0/TS1(EC=11b),则下一状态为Phase3。
- 如果速率为8.0 GT/s,则Link Status 2 Register中的Equalization 8.0 GT/s Phase 2 Successful bit设为1b。
- 如果速率为16.0 GT/s,则16.0 GT/s Status Register中的Equalization 16.0 GT/s Phase 2 Successful bit设为1b。
- 如果速率为32.0 GT/s且perform_equalization_for_loopback为0b,则32.0 GT/s Status Register中的Equalization 32.0 GT/s Phase 2 Successful bit设为1b。
- 如果速率为64.0 GT/s且perform_equalization_for_loopback为0b,64.0 GT/s Status Register中的Equalization 64.0 GT/s Phase 2 Successful bit设为1b。
-
对于低于64.0 GT/s的速率,如果perform_equalization_for_loopback为1b,则在32ms(32~36ms)超时后下一状态为Loopback.Entry。
-
对于64.0 GT/s的速率,如果perform_equalization_for_loopback为1b,则在64ms(64~68ms)超时后下一状态为Loopback.Entry。
-
否则,如果速率低于64.0 GT/s:在32ms(32~36ms)超时后,下一状态为Recovery.Speed
- 将successful_speed_negotiation设为0b。
- 如果速率为8.0 GT/s, Link Status 2 Register中的Equalization 8.0 GT/s Complete bit设为1b.
- 如果速率为16.0 GT/s, 16.0 GT/s Status Register中的Equalization 16.0 GT/s Complete bit设为1b.
- 如果速率为32.0 GT/s, 32.0 GT/s Status Register中的Equalization 32.0 GT/s Complete bit设为1b.
-
否则,如果速率为64.0 GT/s: 在64ms(64~68ms)超时后,下一状态为Recovery.Speed
- successful_speed_negotiation设为0b。
- 64.0 GT/s Status Register中的Equalization 64.0 GT/s Complete bit设为1b。
4.2.7.4.2.1.3 Phase 3 of Transmitter Equalization
-
发送端发送TS1有序集、其EC=11b。
-
Port必须在每条Lane上独立评估并到达最佳设置。当perform_equalization_for_loopback为1b时,只在被测Lane上进行均衡处理。根据§Section 4.2.4和§Chapter 8的每个规则,评估一个新的预设或系数设置是合法的。:
- 通过将Transmitter Preset bits设置为所需值并将Use Preset bit设置为1b来请求新的preset。或者,通过将Pre-cursor、Cursor和Post-Cursor Coefficient字段设置为所需的值,并将Use Preset位设置为0b,请求一组新的系数。一旦发出请求,必须连续请求至少1 μs,或者直到请求的评估完成,以较晚者为准。
- 等待所需的时间(500ns加上往返延迟,包括通过下游端口的逻辑延迟),以确保上游端口正在使用请求的设置进行传输(如果接受的话)。获得块对齐,然后评估传入的有序集。注意:下游端口可以简单地忽略它在此等待期间收到的任何内容,因为在过渡到请求的设置期间,传入的比特流可能是非法的。因此,需要在此等待期之后验证块对齐。如果在实现特定的时间(除了上面指定的所需等待时间之外)之后不能获得块对齐,则建议无论如何继续对传入的比特流执行接收器评估。
- 如果接收到两个连续的TS1有序集,其中Transmitter Preset bits(用于预置请求)或与Pre-cursor、Cursor和Post-Cursor Coefficient字段(用于系数请求)与请求的相同,并且清除了Reject Coefficient Values bit,则请求的设置被接受,并且根据接收器评估的结果,可以将其视为候选最终设置。
- 如果接收到两个连续的TS1有序集,其中Transmitter Preset bits(用于预置请求)或与Pre-cursor、Cursor和Post-Cursor Coefficient字段(用于系数请求)与请求的相同,并且设置了Reject Coefficient Values bit,则请求的设置被拒绝,并且不得将其视为候选最终设置。
- 如果,在接收器评估开始后的一段实现特定的时间后,没有接收到与请求相同的Transmitter Preset bits(对于预设请求)或Pre-Cursor、Cursor和Post-Cursor Coefficient字段(对于系数请求)的连续TS1,则请求的设置不得被视为候选最终设置。
- 下游端口根据其评估标准和要求,负责在其传输的TS1 Ordered set中设置Reset EIEOS Interval Count bit。接收到的TS1有序集的Use Preset bit不能用来决定请求是被接受还是被拒绝。
实现注意: RESET EIEOS和COEFFICIENT/PRESET REQUESTS 当端口需要更长的PRBS码型时,可以将Reset EIEOS Interval Count设置为1b,然后在需要获得块对齐时清除它。 在此阶段传输的所有TS1有序集都是请求。第一个请求可能是一个新的preset或一个新的coefficient请求,或者是一个维持当前链路伙伴发送器设置的请求(通过反映接收到的两个连续的EC=11b的TS1的设置,这导致跳转到Phase3).
- 在32.0 GT/s及以下的数据速率下,从发送请求到完成评估,每个preset或coefficients请求所花费的总时间必须少于2毫秒。在优化的最后阶段需要更长的评估时间的实现可能会继续请求相同预设或系数设置,这可能超过2 ms的限制,但必须在此阶段坚持超时限制(8.0、16.0和32.0 GT/s为24 ms, 64.0 GT/s为48 ms),并且不得超过两次使用此异常。如果请求者无法在超时期间内接收有序集,则可以假定所请求的设置在该Lane中不起作用。
- 在64.0 GT/s和更高的数据速率下,允许设备在任意时间内评估每个preset或coefficients请求。必须谨慎地管理评估,以便能够成功地寻找可接受的preset或coefficients。在此阶段中花费的总时间必须仍然遵守超时。
- 所有新的preset或coefficient设置必须同时呈现在所有已配置的车道上。任何给定车道如果不希望更改当时的设置,则允许其继续传输当前预设或系数作为其新值。
-
下一状态为Loopback.Entry,如果运行速率为32.0 GT/s、perform_equalization_for_loopback为1b,且满足以下条件之一:
a.被测Lane在其最佳设置下运行,并且它接收了两个连续的TS1有序集,Retimer均衡扩展位设置为0b。
b.超时时间为24ms(24~26ms)。 -
下一状态为Loopback.Entry,如果运行速率为64.0 GT/s、perform_equalization_for_loopback为1b,且满足以下条件之一:
a.被测Lane在其最佳设置下运行,并且它接收了两个连续的TS1有序集,Retimer均衡扩展位设置为0b。
b.超时时间为48ms(48~50ms)。 -
下一个状态为Recovery.RcvrLock,如果perform_equalization_for_loopback为0b,则所有配置的lane都以最佳设置运行,操作数据速率为8.0 GT/s、或者所有lane接收两个连续的TS1 Ordered set, Retimer Equalization Extend位设置为0b。
- 当操作数据速率为8.0 GT/s时,Link Status 2 Register的Equalization 8.0 GT/s Phase 3 Successful和Equalization 8.0 GT/s Complete bits设置为1b。
- 当操作数据速率为16.0 GT/s时,16.0 GT/s Status Register的Equalization 16.0 GT/s Phase 3 Successful和Equalization 16.0 GT/s Complete bit设置为1b。
- 当运行数据速率为32.0 GT/s时,32.0 GT/s Status Register的Equalization 32.0 GT/s Phase 3 Successful和Equalization 32.0 GT/s Complete bit设置为1b。
- 当操作数据速率为64.0 GT/s时,64.0 GT/s Status Register的Equalization 64.0 GT/s Phase 3 Successful和Equalization 64.0 GT/s Complete bit设置为1b。
-
- 否则,当数据速率小于64.0 GT/s时:在24ms(24~26ms)超时后,下一状态为Recovery.Speed
- successful_speed_negotiation设置为0b。
- 如果速率为8.0 GT/s:Link Status 2 Register的Equalization 8.0 GT/s Complete bit设置为1b。
- 如果速率为16.0 GT/s:16.0 GT/s Status Register的Equalization 16.0 GT/s Complete bit设置为1b。
- 如果速率为32.0 GT/s:32.0 GT/s Status Register的Equalization 32.0 GT/s Complete bit设置为1b。
-
否则,如果数据速率为64.0 GT/s时:在48ms(48~50ms)超时后,下一状态为Recovery.Speed
- successful_speed_negotiation设置为0b。
- 64.0 GT/s Status Register的Equalization 64.0 GT/s Complete bit设置为1b。
4.2.7.4.2.2 Upstream Lanes
一进入此子状态:
- 当前阶段为Phase0
- 如果运行速率为8.0 GT/s:
- Link Status 2 Register的Equalization 8.0 GT/s Phase 1 Successful、Equalization 8.0 GT/s Phase 2 Successful、Equalization 8.0 GT/s Phase 3 Successful、Link Equalization Request 8.0 GT/s和Equalization 8.0 GT/s Complete bits都设为0b。
- 变量equalization_done_8GT_data_rate设为1b.
- 如果运行速率为16.0 GT/s:
- 16.0 GT/s Status Register的Equalization 16.0 GT/s Phase 1 Successful、Equalization 16.0 GT/s Phase 2 Successful、Equalization 16.0 GT/s Phase 3 Successful、Link Equalization Request 16.0 GT/s和Equalization 16.0 GT/s Complete bits都设为0b.
- 变量equalization_done_16GT_data_rate设为1b.
- 如果运行速率为32.0 GT/s:
- 32.0 GT/s Status Register中的Equalization 32.0 GT/s Phase 1 Successful、Equalization 32.0 GT/s Phase 2 Successful、Equalization 32.0 GT/s Phase 3 Successful、Link Equalization Request 32.0 GT/s和Equalization 32.0 GT/s Complete bits都设为0b.
- 变量equalization_done_32GT_data_rate设为1b.
- 如果运行速率为64.0 GT/s:
- 64.0 GT/s Status Register中的Equalization 64.0 GT/s Phase 1 Successful、Equalization 64.0 GT/s Phase 2 Successful、Equalization 64.0 GT/s Phase 3 Successful、Link Equalization Request 64.0 GT/s和Equalization 64.0 GT/s Complete bits都设为0b.
- 变量equalization_done_64GT_data_rate设为1b.
- 如果运行速率为8.0 GT/s:
- 变量start_equalization_w_preset设为0b.
4.2.7.4.2.2.1 Phase 0 of Transmitter Equalization
-
如果Recovery.Equalization是从Loopback.Entry进入,发送端发送TS0/TS1,其中EC=00b、Lane中Transmitter Preset bits为正在使用中的值。如果正在发送的是TS1,则其中的Pre-cursor Coefficient、Cursor Coefficient和Post-cursor Coefficient字段设置为反映这条Lane的Transmitter Preset bits的值。对于待测Lane的Transmitter preset settings必须按照如下的方式选择:
- 如果正在发送TS1:
- 如果是EQ TS1 Ordered Sets指示设备从Configuration.Linkwidth.Start到Loopback.Entry,则必须使用EQ TS1中的Preset字段中指定的Transmitter preset value。
- 如果是标准TS1将设备从Configuration.Linkwidth.Start引导到Loopback.Entry,必须使用特定于实现的方法来选择要使用的支持的Transmitter preset value。
- 如果正在发送TS1:
-
如果当前运行的数据速率为8.0 GT/s,则发送端发送TS1、且TS1使用收到的EQ TS2的Transmitter Preset bits所规定的Transmitter settings、且该EQ TS2为在最近一次从2.5 GT/s或5.0 GT/s跳转到8.0 GT/s期间收到的。
如果当前运行数据速率为16.0 GT/s,则发送端发送TS1、且TS1使用收到的128b/130b EQ TS2的Transmitter Preset bits所规定的Transmitter settings、且该128b/130b EQ TS2为在最近一次从8.0 GT/s跳转到16.0 GT/s期间收到的。
如果运行的速率为32.0 GT/s且perform_equalization_for_loopback为0b,则发送端发送TS1、且TS1使用收到的相应的TS2的Transmitter Preset bits所规定的Transmitter settings、且该TS2为在最近一次跳转到32.0 GT/s期间收到的。(如果协商了EQ bypass,则为EQ TS2;如果最近的一次跳转到32.0 GT/s速率是从16.0 GT/s速率,则为128b/130b EQ TS2)。
如果运行的速率为64.0 GT/s且perform_equalization_for_loopback为0b,则发送端发送TS0、且TS0使用的是在32.0 GT/s时收到的128b/130b EQ TS2的Transmitter Preset bits所规定的Transmitter settings、且该128b/130b EQ TS2为在最近一次跳转到64.0 GT/s期间收到的。
接收到保留或不支持的发送器预设值的通道必须使用特定于实现的方法来选择要使用的受支持的Transmitter preset setting。以下在Recovery.Equalization状态中,任何提及收到的EQ TS2的Transmitter Preset bits、或16.0 GT/s及更高速率时收到的128b/130b EQ TS2的Transmitter Preset bits(取决于数据速率),都是参照上面确定的presets。在TS1中,EC字段设置为00b,每个Lane的Transmitter Preset bits设置为其收到EQ TS2中的Transmitter Preset bits、或是16.0 GT/s及更高速率时收到的128b/130b EQ TS2的Transmitter Preset bits,而Pre-cursor Coefficient、Cursor Coefficient和Post-cursor Coefficient字段设为Transmitter Preset bits相应的值。- 对于在EQ TS2有序集或128b/130b EQ TS2有序集(取决于数据速率)中接收到保留或不支持的发送器预设值的Lane:在TS1有序集中,Transmitter Preset字段设为接收到的Transmitter preset value,设置Reject Coefficient Values bit,并且将Coefficient字段设为Lane选择的具体实现的Transmitter preset setting对应的值。83
- 对于未接收到EQ TS2有序集或128b/130b EQ TS2有序集(取决于数据速率)的Lane:在TS1有序集中,Transmitter Preset字段设置为Lane选择的特定实现的Transmitter preset value,清除Reject Coefficient Values bit,并且将Coefficient字段设置为Lane选择的相同特定实现的Transmitter preset value、并在Transmitter Preset bits通告。84
实现注意事项:与TS0相关的REJECT COEFFICIENT VALUES
在TS0有序集定义中有意省略了Reject Coefficient Values bit。
因此,上游通道无法明确表明在最近一次转换到64.0 GT/s数据速率期间,在128b/130b EQ TS2有序集中以32.0 GT/s接收到保留或不支持的Transmitter preset value。
为了确定上游通道是否正在使用所述Transmitter Preset,允许下游通道观察在Recovery.Equalization Phase 1中收到的TS0有序集,其中的EC字段设置为00b或01b。
- 如果上游端口需要时间来稳定其接收器逻辑,则允许在进入Phase 0后等待最多500ns,然后再评估TS0/TS1有序集的接收器信息。
- 如果所有配置的lane连续接收到两个TS1有序集、其中EC = 01b,或者如果所有配置的lane连续接收到两个TS0有序集、其中EC = 01b,且Retimer Equalization Extend bit设置为0b,则下一阶段为Phase 1
- 接收端必须完成它的bit lock过程,然后在接收端引脚上收到第一个有效的有序集的第一个位后的2毫秒内、识别有序集。
- 如果上游端口想要调整下游端口的Transmitter coefficients,那么在两个连续的TS0/TS1有序集中接收到的LF和FS值必须存储下来、以待在Phase 2中使用。
- 如果perform_equalization_for_loopback为1b,则在12ms后的下一状态为Loopback.Entry。
- 否则在12ms后的下一状态为Recovery.Speed。
- successful_speed_negotiation设置为0b.
- 如果速率为8.0 GT/s,则Link Status 2 Register中的Equalization 8.0 GT/s Complete bit设置为1b。
- 如果速率为16.0 GT/s,则16.0 GT/s Status Register中的Equalization 16.0 GT/s Complete bit设置为1b。
- 如果速率为32.0 GT/s,则32.0 GT/s Status Register中的Equalization 32.0 GT/s Complete bit设置为1b。
- 如果速率为64.0 GT/s,则64.0 GT/s Status Register中的Equalization 64.0 GT/s Complete bit设置为1b。
4.2.7.4.2.2.2 Phase 1 of Transmitter Equalization
- 发送端使用在Phase 0中确定的Transmitter settings发送TS0/TS1有序集。在TS0/TS1有序集中,EC字段设置为01b,每个Lane的FS、LF和(仅在TS1有序集中)Post-cursor Coefficient字段设置为与Lane当前发射器设置相对应的值。
- 如果复苏。从环回输入均衡。Entry和perform_equalization_for_loopback_64GT为1b, Loopback Follower必须在传输的TS0/TS1有序集中通告64.0 GT/s支持(即,数据速率标识符必须使用Flit模式编码)。
- 如果Recovery.Equalization是从Loopback.Entry进入的、且perform_equalization_for_loopback_64GT 为1b,则Loopback Follower必须在发送的TS0/TS1中通告支持64.0 GT/s(即Data Rate Identifier必须使用Flit Mode Encoding)
- 如果所有配置的Lanes接收到两个连续的TS0/TS1有序集、其中EC=10b,则下一阶段为Phase 2
- 如果速率为8.0 GT/s,则Link Status 2 Register中的Equalization 8.0 GT/s Phase 1 Successful bit设为1b。
- 如果速率为16.0 GT/s,则16.0 GT/s Status Register中的Equalization 16.0 GT/s Phase 1 Successful bit设为1b。
- 如果速率为32.0 GT/s且perform_equalization_for_loopback为0b,则32.0 GT/s Status Register中的Equalization 32.0 GT/s Phase 1 Successful bit设为1b。
- 如果速率为64.0 GT/s且perform_equalization_for_loopback为0b,则64.0 GT/s Status Register中的Equalization 64.0 GT/s Phase 1 Successful bit设为1b。
- 如果perform_equalization_for_loopback为1b,则在12ms超时后的下一状态为Loopback.Entry。
- 如果所有已配置的Lanes收到了8个连续的TS0/TS1、其中EC=00b、且perform_equalization_for_loopback为0b,则下一状态为Recovery.RcvrLock。
- 如果速率为8.0 GT/s,则Link Status 2 Register中的Equalization 8.0 GT/s Phase 1 Successful bit和Equalization 8.0 GT/s Complete bits设为1b。
- 如果速率为16.0 GT/s,则16.0 GT/s Status Register中的Equalization 16.0 GT/s Phase 1 Successful bit和Equalization 16.0 GT/s Complete bits设为1b。
- 如果速率为32.0 GT/s,则32.0 GT/s Status Register中的Equalization 32.0 GT/s Phase 1 Successful bit和Equalization 32.0 GT/s Complete bits设为1b。
- 如果速率为64.0 GT/s,则64.0 GT/s Status Register中的Equalization 64.0 GT/s Phase 1 Successful bit和Equalization 64.0 GT/s Complete bits设为1b。
- 否则,如果perform_equalization_for_loopback为0b,则在12ms超时后的下一状态为Recovery.Speed。
- successful_speed_negotiation设为0b.
- 如果速率为8.0 GT/s,则对于当前运行速率中Link Status 2 Register中的Equalization 8.0 GT/s Complete bit设为1b。
- 如果速率为16.0 GT/s,则16.0 GT/s Status Register中的Equalization 16.0 GT/s Complete bit设为1b。
- 如果速率为32.0 GT/s,则32.0 GT/s Status Register中的Equalization 32.0 GT/s Complete bit设为1b。
- 如果速率为64.0 GT/s,则64.0 GT/s Status Register中的Equalization 64.0 GT/s Complete bit设为1b。
4.2.7.4.2.2.3 Phase 2 of Transmitter Equalization
- 发送端发送TS0/TS1、其中EC=10b。
- Port必须在每个Lane上独立评估并到达最佳设置。当perform_equalization_for_loopback为1b时,只在被测Lane上进行均衡处理。根据§Section 4.2.4和§Chapter 8的规则,评估一个新的预设或系数设置是否是合法的:
-
通过将Transmitter Preset bits设置为预期值、并将Use Preset bit设置为1b,来请求新的preset。或者,通过将Pre-cursor、Cursor和Post-cursor Coefficient字段设置为预期值,并将Use Preset bit设置为0b,请求一组新的系数。一旦发出请求,必须连续请求至少1 μs、或者直到请求的评估完成,以较晚者为准。
-
等待所需的时间(500ns加上往返延迟,包括通过上游端口的逻辑延迟),以确保如果接受、下游端口正在使用请求的设置进行传输。获得块对齐,然后计算传入的有序集。注意:上游端口可以简单地忽略它在此等待期间收到的任何内容,因为在过渡到请求设置期间,传入的比特流可能是非法的。因此,需要在此等待期之后验证块对齐。如果在实现特定的时间(除了上面指定的所需等待时间之外)之后不能获得块对齐,则建议无论如何继续对传入的比特流执行接收器评估。
-
如果接收到两个连续的TS1有序集,其中的Transmitter Preset bits(用于preset请求)或与Pre-cursor、Cursor和Post-Cursor Coefficient字段(用于coefficients请求)与请求的相同,并且清除了Reject Coefficient Values bit,则请求的设置被接受,并且根据接收器评估的结果、可以将其视为候选最终设置。
-
如果接收到两个连续的TS1有序集,其中的Transmitter Preset bits(用于preset请求)或与Pre-cursor、Cursor和Post-Cursor Coefficient字段(用于coefficients请求)与请求的相同,并且设置了Reject Coefficient Values bit,则请求的设置被拒绝、并且不得将其视为候选最终设置。
-
如果,在接收器评估开始后的一段实现特定的时间后,没有接收到与请求相同的具有Transmitter Preset bits(对于预设请求)或Pre-Cursor、Cursor和Post-Cursor Coefficient字段(对于系数请求)的连续TS1,则请求的设置不得被视为候选最终设置。
-
上游端口根据其评估标准和要求,负责设置其发送的TS0/TS1有序集中的Reset EIEOS Interval Count位。接收到的TS1有序集的Use Preset bit不能用来决定请求是被接受还是被拒绝。
-
实现注意:
RESET EIEOS和COEFFICIENT/PRESET REQUESTS
当端口需要更长的PRBS模式时,可以将Reset EIEOS Interval Count设置为1b,然后在需要获得块对齐时清除它。
在此阶段传输的所有TS0/TS1有序集都是请求。第一个请求可能是一个新的preset或一个新的coefficient请求,或者是一个通过反映在两个连续的TS1 Ordered set (EC=10b)中接收到的设置来维持当前链路伙伴发送器设置的请求,这些将导致跳转到Phase 2。
-
- 在32.0 GT/s及以下的数据速率下,从发送请求到完成评估,每个preset或coefficients请求所花费的总时间必须少于2毫秒。在优化的最后阶段需要更长的评估时间来实现继续请求相同的设置,这可能会在超过2 ms限制的情况,但必须遵守此阶段的超时(8.0、16.0和32.0 GT/s时为24 ms, 64.0 GT/s时为48 ms),并且不能使用此异常超过两次。如果请求者无法在超时期间内接收有序集,则可以假定所请求的设置在该Lane中不起作用。
- 在64.0 GT/s和更高的数据速率下,允许设备在任意时间内评估每个preset或coefficients请求。必须谨慎地管理评估,以便能够成功地寻找可接受的preset或coefficients。在此阶段中花费的总时间必须仍然遵守该超时。
- 所有新的preset或coefficients设置必须同时呈现在所有已配置的车道上。任何给定通道如果不希望更改当时的设置,则允许其继续传输当前preset或coefficients作为其新值。
- 如果perform_equalization_for_loopback为1b、被测Lane在其最佳设置下运行、并且接收到两个连续的TS1有序集、Retimer均衡扩展位设置为0b,则下一阶段为Phase 3。
- 如果perform_equalization_for_loopback设置为0b、且所有配置的lane都在其最佳设置下运行、且操作数据速率为8.0 GT/s,或者所有lane都收到两个连续的TS1 Ordered set、且Retimer Equalization Extend位设置为0b,则下一阶段为Phase 3。
- 如果速率为8.0 GT/s:Link Status 2 Register中的Equalization 8.0 GT/s Phase 2 Successful bit设为1b。
- 如果速率为16.0 GT/s: 16.0 GT/s Status Register中的Equalization 16.0 GT/s Phase 2 Successful bit设为1b。
- 如果速率为32.0 GT/s: 32.0 GT/s Status Register中的Equalization 32.0 GT/s Phase 2 Successful bit设为1b。
- 如果速率为64.0 GT/s: 64.0 GT/s Status Register中的Equalization 64.0 GT/s Phase 2 Successful bit设为1b。
- 如果perform_equalization_for_loopback为1b且当前速率低于64.0 GT/s,则在24ms(24~26ms)超时之后的下一状态为Loopback.Entry。
- 如果perform_equalization_for_loopback为1b且当前速率为64.0 GT/s,则在48ms(48~50ms)超时之后的下一状态为Loopback.Entry。
- Else, if the current data rate is less than 64.0 GT/s: next state is Recovery.Speed after a timeout of 24 ms with a tolerance of -0 ms and +2 ms
- 否则,如果速率低于64.0 GT/s:在24ms(24~26ms)超时之后的下一状态为Recovery.Speed。
- successful_speed_negotiation设为0b.
- 如果速率为8.0 GT/s:Link Status 2 Register中的Equalization 8.0 GT/s Complete bit设为1b。
- 如果速率为16.0 GT/s: 16.0 GT/s Status Register中的Equalization 16.0 GT/s Complete bit设为1b。
- 如果速率为32.0 GT/s: 32.0 GT/s Status Register中的Equalization 32.0 GT/s Complete bit设为1b。
- 否则,如果当前速率为64.0 GT/s:在48ms(48~50ms)超时之后的下一状态为Recovery.Speed。
- successful_speed_negotiation设为0b.
- 64.0 GT/s Status Register中的Equalization 64.0 GT/s Complete bit设为1b。
4.2.7.4.2.2.4 Phase 3 of Transmitter Equalization
- 如果数据速率为64.0 GT/s、且所有通道自进入该阶段以来没有连续收到两个EC=11b的TS1有序集,则发送EC=11b的TS0有序集;否则它发送TS1有序集。
- 发送器发送TS0/TS1有序集,其中EC = 11b、且在每个配置车道上独立设置coefficient,如下所示:
- 如果进入Phase 3后、连续收到两个EC=11b的TS1有序集,或者连续收到两个EC=11b的TS1有序集、且其中preset或一组coefficients(由Use preset bit指定)不同于前两个EC=11b的TS1有序集中的:
- 如果在最近两个连续的TS有序集中请求的preset或coefficients是合法和支持的(参见§Section 4.2.4和§Chapter 8)。:
- 将发送器设置更改为所请求的preset或coefficients,以便在接收端接收到请求新设置的第二个TS1有序集的结束后500毫秒内、新设置在发送端引脚上有效。发射器设置的改变,不能造成发射器引脚上任何不合法的电压水平或参数超过1ns。
- 在发送的TS1中,Transmitter Preset bits被设置为请求的preset(对于preset请求),Pre-cursor、Cursor和Post-cursor Coefficient字段被设置为发送端设置(对于preset或coefficients请求),清除Reject Coefficient Values bit。
- 否则(请求的preset或coefficients是非法的或不支持的):不改变使用的发射器设置,但在传输的TS1有序集中反映请求的预设或系数值,并将Reject Coefficient Values bit设置为1b。
- 如果在最近两个连续的TS有序集中请求的preset或coefficients是合法和支持的(参见§Section 4.2.4和§Chapter 8)。:
- 否则:采用发射器当前使用的preset和coefficients。
- The Transmitter preset value initially transmitted on entry to Phase 3 can be the Transmitter preset value transmitted in Phase 0 for the same Data Rate or the Transmitter preset setting currently being used by the Transmitter.
- 在进入Phase 3时最初传输的Transmitter preset value可以是在同速率的Phase 0传输的Transmitter preset value,或是发送器当前使用的Transmitter preset setting。
- 如果进入Phase 3后、连续收到两个EC=11b的TS1有序集,或者连续收到两个EC=11b的TS1有序集、且其中preset或一组coefficients(由Use preset bit指定)不同于前两个EC=11b的TS1有序集中的:
- 如果perform_equalization_for_loopback为1b、当前速率低于64.0 GT/s、且满足以下条件之一,则下一状态为Loopback.Entry:
- a. 待测Lane收到两个连续的TS1有序集、其中EC=00b。
- b. 经历了32ms(32~36ms)超时
- 如果perform_equalization_for_loopback为1b、当前速率为64.0 GT/s、且满足以下条件之一,则下一状态为Loopback.Entry:
- a. 待测Lane收到两个连续的TS1有序集、其中EC=00b。
- b. 经历了64ms(64~68ms)超时
- 如果所有已配置的Lanes收到两个连续的EC=00b的TS1,则下一状态为Recovery.RcvrLock。
- 如果速率为8.0 GT/s,则Link Status 2 Register中的Equalization 8.0 GT/s Phase 3 Successful和Equalization 8.0 GT/s Complete bits设为1b。
- 如果速率为16.0 GT/s,则16.0 GT/s Status Register中的Equalization 16.0 GT/s Phase 3 Successful和Equalization 16.0 GT/s Complete bits设为1b。
- 如果速率为32.0 GT/s,则32.0 GT/s Status Register中的Equalization 32.0 GT/s Phase 3 Successful和Equalization 32.0 GT/s Complete bits设为1b。
- 如果速率为64.0 GT/s,则64.0 GT/s Status Register中的Equalization 64.0 GT/s Phase 3 Successful和Equalization 64.0 GT/s Complete bits设为1b。
- Else, if the current data rate is less than 64.0 GT/s: next state is Recovery.Speed after a timeout of 32 ms with a tolerance of -0 ms and +4 ms
- 否则,如果当前速率低于64.0 GT/s:在32ms(32~36ms)超时后下一状态为Recovery.Speed
- successful_speed_negotiation设为0b.
- 如果速率为8.0 GT/s,则Link Status 2 Register中的Equalization 8.0 GT/s Complete bit设为1b。
- 如果速率为16.0 GT/s,则16.0 GT/s Status Register中的Equalization 16.0 GT/s Complete bit设为1b。
- 如果速率为32.0 GT/s,则32.0 GT/s Status Register中的Equalization 32.0 GT/s Complete bit设为1b。
- 否则,如果当前速率为64.0 GT/s:在64ms(64~68ms)超时后下一状态为Recovery.Speed:
- successful_speed_negotiation设为0b.
- 64.0 GT/s Status Register中的Equalization 64.0 GT/s Complete bit设为1b。