一、为什么要使用JESD204B
JESD204B是JEDEC协会针对数据转换器产品推出的一个新标准。它能简化数据从转换器传输到ASIC、FPGA这类逻辑器件的过程。
首先是能减少、简化PCB板的面积。以前用LVDS接口的器件时,得处理一大堆信号通道。但用JESD的话,就能把这些通道整合压缩成几条高速串行通道,空间占用有时候能降到原来的四分之一。
另外一点是,带JESD204B接口的器件封装更小了,通常能缩小25%左右。
至于功耗,虽说JESD接口得用PLL(锁相环)和高速CML驱动器,但整体功耗和用LVDS方案时那些LVDS驱动器的总功耗差不多。
而且借助SERDES(串并转换)和CDR(时钟数据恢复)技术,JESD标准还能支持更高的频率,扩展性很好。
通道数量减少了,再加上有了时钟数据恢复模块,时序接口也变简单了——再也不用去对齐所有LVDS通道了。
还有一点,JESD204B是标准接口,这意味着产品更新换代时很方便。同一系列、同一封装的ADC或数据转换器,不管分辨率和速度怎么变,都能直接换上去用。
不过这个标准接口也有缺点。一是链路延迟增加了,比LVDS标准要慢些。
二是FPGA的固件(底层程序)复杂度变高了,如果想用其他厂商的实现方案,可能还会有授权方面的问题。
JESD204B标准会用在很多领域,比如无线和有线通信、航空航天与国防、工业以及测试测量这些应用场景。
总的来说,JESD204B标准其实就是利用了SERDES技术——现在FPGA里基本都有这技术——来简化接口连接。在我看来,它的优势还是很多的。
二、如何选择JESD204B协议
JESD204B标准定义了0、1、2三个不同的子类,而这款ADC支持所有这三个子类。现在我已经打开了配置界面,需要对器件进行编程设置。那么该选哪个呢?每个子类又各有什么优缺点?
子类之间存在诸多细微差异,但我直接切入重点,帮大家判断哪个子类最适合你的应用。其实,子类之间的核心区别在于是否需要实现时间基准对齐以及如何实现,因为这是实现“确定性延迟”的必要条件。
数据在转换器中传输时,会进入串行器,再从串行器输出并经过一些缓冲电路,这个数据流过程会产生一定的延迟。如果你需要这个延迟是固定、恒定且可预知的,那就需要确定性延迟。
不同子类在这一点上表现不同:子类0无法实现确定性延迟,而子类1和2则可以。它们实现的方式也不同:子类1通过SYSREF信号来对齐时间基准;子类2则通过SYNC信号来实现时间基准对齐。
来看JESD204B子类0的发送器和接收器框图,能看到串行数据流的走向,有一些设备时钟输送到发送器和接收器,还有一个SYNC信号,整体设置相当简单。这种配置无法实现确定性延迟。
再看子类1,它的结构稍复杂一些,增加了一个额外的SYSREF信号,用于实现时间基准对齐,其他信号大致保持不变。
而在子类2中,时间基准对齐改由SYNC信号实现,其设置看起来要简单一些。
我们来总结对比一下不同子类的特点:
- 是否支持确定性延迟?子类0不支持,子类1和2支持,但子类2存在速度限制。
- 是否需要SYSREF信号?子类1是必需的。
- 时钟和同步信号方面,子类1的设置稍复杂,因为它需要SYNC信号、SYSREF信号和设备时钟;而另外两个子类只需两种不同的信号。
- SYNC信号的时序关键性:在子类2中,SYNC信号的时序至关重要。
- 接口硬件复杂度:子类0最低,但它无法实现确定性延迟;子类1的复杂度最高。
再看信号通路中的实际链路延迟:非确定性配置(子类0)的延迟约为8到100个采样时钟周期;确定性配置(子类1和2)的延迟则为15到120个时钟周期。由此可见,选择不同的子类需要权衡考量。
举几个例子:
- 无线通信中继器:属于窄带应用,无确定性延迟要求,可选用任意子类。
- 软件无线电:属于宽带应用(意味着高采样率),且需要确定性延迟,可能会选用子类1或2。
- 雷达或成像应用:属于宽带应用,采样率超过250Msps,且需要确定性延迟和多设备同步,这类应用显然适合选用子类1。
- 示波器或频谱分析仪:属于宽带高速应用,可根据应用是否需要确定性延迟,选用子类0或1。
所以归根结底,选择哪个子类取决于应用是否需要确定性延迟以及设备时钟的速度。大多数JESD204B器件都支持子类1,且它适用于大多数应用,但它未必是最适合你应用的选择。
三、JESD204B数据流处理过程
要理解数据流,得先搞明白控制数据流的时钟信号。在JESD204B链路里,有个中央时钟发生器,负责产生设备时钟和SYSREF时钟。这些时钟在发送端(比如ADC这边)用来生成数据,在接收端(比如FPGA这边)则用于后端数据处理。同时,它们还会用来驱动发送端和接收端各自的帧时钟发生器和复帧时钟发生器——这两种时钟是收发两端之间的时序基准。
这些时钟会被协议的各个层用来控制数据流,具体流程是这样的:
在发送端(以ADC为例):
1、ADC内核先生成采样数据,然后把数据传到传输层。传输层会把并行的采样数据映射成串行数据格式,输出的就是一个数据帧。
2、这个数据帧可以选择进行加扰处理,让数据看起来更像伪随机比特序列。
3、接着数据传到链路层,在这里会进行8b/10b编码——这样数据传输时能保持直流平衡。链路层还会在串行数据里插入特殊字符,用来实现对齐,确保收发两端同步。
4、最后,数据传到物理层,在这里完成串行化,然后通过串行通道从发送端传到接收端。
在接收端(以FPGA为例):
1、数据先被解串行化,然后传到链路层,在这里进行8b/10b解码。之前插入的特殊字符会被替换成实际数据字符,如果发送端做了加扰,这里就对应进行解扰。
2、数据再传到传输层,这里会把串行的帧数据重新映射回并行格式——这样就能恢复出原始的采样数据了。
3、最后,恢复的数据会被送到应用的后端数据处理模块。
还有个值得注意的通信通道是SYNC信号,它是接收端传给发送端的反向通道,用来传递链路重同步信息,或者接收端向发送端报告错误。
建议大家多看看这个数据流框图,好好消化这些概念和术语。搞懂协议各层的功能,以及数据在各层之间的流转方式,是理解这个接口如何影响你的应用的关键。
四、JESD204B物理层介绍
JESD204B是JEDEC协会针对数据转换器产品推出的新标准,能简化数字数据传输。而信号完整性至关重要,它直接关系到接口能否保持低误码率。接口收发数据的具体规范,都写在JESD标准的物理层定义里。最好在系统设计初期就搞懂物理层,知道它的能力和局限,这样后期项目推进时就不用再搬来这台高端示波器救火了。
下面我来讲讲物理层的一些基础内容。物理层结构挺简单的,核心就是发送端和接收端。
先看发送端:控制信息和数据先进入串行器。8位的字节(octet)会先经过8b/10b编码变成10位,然后进入10比1的多路复用器(MUX),完成并行到串行的转换。接着,这个比特流会送到一个可选的脉冲整形或信号加重模块,处理后的信号再传给CML驱动器,最后通过差分信号形式传给接收端。
接收端基本就是反过来操作:先接收信号,可能会用均衡技术改善信号完整性,然后把数据送到时钟数据恢复模块(CDR)——这里会从串行流里提取时钟,再用相位对齐的时钟精准捕获数据。之后,比特流进入串并转换器(也就是1比10的解复用器DeMUX),把串行比特流还原成10位的编码字节。
有个关键部分千万别漏了,就是连接收发端的“通道”——它负责传输数据,可能包括PCB上的微带线、连接器这些。
JESD204B标准把物理层按传输速率分成了三个等级,最高能到12.5Gbps。
不同等级的区别主要在时序特性(比如信号的上升沿、下降沿时间,还有误码率要求),以及电气特性(比如发送端的共模电压、差分电压摆幅,还有接收端需要的输入电压范围)
核心要求是:不管在发送端还是接收端,信号都得满足“眼图模板”的标准,这样才能精准捕获数据、保持低误码率。
但一定不能忽略收发端之间通道的影响。JESD204B标准对通道有规定,比如允许的衰减量,这可以用SDD21传输系数随频率变化的曲线图来表示。
图里的黑色曲线是符合标准的通道,大概相当于FR4板材上8inch长的微带线,传输速率约6.4Gbps;红色曲线是不符合标准的通道,大概是FR4板材上20inch长的微带线,同样跑6.4Gbps。从这儿能看出来,通道长度是有明确限制的。
为了解决这个问题,很多芯片会用信号加重或均衡技术,通过调整频率响应来抵消通道的损耗。比如信号加重,要么衰减低频信号,要么放大高频信号,形成一个高通响应,以此抵消通道带来的损耗。
这有个例子:左边是关闭预加重/去加重时,信号经过通道后的眼图,看起来很模糊;打开加重功能后,眼图就变清晰了,数据就能被准确捕获。
通过优化加重和均衡技术,可以突破数据传输的速率和距离限制。比如这个例子:在FR4板材上20inch长的通道里传输7.4Gbps的数据,最终接收端的眼图依然能满足JESD204B的标准。
JESD204B物理层标准还规定了合规性要求,包括信号从发送端到接收端的耦合方式,比如串行通道的交流耦合和直流耦合都给了示例。
不过,设备时钟和SYSREF接口的耦合方式,标准里没明确规定,但可以参考下图一些经过验证的方案,SYNC接口也能这么处理。
只要是符合JESD204B标准、满足所有物理层要求的收发设备,大多情况下都是兼容的。所以实际上,系统硬件设计师面临的最大挑战是通道设计——在高比特率、长距离传输时,通道会导致信号完整性下降。物理层规定的误码率要求,确实会限制普通设备的通道速率和长度,但合理的通道设计,再加上运用加重或均衡技术,就能突破性能限制,支撑那些更具挑战性的新应用。
五、JESD204B传输层介绍
按照JESD204B标准传输层的规定,数据转换器的采样数据是怎么打包成数据帧,再放到串行数据通道里的。
首先得说,传输层的核心就是定义怎么把数据转换器的采样数据映射成帧。举个例子:一个数据转换器件,里面包含8个独立的ADC核心(也就是8个模数转换核心)。每个ADC核心都会按顺序输出数据,这些数据会被送到JESD核心的传输层里。
接下来看传输层用来描述打包特性的几个关键参数。第一个是M=8,代表一个器件里有8个转换器;然后是S,指的是每个转换器每帧的采样数;还有N=11,这个是转换器的分辨率,也就是11位。
现在要把这8个核心的数据全都打包成一帧。我们选了4个通道来传这些数据,所以L=4(L代表一个器件对应的通道数)。
这4个通道里,数据得打包成“字节”(也就是8位一组,专业里叫octet)。我们每帧每个通道要打包4个字节,所以F=4(F就是每帧每个通道的字节数)。
具体怎么打包呢?你看,第一个ADC核心的数据,会装进0号通道的前两个字节里。核心0数据的高位(MSB)会放在第一个字节,剩下的低位(LSB)放在第二个字节,后面还会加C1和C0两个控制位——所以控制位数量CS=2。
不过,光装核心0的数据和控制位,还填不满第二个字节,那剩下的位置就会放一些“尾位”(tail bits)。另外还有个参数N',指的是每个采样数据的位数加上控制位的位数,这儿就是11+2=13。
接下来就继续打包其他ADC核心的数据。比如核心1的数据,会装进0号通道的后两个字节里。就这么一步步把8个ADC核心的数据全塞进一帧里。
传输层还有几个其他参数得提一下:K是每个“多帧”(multiframe)包含的帧数,这个是用户可以自己定义的;还有RBD,也就是“释放缓冲延迟”,这和延迟有关,也是用户能自己设的。
对了,很多芯片手册都会把JESD204B数据转换产品的传输层成帧信息,在各自的器件手册里都写得明明白白。虽说手册里的内容不像我们现在看的这个生动彩色的示意图这么直观,但只要你搞懂了我们讲的概念和术语,手册里的信息就足够帮你搞定传输层的数据映射了。
六、如何在低成本基板上延长JESD204B链路的传输距离
首先得说下,JESD204B链路是一种高速串行数据链路。发射器和接收器之间的串行链路介质,主要是PCB材料上的一对差分线;如果是多板系统,可能还会包含连接器。硬件设计的核心目标,就是优化链路中每条串行通道的信号质量。不过不用把每条通道的长度做得完全一样,因为这个标准本身就有能补偿通道间延迟差异的功能。
衡量串行链路质量的一个关键指标,是接收端的眼图。
要是接收端眼图的“眼睛”比标准规定的模板还小,那就说明链路质量不够,得想办法把“眼睛”调大。这张图就是个眼图示例,能看到它的余量比眼图模板高不少,信号质量挺好。
我们平时做电路板常用的FR4这类材料,在高频信号下的衰减挺明显的。当然也有高频损耗更低的材料,但这类材料通常贵很多。而且链路的损耗还和传输距离直接相关——这也是为什么JESD204B标准里提到,它的链路传输距离一般最多到200mm。所以说,电路板用的介质材料,再加上链路的总长度,这两个因素共同决定了高频信号会有多少损耗,而这种损耗会让接收端眼图的质量变差。
48