描述
在使用JESD204B Sub Class 1接口在数据转换器和Xilinx器件之间传输样本数据的系统中,最好采用一种以可重复的方式同步接口的简单方法。
(PG066)详细介绍了计算JESD204B系统端到端延迟幅度的过程,同时确保延迟具有强大的可重复性。
在某些情况下,唯一的要求是延迟可鲁棒地重复,并且不需要端到端延迟的绝对量值。
本答复记录描述了可用于此类系统的方法。
注意:需要了解JESD204B Sub Class 1使用的确定性延迟机制。
下面的图1显示了Xilinx JESD204B Sub Class 1接收器内核的正常工作情况。
- SYSREF时序选通启动本地多帧时钟(LMFC)。
- 来自收发器的接收数据DATA IN(端口gtN_rxdata)进入JESD204内核。
- 核心检测到初始泳道对齐(ILA)序列的结束,然后开始缓冲传入的样本数据。
- 在下一个LMFC边界上,内核在DATA OUT(端口rx_tdata)上释放缓冲的样本数据。
图1:正常操作
基于高速收发器的链路(例如用于JESD204B中物理层的链路)不会通过复位或电源循环保持相同的数据路径延迟。结果,在到达接收核心的数据的开始非常接近LMFC边界的系统中可能出现问题。此类系统可能无法通过重新启动之间可能发生的链路来管理延迟的微小变化。
图2显示了样本数据的开始到达LMFC边界的“Just before”和“Just after”,说明了重启可能产生的影响。可以看出,核心处的数据到达时间的非常小的差异可以导致输出数据的定时的变化等于1个LMFC周期。
图2:数据到达“就在”之前“与……之后”LMFC边界
为了防止这个问题,必须在LMFC边界周围引入一个边界,数据的开始必须避免。图3显示了这个边际:
图3:LMFC保证金
LMFC是周期性信号,因此需要目标窗口(TW)来瞄准。图4显示了这个窗口。如果数据可以在该TW内开始,则确保链路稳健性。
图4:目标窗口
通常可以在LMFC边界之前的2个CORE_CLK周期和2个CORE_CLK周期之间可靠地设置TW。
注意:这假设ADC输出时序的任何变化都小于四个八位字节。如果输出变化大于四个八位字节,则可以增加余量并相应地减小TW。
解
解决方案是相对于固定数据到达调整内部LMFC,使得到达的数据落在上面图4所示的目标窗口内(即移动窗口)。
这是通过启动链接,并使用核心寄存器来确定缓冲的数据量,然后采取措施调整LMFC边界直到达到可接受的值来实现的。只需要在开发期间执行此过程一次。当系统已经调整以确保数据到达目标窗口内时,不需要进一步调整。
在此过程中使用的寄存器是:
缓冲器调节: JESD204B内核包含一个可读的BUFFER ADJUST寄存器,用于每个JESD204B通道。该寄存器指示当释放输出数据时,LMFC边界处每个通道的通道对齐缓冲区中有多少数据。
注意:由于链路上的通道间偏斜,BUFFER ADJUST寄存器中的值对于每个通道可能不同。感兴趣的值是所有通道的最小值。这标志着所有车道都有有效数据的起点。这是核心实际准备发布数据的点。该寄存器中的值是以八位字节为单位的计数,每个CORE CLK周期有4个八位字节。
SYSREF DELAY:位于SYSREF HANDLING寄存器中:该寄存器将内部LMFC边界相对于SYSREF延迟整数个CORE CLK周期。因此,ProgramSYSREF DELAY为0x1将导致LMFC延迟4个八位字节。
要遵循的步骤:
步骤1:
计算多帧(MF)大小。
- MF = F * K(其中F =帧大小,K =每个多帧的帧数)。
MF的值越大,目标窗口就越大。建议选择K值,使MF至少为32个八位字节。
第2步:
根据MF大小计算八位字节的TW最大值。
这是:
- 最大=(MF-0x8)。
- 最小值= 0x8。 (0x8 = 2个CORE_CLK周期)。
第3步:
配置系统并启动链接。此时所有延迟都可能是未知的。
步骤4:
链路运行后,为每个使用的JESD204B通道读取JESD204B RX内核BUFFER ADJUST寄存器。
选择从BUFFER ADJUST寄存器读取的最小值,并调用该值BUF_FILL。
第5步:
如果BUF_FILL落在最小值和最大值之间(在步骤2中计算),则数据到达在安全TW内,并且不需要进一步的操作。
但是,如果BUF_FILL不在最小值和最大值之间,则应采取以下操作。
1)使用如下计算的延迟值对SYSREF DELAY寄存器进行Program:
- 如果BUF_FILL值为低,则Program的SYSREF DELAY值应增加1或2,如下所示:
- 如果BUF_FILL <Min – 4,那么SYSREF DELAY应该增加2
- 如果BUF_FILL <Min但是> Min – 4,那么SYSREF DELAY应该增加1
- 如果缓冲区几乎已满,则Program的SYSREF DELAY值应增加3或4(即1或2加上2的低裕度),如下所示:
- 如果BUF_FILL> Max + 4,那么SYSREF DELAY应该增加3
- 如果BUF_FILL> Max但<Max + 4,那么SYSREF DELAY应该增加4
2)重置JESD204B接收内核并重新初始化链路。必须在修改的SYSREF_DELAY值影响LMFC之前执行此步骤。
3)重新读取每个通道的BUFFER ADJUST寄存器,以确认数据到达现在是否在目标窗口内。
在配置此链接时,应存储计算的SYSREF DELAY值以供将来使用。
没有回复内容