原创 ALTERA Cyclone 10器件的使用-6:LVDS差分ADC使用

2024-7-14 12:25 906 4 4 分类: FPGA/CPLD 文集: ALTERA FPGA

概述


SiPM测试系统的信号处理板使用了ADI的单片4通道的高速差分ADC信号,所以FPGA需要通过LVDS接口来收取差分高速ADC送出的差分串行数据。

本文讨论FPGA如何例化LVDS模块,以及几种用来收取外部ADC采样后送来的高速差分串行数据。


10代器件LVDS实例化界面


在Intel的10代器件中有Arria、Cyclone、MAX以及Stratix几种,我们使用的是Cyclone系列10代GX产品。


图1:LVDS模块例化界面


如图1所示为LVDS例化界面,具体使用方法可以参考1“LVDS SERDES Intel FPGA IP User Guide”。这里给出LVDS SERDES通道结构框图,如图2所示。图2下半部分展示的RX通道是本文着重要关注的部分。


图2:Cyclone 10 GX系列器件LVDS Serdes通道结构框图


高速差分ADC数据引入FPGA的方法


高速差分ADC采样后串行数据、时钟以及帧同步总线接入FPGA的方法大致分为以下几种,不同的方法使用的场合有些微差别。

  • 方法一:每个ADC单独将DCO和FRAME接入FPGA,此时不需要RX PLL,DCO必须使用专用时钟引脚。
  • 方法二:每个ADC的FRAME接入FPGA,FRAME必须接专用时钟引脚,使用PLL通过FRAME在内部产生串行高速时钟。
  • 方法三:如果预期到每个ADC之间布线延时差异足够小,此时所有ADC芯片可以使用同一组DCO和FRAME。
  • 方法四:如果无法预估各ADC之间延时差异,又不想使用方法一和方法二,此时可以使用软CDR在初始阶段生成训练码。需要将ADC的SPI接口连接到FPGA。

根据不同的使用场景,又存在下述几种划分:


场景1:类似上述方法一


举个最简单的例子,当FPGA仅处理一个ADC时,FPGA单个bank就可以处理,ADC的所有必要和非必要的信号都可以连接到FPGA。如此,就可以确保安全可靠地接收ADC的采样数据。

此场景的其它例子,比如FPGA需要处理多个ADC的时候,此时可能分为不同情况,属于本场景的情况是FPGA有足够的bank来处理所有ADC,即每个BANK仅处理一个ADC。此时可以按照单个ADC的方法处理。单个bank如果LVDS端口足够,也可以处理多个ADC,但是单个bank仅接一路DCO到时钟引脚。


场景2:多个ADC需要处理,LVDS端口不足


此时为了省略出足够的LVDS端口给串行数据,可以多个ADC共享同一个DCO时钟,此时也省时钟引脚与PLL,有时候可能是时钟引脚或内部PLL不够。


场景3:多个ADC需要处理,时钟引脚不足


此时FPGA没有足够的时钟引脚接收来自ADC的DCO或FRAME,此时可以将DCO接入到普通的LVDS差分对端口,用本地时钟作为LVDS参考时钟,DCO当普通数据,然后根据DCO跳变去取ADC数据。


场景4:多个ADC需要处理,时钟引脚不足的同时,LVDS端口也不足


此时,DCO完全可以连接到FPGA,当异步处理,通过过采样,本地恢复DCO。

以上四种使用场景,风险从场景1到场景4依次递增。


参考

  1. LVDS SERDES Intel FPGA IP User Guide: Intel Arria 10 and Intel Cyclone 10 Devvices.

作者: coyoo, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-1010859.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

文章评论0条评论)

登录后参与讨论
我要评论
0
4
关闭 站长推荐上一条 /2 下一条