FPGA与高速ADC LVDS数据接口设计考虑

2024-09-02 22:44

本文主要是介绍FPGA与高速ADC LVDS数据接口设计考虑,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

引言:本文描述了ADC和FPGA之间LVDS接口设计需要考虑的因素,包括LVDS数据标准、LVDS接口数据时序违例解决方法以及硬件设计要点。

1. LVDS简介

1.1 什么是LVDS?

LVDS(低压差分信号)标准是业界流行的差分数据传输标准,它是双线、低摆幅差分信号。其优点包括以下几点:

•低电源电压运行

•高速数据传输

•良好的共模噪声抑制

•噪音产生更少

图片

图1:LVDS发送器和接收器

LVDS是在100Ω的受控阻抗介质上进行基带数据传输,其中传输介质可以是PCB走线、背板或电缆。如图1所示,LVDS输出由约3.5mA的电流源组成,该电流源驱动差分对。LVDS接收器具有高直流输入阻抗,因此,LVDS驱动器的大部分电流流过100Ω的终端电阻器,在接收器输入端产生约350mV的电压。

1.2 LVDS标准

表1所示的ANSI/TIA/EIA-644-A(LVDS)标准定义了LVDS信号。本标准定义了驱动器输出和接收器输入特性,它是一个纯电气标准。它不包括基本规范、协议甚至完整的电缆特性,因为这些都取决于应用。这允许在许多应用中轻松采用,也允许参考标准根据所需的信号质量和媒体长度或类型指定所需的最大数据速率。

表1:ANSI/TIA/EIA-644(LVDS)标准

图片

1.3 LVDS优于单端标准的优势

LVDS中使用的差分数据传输方法比CMOS等单端方案更不容易受到共模噪声的影响。因为差分传输使用两条具有相反电流和电压摆动的线来传输数据,而不是CMOS中使用的一条线。LVDS接收器只会查看两个信号之间的差异,可以消除共模噪声。另外,由于磁场的抵消,差分信号也倾向于比单端信号辐射更少的噪声。此外,电流模式驱动器不易产生振铃和开关尖峰,进一步降低了噪声。LVDS与其他信号标准的比较如表2所示。

表2:LVDS与其他信号标准的比较

图片

ANSI/TIA/EIA标准基于一组限制性假设建议最大数据速率为655Mbps,并基于无损耗介质提供了1.923Gbps的理论最大值。数据传输的最终速率和距离取决于介质的衰减特性和来自环境的噪声耦合。

图片

图2:共模电压范围

2. ADC LVDS数据的边沿捕获分析

当LVDS接收器中没有足够的建立和保持时间来捕获数据时,称为边边沿获。由于LVDS对之间的PCB走线长度不匹配,可能会发生数据的边沿捕获。例如,如果6个DDR LVDS对没有以相同的距离路由到FPGA,则边沿捕获发生在12位ADC中。在边沿捕获期间,一些数据位可能会改变其值,导致FPGA不能正确采样ADC数据。

图片

图3:显示了从ADS6129 12位ADC在FPGA内捕获的边沿捕获数据

由于ADC数据的边缘捕获,在图3中观察到峰值。在这种情况下,对比特D6和D8观察到边沿捕获。峰值是由于D6和D8位的建立和保持时间违规造成的。x轴表示采样数,y轴表示12位ADC的信号幅度。

3. 处理边沿捕获问题

边沿捕获问题可以通过两种方法来解决。一种方法是使用ADC LVDS功能来改变LVDS数据线相对于LVDS输出时钟的延迟。另一种方法是使用FPGA内部的延迟组件。

3.1 使用ADC内部的延迟特性

通过使用ADC的串行接口或并行模式调整输出时钟边沿,ADC LVDS数据可以相对于时钟延迟。只有调整输出时钟边沿才有可能改变所有LVDS对相对于输出时钟的建立和保持关系。图4提供了ADS6129串行模式下时钟位置偏移功能的详细信息。

图片

图4:串行模式下ADS6129的时钟位置偏移特性

另外,ADS6129为并行模式控制时,可以通过控制SEN引脚电压来控制时钟延迟,如表3所示。

表3:SEN–模拟控制引脚

图片

3.2 使用FPGA内部的延迟特

解决边沿捕获问题的另一种方法是利用FPGA内部的延迟特性。FPGA的每个LVDS对都有延迟组件。例如,Xilinx FPGA具有称为“IDELAY”的延迟元件,可用于更改每个LVDS对的单独延迟。FPGA的IDELAY非常灵活,可以插入任何LVDS ADC对和FPGA之间。对于图2所示的边沿捕获问题,LVDS对D6_D7和D8_D9需要使用IDELAY组件进行延迟。此外,LVDS数据对之间的偏斜也可以通过在FPGA内使用此IDELAY组件来补偿。

图片

图5:FPGA延迟块与ADC LVDS数据

4. 使用ADC测试模式功能检查ADC和FPGA LVDS数据时序

为了验证建立和保持时间,系统设计人员可以使用测试模式生成可以在FPGA内部验证的特定模式。在测试模式下,可以使用用户自定义模式对每个上升沿和下降沿的位翻转进行编程。这是用FPGA测试ADC LVDS数据接口健康状况的最佳方法。图6提供了ADS6129和ADS6149的这种测试模式特征的信息。

图片

图6:ADC内部的自定义测试模式选项

该测试确定了ADC和FPGA之间的正确接口。如果测试模式通过,则可以认为ADC LVDS与FPGA的数据接口是正确的。图7显示了10 MHz NORMAL模拟输入信号的数字化数据眼图。

