JESD204B应用手册(四):掌握JESD204B功能接口的关键问题

作者:小青菜哥哥
原文链接:https://blog.csdn.net/XiaoQingCaiGeGe/article/details/104169300
声明:本文由原创博主授权转发,如需转载请联系博主

JESD204B是JEDEC委员会制定的一种串行接口标准,这种接口标准定义了数据转换器(ADC、DAC)和数字处理器(FPGA、 ASIC等)之间的数字信号传输方式。它作为第三代标准,补充了JESD204、JESD204A这前两代标准的不足之处。它的主要优点包括:极为简单的布线减少了PCB面积、不需考虑数据传输的建立时间和保持时间、使得转换器芯片封装更小。

虽然JESD204B接口带来了硬件设计的诸多便利,但是它相比于传统的CMOS、LVDS接口来说具有更为复杂的协议标准,因此要实现起来其实并不容易。

JESD204B概述

与更通用的并行数据传输方式相比,JESD204B标准提供了一种方法,通过更高速的串行接口将一个或多个数据转换器连接到数字信号处理设备(通常是ADC或DAC连接到FPGA)。该接口的最高速度可达12.5 Gbps/ lane,使用帧结构的串行数据链路,并在数据链路中嵌入时钟和校准字符。该接口通过减少设备之间的布线数量,从而减少了布局布线的匹配需求,并消除了建立和保持时间约束问题,最终简化了高速转换器数据接口的实现。

但是JESD204B的实现需要在数据传输之前建立一个高速稳定的链接,因此需要新的挑战和技术来识别接口是否正常工作,如果没有正常工作,该如何处理。

简要来说,JESD204B接口利用三个阶段来实现链路同步,也就是数据传输工作:

1,代码组同步(CGS)

2,初始化链路同步(ILAS)

3,正常数据传输

完成链路同步所需的信号有系统参考时钟(设备时钟)、至少一组CML物理信号连接(a lane)以及同步信号(SYNC~和可选的SYSREF)。以上所需的信号根据JESD204B子类的不同会不一样:

子类0需要设备时钟、lanes、SYNC~
子类1需要设备时钟、lanes、SYNC~、SYSREF
子类2需要设备时钟、lanes、SYNC~
 
子类0能够适应绝大多数应用,因此本篇将着重介绍。子类1和子类2则比子类0多出了一个功能,即提供了建立确定性延迟时间的手段,这对于某些需要同步多个设备或需要系统同步或者需要固定的信号延迟的应用就显得很重要。

图1展示的是一个简洁的JESD204B链路传输过程,数据从ADC内部处理后经过一个lane传输到FPGA。JESD204B链路的主要参数如下:

M:转换器数量
L:lane的数量
F:每帧字节数量
K:每个多帧里的帧数量
N:转换器的分辨率
N,:每个采样数据的位数(4的倍数)。N,=N+控制位+空位
 
子类0:同步步骤

如上所述,许多应用可以使用相对简单的子类0操作模式,这也是建立和验证链路的最简单方式。子类0使用三个阶段来建立和监控同步: CGS阶段、ILAS阶段和数据阶段。与每个阶段相关的图形以不同的格式表示数据,它们可以在示波器、逻辑分析仪或FPGA虚拟I/O分析仪(如Xilinx ChipScope或Altera SignalTap)上观测到。

代码组同步阶段(CGS)

图2显示了可以通过链接监测到的CGS阶段的最重要部分,以及图中5个突出显示的点的描述。

1. Rx通过驱动SYNC拉低向TX发出同步请求。

2. Tx连续传输/K28.5/字符(10位/字符)。

3.当Rx接收到至少4个连续的/K28.5/符号没有错误,然后Rx驱动SYNC引脚拉高。

4. Rx必须接收至少4个/K28.5/无误字符,否则同步失败,链接保留在CGS阶段。

5. CGS阶段结束,ILAS阶段开始。

初始化链路同步阶段(ILAS)

在ILAS阶段,Tx通过发送4个多帧来确保Rx对齐所有链路的lanes,并允许Rx验证链路参数。Rx端的lane之间对齐是必需的,以适应走线长度的差异和任何字符歪斜。每个连续的多帧都紧跟前一多帧(图4)。无论扰码功能是否启用,ILAS阶段总是不加扰地传送数据。

SYNC拉高后,ILAS阶段开始。当ADC传输模块在内部跟踪到一个完整的多帧后,它将开始传输4个多帧。此时多帧内部的采样数据都使用的是虚假的空采样数据填充,以保证一个多帧的完整性。4个多帧结构如下:

1. 多帧1:以/R/字符[K28.0]开始,以/A/字符[K28.3]结束
2. 多帧2:以/R/字符开始,紧跟/Q/[K28.4]字符,然后紧跟超过14个字节的链接配置参数,最后以/A/字符结束
3. 多帧3:和多帧1结构一致
4. 多帧4:和多帧1结构一致

如图5所示为4个多帧用到的控制字符:

如表1所示为发送器JESD204B的14个字节的链路配置参数,其具体含义在官方标准中和芯片手册里都会详细给出:

数据传输阶段

在数据传输阶段,同样用特殊的控制字符对帧的对齐状况进行监控,且字符替换规定只能在帧结束时使用。由于在数据传输阶段没有额外的链路开销来满足数据或帧对齐,因此字符替换允许在“当且仅当”当前帧的最后一个字符可以替换为上一帧的最后一个字符时,在当前帧边界处发出一个对齐字符,这有助于(偶尔)确认自ILAS序列以来的对齐没有改变。其具体的字符替换发生时刻为:

1. 如果数据没有被加扰,则字符替换发生在当检测到当前帧或者多帧的最后一个字符等于上一个帧的最后一个字符的时刻。
2. 如果数据被加扰,当帧的最后一个字符为0xFC时或多帧的最后一个字符为0x7C时。

Tx和Rx均有一套多帧计数器,计数器从0累加到F*k-1,然后周而复始。信号SYSREF就是用来复位并同步Tx、Rx端的多帧计数器。

当SYNC拉高后,Tx端就会在下一个多帧计数器的0点开始进入ILAS阶段。如果F*K传输所需时间>发送编码时间+走线延迟时间+接收解码时间,那么接收到的数据将在下一个LMFC之前传出Rx的SerDes,进而进入FIFO中,在下一个LMFC来的时候,再从FIFO中读取接收数据。通过LMFC这种机制,就可以控制Tx端发送数据到Rx的FIFO读出数据的这段时间不变,这就是所谓的确定性延迟。

推荐阅读