文章来源:数字站
功能模型
下图是JESD204B的发送端的框图,传输层接收的数据经过加扰(可选)后到达数据链路层,数据链路层把输入数据经过8B10B编码后输出给物理层,物理层将8B10B编码后的10位并行数据转换为差分串行数据输出。
其中数据链路层通过链路建立过程同步JESD204B链路,链路建立包括代码组同步(CGS)、初始通道对齐序列(ILAS)、用户数据三个阶段。
图1 JESD TX侧功能模型
上图包含两个比较重要的信号,SYNC信号由JESD204B的RX侧发出,触发TX侧开始发送K28.5来完成代码组同步(CGS)。LMFC是本地多帧时钟信号,与实现确定性延迟有很大关系。
下图是JESD204B接收端的框图,接收端通过CDR和接收数据去调节参考时钟和数据的相位,恢复出与数据对齐的时钟信号,然后将串行数据转换为并行数据,这部分与前面GTX的接收端原理一致。
图2 JESD RX侧功能模型
并行数据经过8B10B解码,这个过程可能会检测K码,完成数据对齐之类的功能。在接收端的数据链路层中会有buffer,主要用于初始通道对齐序列(ILAS)。在多帧时钟LMFC的有效沿处同时释放多个通道中buffer的数据,来达到各个接收通道间的数据对齐,然后对输出数据解扰(可选),最后把对齐且解扰后的数据通过传输层输出给用户即可。
本文主要讲述JESD204B子类一的数据链路建立过程,后文讲解JESD204三种子类模式的链路建立,进而理解各种子类实现确定性延迟的方式。
JESD204B链路建立过程
数据链路建立的过程如下所示,用于RX/TX之间的同步对齐,主要包括码组同步(Code Group Synchronization)、帧同步(Initial Frame Synchronization)、Lane同步(Initial Lane Synchronization)。
SYNC是接收端向发送端发出的信号,该信号拉低时,发送端发送K28.5,开始进行代码组同步。
Serial Data是发送端的数据信号,CLKIN是数据链路层的输入时钟信号(device clock),与SYSREF对齐,且一般是由同一个时钟芯片提供的。
SYSREF是由时钟芯片提供的系统同步信号,用于同步TX和RX的Frame CLK。
图3 JESD204B数据链路建立时序图
TX和RX内部数据与Frame Clk对齐,LMFC是多帧时钟,用于多通道数据对齐和确定性延时。
当整个系统初始化完成之后,时钟芯片把TX和RX的SYSREF同时拉高生成各自的Frame Clk。然后RX把SYNC信号拉低,TX在CLKIN(Device clock)检测到SYNC拉低后,开始发送K28.5,用于码组同步。RX所有lane收到连续4个K28.5后会将SYNC拉高,完成码组同步。TX检测到SYNC拉高后,在下个LMFC的边缘处开始发送ILA序列来完成帧同步和通道同步。
时钟同步
JESD204B的时钟架构如下图所示,时钟芯片同时给发送端和接收端提供主时钟Device Clock和对应的SYSREF信号。Device Clock经过分频后得到帧时钟Frame Clk和多帧时钟LMFC。
根据后文可知确定性延迟与LMFC的边沿密切相关,因此接收端和发送端的LMFC边沿必须同步,才能数据从发送端口到接收端用户逻辑输出数据之间的延时保持恒定且能够计算得到确定延时。
图4 子类一时钟架构
因此SYSREF与Device Clock必须满足一定的时序关系,一般SYSREF会拉高多个Device Clock时钟周期,Device Clock检测SYSREF上升沿。
图5 sysref与Device Clock的相位关系
Device Clock检测到SYSREF上升沿后,经过一段可以设置的延时(tD-LMFC)后,帧时钟和多帧时钟拉高,产生指定频率的帧时钟和多帧时钟,如下图所示。
图6 JESD204B数据链路建立时序图
Device Clock与SYSREF通常由同一时钟芯片提供,比如TI公司的LMK04828,可以同时提供7路Device Clock和7路SYSREF信号,并且独立设置每路时钟的延时。PCB的走线延时和Device Clock到不同器件的延时可能不同,可能造成建立时间不同,因此可以设置 Device Clock的下降沿采集SYSREF的状态。
码组同步
如下图所示,帧时钟同步后,接收端(RX)把SYNC信号拉低,发送端(TX)在检测到SYNC为低电平之后,在下个多帧时钟边沿后延迟一段时间(tD-K28,用户不能设置),开始发送K28.5字符。
图7 JESD204B数据链路建立时序图
接收端(RX)利用时钟恢复技术(CDR)和数据对齐在发送端输入数据流中找到K28.5字符,当所有链路通道上检测到指定数量(一般4个)连续的K28.5字符时,接收端(RX)把SYNC拉高,码组同步完成。
发送端(TX)检测到SYNC为高电平时,在LMFC的上升沿停止发送K28.5字符,接收端(RX)把检测到第一个非K28.5的字符作为帧起始,且每隔F个字节后认为是下一帧的起始位置,从而完成帧同步(Initial Frame Alignment)。
帧同步用于找到帧的起始位置,当码组同步完成后,则TX在LMFC的上升沿就会停止发送K28.5,RX侧在检测到第一个非K28.5的字符就认为是一个帧的开始且每隔F个octets 后RX就认为一个新的帧开始。
码组同步失败的一些可能原因:
1、如果SYNC始终为低电平,首先检查TX/RX的参数是否配置正确,然后检查TX/RX是否收到SYSREF用于同步TX/RX的本地多帧时钟,之后检查TX/RX的Device Clock是否正确,最后检查SYNC的极性设置是否正确(收发一方是否设置极性反转)。
2、如果SYNC在跳变,如下图绿色信号所示,如果跳变是周期性的,建议检测ILA序列是否正确,同时可以配合逻辑侧的告警信息进行排查。
图8 204B码组同步中SYNC 出现跳变
如果跳变是随机的,需要用示波器查看发送端(TX)发送的数据和SYNC的对应关系,从而判断是发送端(TX)问题还是接收端(RX)问题。
如下图是在调试一个实际的案例,发送端(TX)在发送ILA第一个帧应该是递增序列,然而发送序列并不是递增的。因此判断出发送端(TX)没有正常工作,最后定位到发送端(TX)时钟使用错误。
图9 204B键链中ILAS数据发送错误
初始通道同步ILAS
ILAS的主要作用是对齐链路的所有通道,验证链路参数,以及确定帧和多帧边界在接收器的输入数据流中的位置。如下图所示,当码组同步完成后,在下个LMFC边沿处开始发送ILAS序列。
图10 JESD204B数据链路建立时序图
ILAS是精确的四个或更多多帧 (F*K字节)长度,同时JESD204发送端(TX)的配置信息总是在第二个多帧中,此处只是将发送端的配置信息发送给接收端,接收端对比这些参数与自己的参数是否对应,如果不对应应该需要报错。
第一、第三、第四个多帧发送的数据格式一致,第二个多帧发送配置参数。ILAS的多帧均以字符/R/开始,以字符/A/结束。第二个多帧的字符/Q/之后的数据是链路配置参数。最后一个ILAS多帧的最后一个字符/A/发送后,开始发送用户数据。
图11 ILAS多帧结构
序列中的字符/A/是K28.3,字符/K/是K28.5,字符/R/是K28.0,字符/Q/是K28.4,字符/C/是发送端的配置数据,字符/D/是递增的数据序列。
如下图所示,输出ILAS序列时,字符/D/初始值为0,每输出一个字节数据加一,如果不输出控制字符或者配置数据,则输出字符/D/。
图12 ILAS的字符规范
而字符/C/总共包含14字节配置数据,对应如下表格所示,包含帧长、子类、JESD版本等等信息。
图13 配置信息列表
ILAS序列的发送和接收时序如下,首先在发送端(TX)的所有通道LMFC边沿开始输出ILAS多帧数据。由于各个通道的PCB走线延迟和外部干扰等,造成各个通道数据到达接收端的时间不同。
图14 ILAS多帧时序
接收端检测到字符/R/之后,会把其后面的数据存入buffer中,接收端下一个LMFC边沿到来,且所有通道的buffer中都有数据时,所有通道的buffer数据开始输出,从而实现通道间的数据对齐。
ILAS可能出现的问题:
1、发送端(TX)和接收端(RX)的配置参数(L,M,F,RES1等)不匹配导致ILAS同步失败。
2、图13中的FCHK是对表中数据进行校验,不是对整个ILAS帧的数据进行校验。
码组同步(CGS)和通道初始化序列对齐(ILAS)阶段完成后,发送端(TX)开始送出用户数据。在这一阶段,用户数据根据发送端(TX)中定义并转发到接收端(RX)的链路参数,以流形式从发送端(TX)传输到接收端(RX)。
接收端(RX)处理并监视收到的数据有无错误,包括运行差异不正确(8B/10B错误)、不在表中(8B/10B错误)、意外控制字符、ILAS不正确和通道间偏斜。
如果出现上述任何错误,将拉低SYNC(每个错误都需要重新同步)或者SYNC变为高电平并持续一个帧时钟周期向发送端(TX)报告。
发送端(TX)和接收端(RX)都可以选择加扰数据,但必须注意:要等到ILAS完成后出现第一个字节数据后才开始加扰,CGS和ILAS阶段的数据不会被加扰。
以上就是子类一数据链路建立的全部过程,理解时钟同步、码组同步、通道初始化序列对齐即可,后文讲解子类一的确定性延时。