FPGA与ADC数字数据输出的接口

描述

将现场可编程门阵列 (FPGA) 连接到模数转换器 (ADC) 输出是一项常见的工程挑战。本文概述了各种接口协议和标准,以及在高速数据转换器实现中使用低压差分信号(LVDS)的应用技巧和技术。

界面样式和标准

将FPGA连接到ADC数字数据输出是一个常见的工程挑战。由于ADC使用各种数字数据样式和标准,因此任务变得复杂。单数据速率(SDR)CMOS对于低速数据接口非常常见,通常低于200 MHz。在这种情况下,数据由发射器在时钟的一个边沿转换,并由另一个时钟边沿的接收器接收。这可确保数据在被接收器采样之前有足够的时间建立。在双倍数据速率(DDR)CMOS中,发射器在每个时钟边沿转换数据。这允许在相同的时间内传输两倍于SDR的数据;但是,接收器正确采样的时间更为复杂。

并行LVDS是高速数据转换器的通用标准。它使用差分信号,每个比特使用一个 P 线和一个 N 线,在最新的 FPGA 中实现高达 1.6 Gbps 的 DDR 或 800 MHz 的速度。并行LVDS的功耗低于CMOS,但需要两倍的导线数量,这使得布线变得困难。虽然不是LVDS标准的一部分,但LVDS通常用于具有源同步时钟系统的数据转换器。在此设置中,与数据同相的时钟与数据一起传输。然后,接收器可以使用此时钟更轻松地捕获数据,因为它现在知道数据转换。

FPGA逻辑通常不够快,无法跟上高速转换器的总线速度,因此大多数FPGA都有串行器/解串器(SERDES)模块,用于将转换器侧的快速窄串行接口转换为FPGA侧的宽窄并行接口。对于总线中的每个数据位,该模块输出2、4或8位,但速率为时钟速率的二分之一、四分之一或八分之一,从而有效地反序列化数据。数据由FPGA内部的宽总线处理,其运行速度比进入转换器的窄总线慢得多。

LVDS信令标准也用于串行链路,主要用于高速ADC。串行LVDS通常用于引脚数比接口速度更重要的情况。通常使用两个时钟,即数据速率时钟和帧时钟。并行LVDS部分提到的所有注意事项也适用于串行LVDS。并行LVDS仅由多条串行LVDS线路组成。

FPGA

图1.将ADC连接到FPGA有不同的接口可能性。

我2C 使用两条线:时钟和数据。它支持总线上的大量器件,无需额外的引脚。我2C 是一种相对较慢的协议,工作在 400 kHz 至 1 MHz 范围内。它通常用于零件尺寸是一个问题的慢速设备。我2C也经常用作控制接口或数据接口。

SPI 使用三根或四根线:

时钟

数据输入和数据输出(4线)或双向数据输入/数据输出(3线)

芯片选择(每个非主设备一个)

SPI支持的器件数量与可用片选线的数量一样多。它提供高达约100 MHz的速度,通常用作控制接口和数据接口。

串行端口(SPORT)是一种基于CMOS的双向接口,每个方向使用一个或两个数据引脚。其可调字长为非 8% 分辨率提供了更好的效率。SPORT 提供时域多路复用 (TDM) 支持,通常用于音频/媒体转换器和高通道数转换器。它提供每个引脚约 100 MHz 的性能。SPORT在Blackfin处理器上受支持,并在FPGA上提供直接的实现。SPORT 通常仅用于数据,但可以插入控制字符。®

JESD204是JEDEC标准,用于单个主机(如FPGA或ASIC)与一个或多个数据转换器之间的高速串行链路。最新规范为每个通道或差分对提供高达 3.125 Gbps 的速率。未来的修订版可能会指定 6.25 Gbps 及以上。通道采用8B/10B编码,将通道的有效带宽降低到理论值的80%。时钟嵌入在数据流中,因此没有额外的时钟信号。多个通道可以绑定在一起以提高吞吐量,同时数据链路层协议可确保数据完整性。与简单的LVDS或CMOS相比,JESD204在FPGA/ASIC中需要更多的数据成帧资源。它以更昂贵的FPGA和更复杂的PCB布线为代价,大大降低了布线要求。

FPGA

图2.SERDES模块位于FPGA接口中,转换器上具有高速串行接口。

一般性建议

一些一般性建议有助于ADC和FPGA之间的接口。

在接收器(FPGA 或 ASIC)上使用外部电阻端接,而不是内部 FPGA 端接,以避免由于不匹配而导致的反射,从而破坏时序预算。

如果在系统中使用多个ADC,请勿使用来自一个ADC的一个数控振荡器(DCO)。

在向接收器布置数字走线时,不要使用大量的长号,以保持所有走线的长度相等。

在CMOS输出上使用串联端接来降低边沿速率并限制开关噪声。验证是否使用了正确的数据格式(二进制补码、偏移二进制)。

对于单端CMOS数字信号,逻辑电平以约1 V/ns的速度移动,典型输出负载最大值为10 pF,典型充电电流为10 mA/位。应通过使用尽可能小的容性负载来最小化充电电流。这通常可以通过仅驱动一个具有最短走线的栅极来实现,最好没有任何过孔。通过在数字输出和输入中使用阻尼电阻器,也可以将充电电流降至最低。

阻尼电阻和容性负载的时间常数应约为采样速率周期的10%。如果时钟速率为100 MHz,负载为10 pF,则时间常数应为10 ns的10%或1 ns。在这种情况下,R 应为 100 Ω。为了获得最佳信噪比(SNR)性能,1.8 V DRVDD优于3.3 V DRVDD。然而,当驱动大容性负载时,SNR会降低。CMOS输出可在高达约200 MHz采样时钟下使用。如果驱动两个输出负载或走线长度超过 1 或 2 英寸,建议使用缓冲器。

