通常情况下,模拟输入信号通过高速ADC的量化输出的数字信号需要交给FPGA进行处理。如果高速ADC采用LVDS输出,那么经量化处理过的数字信号将会有非常多的LVDS数据差分对。而LVDS数据接收端,接收到的LVDS差分数据对相互之间可能会存在非常小的一个时间差异,该时间差异往往是皮秒级别的,而随着高速ADC采样率的提升,目前大多数的高速ADC采样速率已经达到GSPS级别。

因此皮秒级别的时间差异也会对采集到的数据产生影响。这种情况的发生,往往可能是由于LVDS数据差分对走线长度的不匹配所造成的,这种数据传输中的时间差异对于高速数据传输来说,可能会造成某些数据位的值发生变化,这就相当于向FPGA提供了错误的ADC数据。

因此,无论是在高速ADC芯片的测试评估还是在其应用当中,对这些数据传输所造成的时间差异均要进行预先的处理。

数据传输差异的处理

对于数据传输的时间差异可以有两种方式来解决,一种方法是通过ADC本身的LVDS特性来改变LVDS数据传输的延迟,这通常与LVDS的输出时钟有关。另外一种方法是使用FPGA内部的延迟功能来实现。

  • ADC内部延迟

对于ADC的LVDS数据输出,可以通过ADC内部集成的某些控制来改变输出时钟沿,从而达到传输延迟的目的。这种方式,不能做到有选择的对特定的LVDS数据差分对进行专门的延迟,但是,只是改变输出时钟沿是可行的。这将有助于改变所有LVDS数据差分对相互之间的传输时间关系。

  • FPGA内部延迟

另一种解决数据传输时间差异的方式,是通过调节FPGA内部的延迟特性,FPGA对于每个LVDS差分对都有一个延迟单元。FPGA中有称之为IDELAY的一个延迟单元,它可以来用对每个LVDS数据差分对分别进行延迟调节。FPGA的IDELAY非常灵活,可以在ADC输出到FPGA之间的任何一对LVDS差分对之间进行调节。同样,由ADC本身所带来的LVDS数据差分对的时间偏离,也可以通过FPGA的IDELAY延迟单元来进行补偿。

IDELAY延迟单元的使用并不是必须的,除非板卡设计和布局并没有进行数据对的长度匹配。

Pattern功能检查数据传输错位

为了进行设置和保持时间的验证,系统设计人员可以采用测试模式来生成可以在FPGA中验证的特定Pattern。在测试模式下,可以使用用户自定义的Pattern对每个上升沿和下降沿进行位翻转。这是用来测试FPGA和ADC的LVDS数据接口之间传输状况的最好方法。

这种测试方法确定了ADC和FPGA之间传输的好坏。如果测试模式数据传输完美的匹配每个时钟周期的测试pattern的位翻转,那么对于实际输入的设置和保持时间即是可信的。如果测试模式通过,则可以认为ADC的LVDS数据和FPGA之间的传输是合适的。

数据传输的调整

在pattern测试模式下,生成的眼图的连续的。因此,任何一个眼图窗口都可以用来对数据传输进行校准。

FPGA内部的IDELAY单元可以对输出传输进行微调,以防止由于PCB的走线或FPGA本身代码编译时的时间约束,造成的数据线之间的倾斜。

对于大多数高速ADC来说,测试pattern和数字化输入数据都来自同一个LVDS串行模块,这个模块可以维护输出时钟和输出数据之间的时间关系,因此,测试pattern和正常输入的数字化数据之间没有什么差异。但是,如果由于板卡走线,造成输出数据行之间有一定数量的耦合。那么,如果测试pattern和实际输入信号量化的数据不同于输出翻转的pattern,时间可能会略有不同。

数据传输调整的基准

通常情况下,每一个ADC的LVDS数据差分对都可以用来作为数据传输调整的基准,并以此作为其他LVDS数据差分对的参照来进行微调。

由于数据传输的差异,测试pattern生成的眼图并不一定会是从一个完整的眼图起始。因此,如果采用第一个眼图来进行校准,可能会出现所有LVDS数据输出差分对得窗口不相一致。所以,第二个眼图窗口将会是建议的首选,该眼图必然是完整的采样窗口。

确定采样窗口

通常情况下,每对LVDS差分数据的传输延迟相差不会太大,因此,我们只需要对第一对LVDS差分数据进行分析。如前文所述,第一个眼图有可能是不完整的眼图,因此,我们选择第二个眼图作为参考。

确定调整起始值

将第一对LVDS差分输出的第二个眼图的开始时间值作为参考,当作其他所有LVDS差分数据采样窗口扫描的起始值,对所有的LVDS差分数据进行扫描。并与该参考值进行比对,计算出每对LVDS差分数据延迟值,并将该延迟通过IDELAY单元加在ADC的LVDS数据差分输出和FPGA之间。


版权所有权归卿萃科技 杭州FPGA事业部,转载请注明出处

作者:杭州卿萃科技ALIFPGA

