找回密码
 注册
关于网站域名变更的通知
查看: 452|回复: 1
打印 上一主题 下一主题

高速AD中的LVDS和FPGA

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-5-7 10:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
通常情况下,模拟输入信号通过高速ADC的量化输出的数字信号需要交给FPGA进行处理。如果高速ADC采用LVDS输出,那么经量化处理过的数字信号将会有非常多的LVDS数据差分对。而LVDS数据接收端,接收到的LVDS差分数据对相互之间可能会存在非常小的一个时间差异,该时间差异往往是皮秒级别的,而随着高速ADC采样率的提升,目前大多数的高速ADC采样速率已经达到GSPS级别。3 c9 n! D6 M3 w4 |1 I
* ~( K! R' ^: g$ E
因此皮秒级别的时间差异也会对采集到的数据产生影响。这种情况的发生,往往可能是由于LVDS数据差分对走线长度的不匹配所造成的,这种数据传输中的时间差异对于高速数据传输来说,可能会造成某些数据位的值发生变化,这就相当于向FPGA提供了错误的ADC数据。+ j4 |- X) Y5 E7 ^" h
因此,无论是在高速ADC芯片的测试评估还是在其应用当中,对这些数据传输所造成的时间差异均要进行预先的处理。
" I' f5 q  o0 Z+ P( ?
+ p  I+ R% Z7 p+ k6 G; U数据传输差异的处理
/ I* e) C+ D1 V  F* t8 ^8 i/ x对于数据传输的时间差异可以有两种方式来解决,一种方法是通过ADC本身的LVDS特性来改变LVDS数据传输的延迟,这通常与LVDS的输出时钟有关。另外一种方法是使用FPGA内部的延迟功能来实现。
% N. e' L  \) Q0 u" w( O0 O* R5 n0 k% M# i" s. _, x
ADC内部延迟
! q, C) N( D6 L6 O6 Y对于ADC的LVDS数据输出,可以通过ADC内部集成的某些控制来改变输出时钟沿,从而达到传输延迟的目的。这种方式,不能做到有选择的对特定的LVDS数据差分对进行专门的延迟,但是,只是改变输出时钟沿是可行的。这将有助于改变所有LVDS数据差分对相互之间的传输时间关系。
2 L  p5 z2 m% Y" m9 z$ r/ _* |4 F* w+ ~6 G
FPGA内部延迟7 m8 r0 |" [% o+ K
另一种解决数据传输时间差异的方式,是通过调节FPGA内部的延迟特性,FPGA对于每个LVDS差分对都有一个延迟单元。FPGA中有称之为IDELAY的一个延迟单元,它可以来用对每个LVDS数据差分对分别进行延迟调节。FPGA的IDELAY非常灵活,可以在ADC输出到FPGA之间的任何一对LVDS差分对之间进行调节。同样,由ADC本身所带来的LVDS数据差分对的时间偏离,也可以通过FPGA的IDELAY延迟单元来进行补偿。
( f" z' ~' F0 M8 [
5 ]% S) C, s1 z) }# O% @IDELAY延迟单元的使用并不是必须的,除非板卡设计和布局并没有进行数据对的长度匹配。2 C: H9 G! h) }& b# z* i

. y/ }, h" _& v( v1 C) ePattern功能检查数据传输错位: @8 K2 c- x- ?
为了进行设置和保持时间的验证,系统设计人员可以采用测试模式来生成可以在FPGA中验证的特定Pattern。在测试模式下,可以使用用户自定义的Pattern对每个上升沿和下降沿进行位翻转。这是用来测试FPGA和ADC的LVDS数据接口之间传输状况的最好方法。0 S1 \, U% V# e# O" r7 z: s
9 T+ ^/ A5 }* g" C0 H
这种测试方法确定了ADC和FPGA之间传输的好坏。如果测试模式数据传输完美的匹配每个时钟周期的测试pattern的位翻转,那么对于实际输入的设置和保持时间即是可信的。如果测试模式通过,则可以认为ADC的LVDS数据和FPGA之间的传输是合适的。* r; s+ x$ G1 l6 ~2 ]& |- Y
7 y! W8 Y7 j6 [/ z  L. v+ Q# H: }

/ c) L# q' u# `8 u! G/ N2 H, o数据传输的调整: I* T7 q1 M; i. A
在pattern测试模式下,生成的眼图的连续的。因此,任何一个眼图窗口都可以用来对数据传输进行校准。
  g/ ^$ i) f$ |) o2 w1 V  a
& _! Y8 s6 g  ]$ C/ D  BFPGA内部的IDELAY单元可以对输出传输进行微调,以防止由于PCB的走线或FPGA本身代码编译时的时间约束,造成的数据线之间的倾斜。
% t# b8 G# k" o0 Q- {$ Q( R& R0 S
  o# K$ {/ u5 s. i对于大多数高速ADC来说,测试pattern和数字化输入数据都来自同一个LVDS串行模块,这个模块可以维护输出时钟和输出数据之间的时间关系,因此,测试pattern和正常输入的数字化数据之间没有什么差异。但是,如果由于板卡走线,造成输出数据行之间有一定数量的耦合。那么,如果测试pattern和实际输入信号量化的数据不同于输出翻转的pattern,时间可能会略有不同。) ^% E1 @3 z" G( r
( @* l* V% E$ o' F
数据传输调整的基准
) n6 g! b: l) [8 Z* D: A通常情况下,每一个ADC的LVDS数据差分对都可以用来作为数据传输调整的基准,并以此作为其他LVDS数据差分对的参照来进行微调。
# f1 l8 w( B7 E4 h) a4 D" B- M6 h9 v
由于数据传输的差异,测试pattern生成的眼图并不一定会是从一个完整的眼图起始。因此,如果采用第一个眼图来进行校准,可能会出现所有LVDS数据输出差分对得窗口不相一致。所以,第二个眼图窗口将会是建议的首选,该眼图必然是完整的采样窗口。
( ~$ J! Q; ]. \; ~4 g) d' o+ ?! k4 R5 h8 F# k2 x
确定采样窗口
# F7 r0 Y( F% k4 c通常情况下,每对LVDS差分数据的传输延迟相差不会太大,因此,我们只需要对第一对LVDS差分数据进行分析。如前文所述,第一个眼图有可能是不完整的眼图,因此,我们选择第二个眼图作为参考。
$ ]2 X1 h: h" ]! S( u9 i" S1 v7 g* z* @; ^
确定调整起始值9 V' V6 ^  Q9 m- b, R# g" J  l
将第一对LVDS差分输出的第二个眼图的开始时间值作为参考,当作其他所有LVDS差分数据采样窗口扫描的起始值,对所有的LVDS差分数据进行扫描。并与该参考值进行比对,计算出每对LVDS差分数据延迟值,并将该延迟通过IDELAY单元加在ADC的LVDS数据差分输出和FPGA之间。
' D- X: g- t4 }! t4 S
- X0 K6 f% B3 K( _- Y. _/ b* Z0 R  F9 N
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-1 23:33 , Processed in 0.140625 second(s), 24 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表