JESD204B作为高速串行总线,他不需要LVDS那样的等长布线,给layout带来难度。他的接口总线有这么几部分组成:
Device Clock,SYSREF,SYNC, LANE 组成,其中,lane是数据传输的通道,连接于ASIC和CONVERTER之间。另外俩属于非常低速的信号,用于传递同步信息,帮助LANE口同步。大致框图如下:
JESD204B建链是个复杂的过程,也是该技术的难点。今天,首先介绍建链第一步:CGS。
CGS ( Code Group Synchronization) 实现过程如下:
1. Rx 发出同步请求,通过拉低 SYNC信号实现。
2. Tx 收到请求之后,不断发送控制字符/K/ 码(经过8/10b编码)
3. Rx在连续收到4个正确的/K/之后拉高SYNC,表示CGS第一步完成!!!注意,不是CGS完成,仅仅是第一步!!!
4. Tx在收到SYNC拉高后,并且等待接下来的LMFC(本地多帧时钟,由器件通过SYSREF在器件内部产生,今儿不讨论,以后说)脉冲到来后,停止发送/K/,进入下一个同步过程。
5. Rx在收到4个正确的/K/后,由于SYNC信号的延迟,还会收到更多的/K/和之后的其他码子,Rx会继续判断他们的正确性。如果连续4个码子(符号)正确,那么 CGS才算完成。如果期间发现1个错误码子(所有码子都会被8/10b解码来判决),那么,计数器清0,重新数4个,如果累计,注意是累计出现3个错码,那么将回到步骤1,拉低SYNC,重新请求同步!
让我们来看看收发两端的FLOW:
Tx:
Rx:
大家对着图会更好理解一些。
总结:
1. JESD204B的CGS是同步过程中的第一环,也是操作SYNC信号的一环。如果发现实际中SYNC信号忽高忽低,那么要关心是否这里出了问题。因为,随着环境的温度变化,振动等,对高速器件的影响和链路影响是很大的(速度太高,没办法),大家要注意
2. 本文所有的码子都是经过8/10b编码的,这是一种被以太网等众多通信协议普遍采用的编解码方式,有点在于简单,能发现错误,能保证AC耦合(0 1 在一段时间一样多)。
3. 本文的例子均是基于subclass 1,2,也就是速度更高一些的器件(12G+)
4. 对于多个器件,发端必须等到最后一个器件的SYNC拉高之后才等待LMFC到来
谢谢分享!!