JESD204B Intel® FPGA IP用户指南

ID 683442
日期 9/10/2020
Public
文档目录

5.2. 可编程RBD偏移

在RX IP内核中,可编程RBD偏移对提早RBD释放提供了灵活性,以优化通过IP内核的延迟。使用syncn_sysref_ctrl寄存器的csr_rbd_offset栏可以配置RBD偏移。

您必须设置一个安全的RBD偏移值来确保一个上电周期到另一个上电周期的确定性延迟。按照以下步骤来设置一个安全的RBD偏移:

  1. rx_status0寄存器的csr_rbd_count栏读取RBD数。记录该值。
  2. 上电周期JESD204B子系统,包含FPGA和转换器件。
  3. 再次读取RBD数,并记录该值。
  4. 复位步骤1至3至少5次,并记录RBD数的值。
  5. 相应地设置csr_rbd_offset,允许一个LMFC数公差。
  6. 执行多个上电周期,并确保使用这个RBD偏移值时,不会发生通道去偏移错误。

从一个上电周期到另一个上电周期的2个数量变化内,RBD数量必须相当一致。在下面的实例中,参考值分别为L>1、F=1和K=32。LMFC计数器的合法值为0到((FxK/4)-1),即是0至7。在图 26中,最迟到达的通道变量落在1个本地多帧周期内。在这种情况下,如果延迟不是问题,则可以把csr_rbd_offset=0设为默认值,这意味着RBD弹性缓冲器在LMFC边界被释放。在图 27中,最迟到达的通道变量跨越2个本地多帧,最迟到达的通道变量发生在LMFC边界前后。在这种情况下,需要正确地配置RBD偏移来避免通道去偏移错误,如rx_err0寄存器的位4所示。

图 26. 一个本地多帧情况下最迟到达通道的提早RBD释放机会在这个例子中,IP内核rx_sysref端口上的SYSREF脉冲被内部寄存器所采样。2个链路时钟周期后,LMFC计数器复位。所采样的SYSREF高至LMFC计数器复位的延迟是确定性的。/K/字符到/R/字符的跳变标志着ILAS相位的开始。/R/字符的LMFC数相对于最迟到达通道的下一个LMFC边界被报告为RBD数。在第一个上电周期中,下一个LMFC边界之前,在4个LMFC数上接收/R/字符,因此,RBD数 = 4。在第二个上周期中,下一个LMFC边界之前,在3个LMFC数上接收/R/字符,因此,RBD数 = 3。在第五个上电周期中,RBD数从3至5而异。由于对产品表征含有限制数量的上电周期和电路板,1个LMFC数的误差被分配作为一种设置提早RBD释放机会的指南。因此,设置csr_rbd_offset = 1可以安全地释放弹性缓冲1个LMFC数在LMFC数7在下一个LMFC边界之前。当RBD弹性缓冲器在最迟到达的通道之前释放,那么将会出现通道去偏移错误。
图 27. 两个本地多帧之间最后到达通道的早期RBD释放机会的情况在这个实例中,RBD计数从7到1变化,当RBD计数 = 1时,在以前的本地多帧上接收/R/字符;当RBD计数 = 0和7时,在当前的本地多帧上接收/R/字符。在这种情况下,确定性延迟不能保证,因为RBD弹性缓冲器在当前的LMFC边界(RBD计数 = 0和1)或者在下一个LMFC边界(RBD计数 = 7)的一个本地多帧周期后被释放。通过设置RBD偏移可以修复这个问题,这样RBD弹性缓冲器始终在下一个本地多帧上释放。设置csr_rbd_offset = 5,强制在下一个LMFC边界前释放RBD弹性缓冲器5 LMFC计数。这对应到当前本地多帧上3的LMFC计数。在这种情况下,通过IP内核,设置csr_rbd_offset不仅优化用户数据延迟,也解决了确定性延迟问题。

在上面的实例中,如果在最早到达通道至最迟到达通道的/R/字符的LMFC计数的差异总和,与LMFC计数的数量达到RBD弹性缓冲器的释放,超过RBD弹性缓冲器的容量,那么会发生通道去偏斜错误。如果这是通道去偏斜错误的根源,设置RBD偏移是其中一种技巧来解决该问题。不是每个RBD偏移值都是合法的。下图说明了确定合法RBD偏移值的技巧。

图 28. 选择合法的RBD偏移值

因为IP内核没有报告相对于LMFC边界最早通道到达的位置,您必须执行多个电源周期来观察RBD计数,并相应地调整RBD偏移,直到没有出现通道去偏斜错误。在上图的实例中,建议的RBD偏移值为4或5。将RBD偏移设置为1、2或3是非法的,因为这超出了F和K配置的RBD弹性缓冲区大小。