全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 可编程逻辑 >

LVDS高速ADC接口, xilinx FPGA实现

时间:2023-04-03 10:28

人气:

作者:admin

标签: lvds  AD芯片  FPGA 

导读:使用的AD芯片是ADI的AD9653,125M16bit高精度高速ADC,用到的采样速率是80M。其SPI配置会单独开一篇来讲,SPI配置里面有个大坑,本来以为调好了的,后来又发现了问题,调了三天才定位到问...

LVDS

即Low-Voltage Differential Signaling。FPGA的selecteIO非常强大,支持各种IO接口标准,电压电流都可以配置。其接口速率可以达到几百M甚至上千M。使用lvds来接收高速ADC产生的数据会很方便。像ISERDES,IDDR,IDELAY,OSERDES,ODDR这种资源在FPGA的IOB中多得是(每个IO都对应有,最后具体介绍),根本不担心使用。最近刚在项目中用到,提供一个思路,具体的器件使用参考FPGA手册。

使用的AD芯片是ADI的AD9653,125M16bit高精度高速ADC,用到的采样速率是80M。其SPI配置会单独开一篇来讲,SPI配置里面有个大坑,本来以为调好了的,后来又发现了问题,调了三天才定位到问题在哪,这就是硬件的魅力(坑爹)所在了吧。这里主要介绍FPGA的接收部分。

接收ADC数据的时序图,

b650af8c-d1c4-11ed-bfe3-dac502259ad0.jpg

有几点需要注意:

0 , 可以看出分成三种信号,数据采样时钟DCLK,帧同步信号FCLK,和输入数据DATA

1,输入数据采样时钟默认是已经对齐了输入数据的中点,但帧时钟是和数据字节边缘对齐的。

2,使用Iserdes接收数据,Idelay调整时钟延迟。

1,对数据采样时钟的处理如下

通过控制延时,使得CLK和经过IBUFDS的BitClk对齐,从而消除IBUFIO和BUFR还有net的延时。这样所有的输入信号都只经过了一个IBUFDS,延时相等。对Idelay的控制,可以手动调节,也可以用自动算法。(参考xapp524)

b667bab0-d1c4-11ed-bfe3-dac502259ad0.png

b67b0246-d1c4-11ed-bfe3-dac502259ad0.png

b69b1176-d1c4-11ed-bfe3-dac502259ad0.jpg

b6b5b6de-d1c4-11ed-bfe3-dac502259ad0.jpg

b6d0cd34-d1c4-11ed-bfe3-dac502259ad0.jpg

1.1手动调节对齐

首先来看看手动调节算法,用vivado的vio可以很方便的输入输出,可手动在线修改观察现象,对后面的自动训练算法也有一定的启发作用。 默认R_delay_cnt=0时,可以看到输入的正弦波形很乱

b6e5ea8e-d1c4-11ed-bfe3-dac502259ad0.png

b6f84b34-d1c4-11ed-bfe3-dac502259ad0.png

慢慢的增加R_delay_cnt,当R_delay_cnt=12时,开始出现稳定的正弦波,实验发现R_delay_cnt=14,15,16时恰好采到时钟的边缘,也就是跟输入的原始时钟对齐了,可以看到采到边缘是allign_word一直在跳变,有的是0,有的是1。一直到R_delay_cnt=18,正弦波都很稳定。有效窗口可以准确计算出来,200M的Idelay参考时钟,78ps/tap。7tap*78ps=546ps。说明数据的有效窗口很小,毕竟是320M的DDR,半个周期都才1.56ns.

b7152358-d1c4-11ed-bfe3-dac502259ad0.png

b7344fe4-d1c4-11ed-bfe3-dac502259ad0.png

b74aaadc-d1c4-11ed-bfe3-dac502259ad0.png

b759fc08-d1c4-11ed-bfe3-dac502259ad0.png

最后取R_delay_cnt=15,可以在代码里面写死。

1.2自动训练算法

既然有了手动调节的算法,为什么还要用自动训练对齐的算法呢?在高低温测试的时候,器件的延迟会受温度的影响发生变化,特别是在时钟频率很高,数据有效窗口很小的时候,这时候就需要能够动态的改变R_delay_cnt的值去自适应delay的变化,增加了鲁棒性。

有了上面的手动调节算法,自动训练的思路也很简单了。上电复位后R_delay_cnt一直自加,记下最后一个全0和第一个全1的值,取中点。这里只考虑了一种情况,还可能是从全1到全0的情况。代码如下

b77511b4-d1c4-11ed-bfe3-dac502259ad0.png

b78abcee-d1c4-11ed-bfe3-dac502259ad0.png

b7a543ca-d1c4-11ed-bfe3-dac502259ad0.png

2,对帧同步信号和数据的处理

用上面产生的数据采样时钟同时去采样FCLK和DATA,使用Iserdes可以1:8进行串并转换。但是我们不知道字节的边界在哪里,所以要使用一个bit_slip对串转并的结果进行移位,移位的同时检测FCLK转换的输出,当输出是8’b11110000的时候就停止移位。

b7b845ce-d1c4-11ed-bfe3-dac502259ad0.png

b7c8d632-d1c4-11ed-bfe3-dac502259ad0.png

b7e33a36-d1c4-11ed-bfe3-dac502259ad0.jpg

b7f6dcda-d1c4-11ed-bfe3-dac502259ad0.jpg

b80a5224-d1c4-11ed-bfe3-dac502259ad0.png

b8216752-d1c4-11ed-bfe3-dac502259ad0.jpg

b83ed1de-d1c4-11ed-bfe3-dac502259ad0.jpg

当数据率不是很高的IDDR数据,使用DDR替代Iserdes接收。IDDR和Iserdes使用的资源相同(待验证)

b8539146-d1c4-11ed-bfe3-dac502259ad0.png

HR Bank真实的器件如下,一对IOB,可单独使用,可差分使用。后面的资源从上到下依次是ISERDES(ILOGIC),IDELAY,OLOGIC(OSERDES),ILOGIC,IDELAY,OLOGIC。(ILOGIC可作为IDDR,OLOGIC可作为ODDR)。左上角的是一个clock region(如X0Y2)的中间分布的四个BUFIO和BUGR(局部时钟驱动,局部时钟分频,二者延时相等)。后面是一个IDELAYCTRL。

b869d172-d1c4-11ed-bfe3-dac502259ad0.png

下面分别详细介绍: IDEALY, 经过IDELAY必须要经过ISERDES,可直通。 ISERDES, ISERDES和ILOGIC使用相同的资源,可互换 ILOGIC,

b87b4e02-d1c4-11ed-bfe3-dac502259ad0.png

b890bd8c-d1c4-11ed-bfe3-dac502259ad0.png

OSERDES,和OLOGIC使用相同的资源,可互换

功能描述

• Edge triggered D type flip-flop(FF)

• DDR mode (SAME_EDGE or OPPOSITE_EDGE)

• Level sensitive latch(Latch)

• Asynchronous/combinatorial(直通)

审核编辑 :李倩

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信