图片

图6:10MHz正常输入模拟信号的数字化数据眼图

5. ADC与FPGA之间LVDS信号布线设计考虑

(1)如果ADC输出和FPGA输入引脚之间的布线距离较大,则必须注意将差分阻抗保持在100Ω附近。差分对的总长度并不重要,但在指定内差分对之间的匹配很重要。此匹配规范取决于ADC采样率以及设置和保持时间裕度。

(2)在ADC LVDS输出和FPGA输入之间的任何跨分割处,差分特性阻抗应在90Ω至110Ω之间,由于LVDS信号的边缘速率很快,阻抗匹配非常重要。

(3)最好在PCB中使用至少4层。高速设计需要接地、电源和单端信号(如CMOS)以及LVDS信号的单独层。

图片


图7:典型4层PCB层叠

(4)LVDS线路的最小PCB通孔数量。最好使用45度转弯,避免90度转弯。

(5)LVDS信号在没有终端电阻器的情况下无法工作。最好的选择是使用FPGA的内部100Ω终端电阻器(如果可用)。对于内部FPGA终端电阻器,输入LVDS终端寄存器需要在FPGA粘合逻辑中设置为“TRUE”。

(6)在顶层上布线高速走线可以避免通孔以及通孔引起的电感。然而,在中间层上布线高速走线有助于更好地抑制噪声。在带状线(中间层)而不是微带线(顶部/底部)上路由噪声信号有助于减少EMI。

图片

图8:微带线与带状线


欢迎关注FPGA技术实战公众号,喜欢就多多转发吧!

这篇关于FPGA与高速ADC LVDS数据接口设计考虑的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1131285

相关文章

Python处理超大规模数据的4大方法详解

《Python处理超大规模数据的4大方法详解》在数据的奇妙世界里,数据量就像滚雪球一样,越变越大,从最初的GB级别的小数据堆,逐渐演变成TB级别的数据大山,所以本文我们就来看看Python处理... 目录1. Mars:数据处理界的 “变形金刚”2. Dask:分布式计算的 “指挥家”3. CuPy:GPU

使用Vue-ECharts实现数据可视化图表功能

《使用Vue-ECharts实现数据可视化图表功能》在前端开发中,经常会遇到需要展示数据可视化的需求,比如柱状图、折线图、饼图等,这类需求不仅要求我们准确地将数据呈现出来,还需要兼顾美观与交互体验,所... 目录前言为什么选择 vue-ECharts?1. 基于 ECharts,功能强大2. 更符合 Vue

Java如何根据word模板导出数据

《Java如何根据word模板导出数据》这篇文章主要为大家详细介绍了Java如何实现根据word模板导出数据,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... pom.XML文件导入依赖 <dependency> <groupId>cn.afterturn</groupId>

Python实现获取带合并单元格的表格数据

《Python实现获取带合并单元格的表格数据》由于在日常运维中经常出现一些合并单元格的表格,如果要获取数据比较麻烦,所以本文我们就来聊聊如何使用Python实现获取带合并单元格的表格数据吧... 由于在日常运维中经常出现一些合并单元格的表格,如果要获取数据比较麻烦,现将将封装成类,并通过调用list_exc

Mysql数据库中数据的操作CRUD详解

《Mysql数据库中数据的操作CRUD详解》:本文主要介绍Mysql数据库中数据的操作(CRUD),详细描述对Mysql数据库中数据的操作(CRUD),包括插入、修改、删除数据,还有查询数据,包括... 目录一、插入数据(insert)1.插入数据的语法2.注意事项二、修改数据(update)1.语法2.有

SpringBoot实现接口数据加解密的三种实战方案

《SpringBoot实现接口数据加解密的三种实战方案》在金融支付、用户隐私信息传输等场景中,接口数据若以明文传输,极易被中间人攻击窃取,SpringBoot提供了多种优雅的加解密实现方案,本文将从原... 目录一、为什么需要接口数据加解密?二、核心加解密算法选择1. 对称加密(AES)2. 非对称加密(R

详解如何在SpringBoot控制器中处理用户数据

《详解如何在SpringBoot控制器中处理用户数据》在SpringBoot应用开发中,控制器(Controller)扮演着至关重要的角色,它负责接收用户请求、处理数据并返回响应,本文将深入浅出地讲解... 目录一、获取请求参数1.1 获取查询参数1.2 获取路径参数二、处理表单提交2.1 处理表单数据三、

Spring Validation中9个数据校验工具使用指南

《SpringValidation中9个数据校验工具使用指南》SpringValidation作为Spring生态系统的重要组成部分,提供了一套强大而灵活的数据校验机制,本文给大家介绍了Spring... 目录1. Bean Validation基础注解常用注解示例在控制器中应用2. 自定义约束验证器定义自

Java对接Dify API接口的完整流程

《Java对接DifyAPI接口的完整流程》Dify是一款AI应用开发平台,提供多种自然语言处理能力,通过调用Dify开放API,开发者可以快速集成智能对话、文本生成等功能到自己的Java应用中,本... 目录Java对接Dify API接口完整指南一、Dify API简介二、准备工作三、基础对接实现1.

C#实现高性能Excel百万数据导出优化实战指南

《C#实现高性能Excel百万数据导出优化实战指南》在日常工作中,Excel数据导出是一个常见的需求,然而,当数据量较大时,性能和内存问题往往会成为限制导出效率的瓶颈,下面我们看看C#如何结合EPPl... 目录一、技术方案核心对比二、各方案选型建议三、性能对比数据四、核心代码实现1. MiniExcel