应小心处理ADC数字输出,因为瞬态电流会耦合回模拟输入,从而增加ADC的噪声和失真。

图3所示的典型CMOS驱动器能够产生较大的瞬态电流,尤其是在驱动容性负载时。必须特别注意CMOS数据输出ADC,以使这些电流最小化,并且不会在ADC中产生额外的噪声和失真。

FPGA

图3.典型的CMOS数字输出驱动器。

典型示例

图4所示为16位并行CMOS输出ADC的情况。每个输出端的负载为10 pF,模拟一个栅极负载和PCB寄生效应,每个驱动器在驱动10 pF负载时产生10 mA的充电电流。

FPGA

图4.使用串联电阻来最小化CMOS数字输出的充电电流。

因此,16位ADC的总瞬态电流可高达16 ×10 mA = 160 mA。这些瞬态电流可以通过在每个数据输出中串联一个小电阻R来抑制。应选择电阻值,使RC时间常数小于总采样周期的10%。对于 fS= 100 MSPS,RC 应小于 1 ns。C = 10 pF时,R约为100 Ω是最佳的。选择较大的 R 值会降低输出数据建立时间并干扰正确的数据捕获。CMOS ADC输出端的容性负载应限制为单个栅极负载,通常是外部数据采集寄存器。在任何情况下,数据输出都不应直接连接到嘈杂的数据总线。必须使用中间缓冲寄存器,以尽量减少ADC输出的直接负载。

图5显示了采用CMOS封装的标准LVDS驱动器。标称电流为3.5 mA,共模电压为1.2 V。因此,当驱动100 Ω差分终端电阻时,接收器每个输入端的摆幅为350 mV p-p。这相当于700 mV p-p的差分摆幅。这些数字来自LVDS规范。

FPGA

图5.典型的LVDS驱动器设计。

有两种LVDS标准:一种由ANSI定义,另一种由IEEE定义。虽然这两个标准相似并且通常相互兼容,但它们并不相同。图6比较了两种标准的眼图和抖动直方图。与ANSI标准320 mV p-p相比,IEEE标准LVDS的摆幅降低了200 mV p-p。这有助于节省数字输出的功率。因此,如果 IEEE 标准能够适应需要与接收器建立的应用和连接,请使用 IEEE 标准。

FPGA

 

FPGA

图6.ANSI 与 IEEE LVDS 标准。

图7比较了长走线长度超过12英寸或30 cm的ANSI和IEEE LVDS标准。这两个图形均按 ANSI 版本标准驱动。在右图中,输出电流加倍。将输出电流加倍可清除眼图并改善抖动直方图。

FPGA

 

FPGA

图7.ANSI 与 IEEE LVDS 标准,迹线超过 12 英寸。

请注意图 8 中长迹线对 FR4 材料的影响。左图显示了理想的眼图,右图位于发射器处。在40英寸外的接收器上,眼睛几乎闭合,接收器难以恢复数据。

FPGA

图8.FR-4通道损耗的影响。

在图9中,数据位的可视模拟数字显示显示第14位永远不会切换。这可能表明器件、PCB或接收器存在问题,或者无符号数据不够大,无法切换最高有效位。®

FPGA

图9.AD9268缺少位 14 的 ADC。

图10显示了前一个数字数据的频域视图,其中第14位未切换。该图显示该位很重要,并且系统中某处存在错误。

FPGA

图 10.缺少位14的AD9268 ADC频域图

图11是相同数据的时域图。数据不是平滑的正弦波,而是偏移的,并且在整个波形的各个点都有明显的峰值。

FPGA

图 11.缺少位14的AD9268 ADC时域图

在图12中,两个位短接在一起,而不是遗漏一点,以便接收器始终在两个引脚上看到相同的数据。

FPGA

图 12.AD9268 具有第9位和第10位短路的ADC。

图13显示了两个位短接在一起的相同情况的频域视图。虽然基本音清晰存在,但本底噪声明显低于应有的水平。地板的扭曲程度取决于哪些位短路。

FPGA

图 13.AD9268 ADC频域图,第9位和第10位短接在一起。

在图 14 所示的时域视图中,这个问题不太明显。虽然在波的波峰和波谷中会损失一些平滑度,但当采样率接近波形的频率时,这种情况也很常见。

FPGA

图 14.AD9268 ADC时域图,第9位和第10位短接在一起。

图15显示了一个时序无效的转换器,在本例中是由建立/保持问题引起的。与以前的错误不同,以前的错误通常在数据的每个周期中表现出来,时序错误通常不太一致。不太严重的时序错误可能是间歇性的。这些图显示了不符合时序要求的数据采集的时域和频域。请注意,时域中的误差在周期之间不一致。另外,请注意FFT/频域中本底噪声升高。这通常表示缺少位,这可能是由不正确的时间对齐引起的。

FPGA

图 15.AD9268具有无效数据和时钟时序的时域图

图16是图15所示时域时序误差的近距离视图。同样,请注意,每个周期的错误不一致,但某些错误确实会重复。一个例子是此图中几个周期的谷上的负峰值。

FPGA

图 16.AD9268放大时域图,数据和时钟时序无效。

结论

本文讨论了标准接口 — SPI、I2C、SPORT、LVDS 和 JESD204A——用于将 FPGA 连接到 ADC。随着数据速率的进一步提高,FPGA与ADC的接口仍将是一个共同的挑战。JESD204B支持12.5 Gbps,JESD204C将迁移到32 Gbps。

审核编辑:郭婷

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分