原文地址:杭州卿萃科技FPGA极客空间 微信公众号


扫描二维码关注杭州卿萃科技FPGA极客空间


高速AD中的LVDS和FPGA的更多相关文章

  1. 使用Ruby来实现批量更新AD中字段

    准备工作 安装需要用到的gem gem install net-ldap gem install roo 准备好要更新的数据,比如exel表: /root/account.xlsx,内容如下 姓名 性 ...

  2. 例说 AD中ROOM的使用

    从OrCAD中将网表导入之后,区别于从AD原理图中导入,笔者经过反复试验,发现在OrCAD中定义的种种区域属性,比如像Page,Class,Room,在AD中导入之后全部消失,这就意味着你本来按照模块 ...

  3. SharePoint自动化部署,利用PowerShell 导出/导入AD中的用户

    这几个月一直在帮客户改需求,部署.我已经心力憔悴,经过一段时间的摸索,我对用PowerShell实现自动化部署也有了一些心得,比如说利用PowerShell导出导入AD中的User.在基于ShareP ...

  4. 在AD中存取照片

    AD中有存放照片的字段吗? 答案肯定是有的.photo,jpegPhoto,thumbnailPhoto 前端时间客户,包括领导 在问通讯录中的照片为什么存在数据库中而不是AD中,AD中的属性能不能利 ...

  5. 利用Powershell查询AD中账号属性

    标签:AD账号信息 最后登录时间 最后修改密码.SID 账号SID 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://hubuxcg ...

  6. ArcGIS for Server使用AD中的用户配置

    ArcGIS for Server使用AD中的用户配置 1.概述 默认情况下,ArcGIS Server使用内置存储模式来管理用户和角色.该模式使用基于文件格式来存储信息.当然,ArcGIS Serv ...

  7. AD中如何插入logo(图片)

    图片转成protel altium AD PCB封装 LOGO方法 1. 2. 3. 4.打开下列顺序文件夹 Examples-->Scripts-->Delphiscript Scrip ...

  8. AD中快速按模块摆放器件

    AD中快速按模块摆放器件 在PCB布局的过程中,我们需要将元器件按照功能模块进行放置,如果一个一个去寻找则很麻烦,现在介绍一个快捷的方法: 1.首先在原理图中按照模块选中,然后快捷键 T+S跳转到PC ...

  9. 查询AD中被锁定的账号并进行解锁

    1:查询AD中被锁定的账号: Search-ADAccount -LockedOut | export-csv -path c:\aaavvv.csv 2:解除锁定 Search-ADAccount ...

随机推荐

  1. Java获取系统环境信息

    使用System.getProperty()方法获取JVM信息 public class TestSystemGetProperty { public static void main(String[ ...

  2. [WinForm]FastColoredTextBox控件(附源码)

    Fast Colored TextBox is text editor component for .NET. Allows you to create custom text editor with ...

  3. ElementUI组件Cascader级联选择器数据后台处理

    Cascader级联选择器数据数据格式不知道的可以去官网看下:这里我就不表示什么了. 部门实体类: import lombok.Data; @Data public class Department ...

  4. 【html5】hashchange Event – 监测URL的hash变化

    通过URL传值,在?后附加以=连接的键值对,各键值对间以&连接:也可以通过URL传递页面参数,在”#”后附加的方式.两者最大的一个 区别在于:后者不会发起请求,不会导致页面刷新.常见应用场景在 ...

  5. 剑指offer--39. 跳台阶

    时间限制:1秒 空间限制:32768K 热度指数:375795 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). cla ...

  6. jquery.lazyload.js 图片延迟加载

    当做网页的时候,特别是整个网页展示图片较多的时候,用到图片延迟效果是很好的 使用方法也非常简单. 1.在网页任何位置(一般是在</body>前面)加上如下代码(注意<script&g ...

  7. cpu的用户态和内核态和内存的用户空间内核空间

    谈到CPU的这两个工作状态,也就是处理器的这两个工作状态,那我们有必要说一下为什么搞出这两个鬼玩意出来.       用过电脑的娃娃们肯定知道在一个系统中既有操作系统的程序,也由普通用户的程序.但那么 ...

  8. windows7 下安装python3.6开发环境

    所有的软件都放在百度云盘里: 链接: https://pan.baidu.com/s/1rux8sDK9thhbZ1qjwQg6kA 密码: iq4c 1. 安装python3.6.5 安装的时候要把 ...

  9. RxJava 1.x 笔记:变换型操作符

    在写这几篇 RxJava 笔记时,发现官方文档很久都没有更新啊. 一些前辈两年前写的学习笔记内容跟现在也基本一致,RxJava 2.x 的文档也基本没有,不知道是不是缺实习生. 本文内容为 RxJav ...

  10. idea和pycharm激活方法

    idea和pycharm是jetbrains出品的很火的开发辅助工具,不过目前来说是收费的,对于囊中羞涩的同学来说还是比较困难的 我写这篇博客只是为了方便新手使用,推进开发进程,但希望大家在合适的情况 ...