ADS52J90开发笔记(5)—LVDS_16通道_12bit_80MSPS数据采集

时间:2024-04-01 16:39:36

1,硬件工作环境

ADC:ADS52J90。FPGA:kintex7。供电:12V/4A 直流电源。该板卡最多外接32通道2Vpp模拟信号以及20路外部触发信号。数据传输接口方式有千兆以太网接口、高速光纤接口以及低速USB串口。需要用到的工具为万用表、示波器、信号发生器。

ADS52J90开发笔记(5)—LVDS_16通道_12bit_80MSPS数据采集

图1:硬件PCB

2,逻辑开发环境

Vivado2017.4(但也能够兼容ise14.7)。

 

3,工作模式总结

小青菜哥哥开发该ADC的工作模式如***:该ADC在8通道模式下只支持LVDS模式下的10bit精度):

    1. LVDS模式

通道数(Channel)

采样精度(bit)

采样率(MSPS)

8

10

200

16

10

100

16

12

80

16

14

60

32

10

50

32

12

40

32

14

30

 

3.2 JESD204B模式(该ADC的JESD204B功能不支持8通道模式)

通道数(Channel)

采样精度(bit)

采样率(MSPS)

16

10

100

16

12

80

16

14

60

32

10

50

32

12

40

32

14

30

 

4,LVDS_16通道_12bit_80MSPS数据采集开发过程

本篇将介绍该款ADC的16通道/12bit/80MSPS工作模式下的开发过程。开发过程本人按步骤总结了以下6点:

1)熟悉LVDS模式下的16通道工作原理

2)对时钟芯片编程,产生80MHz的ADC时钟

3)配置该ADC的工作模式为LVDS/16通道/12bit/80MSPS

4)开发FPGA端的ADC数据获取逻辑

5)在线chipscope调试与测试

6)利用真实信号测试

 

4.1熟悉LVDS模式下的16通道工作原理

小青菜哥哥在决定开发这款ADC后,首先做的第一件事就是仔细研读它的数据手册。该ADC工作在16通道时,其信号输入部分的采样原理由下图2详细给出了说明:

ADS52J90开发笔记(5)—LVDS_16通道_12bit_80MSPS数据采集

图2:16通道信号输入采样

该芯片内含16个AD转换器,从上图不难发现其工作在16通道模式时,每个AD转换器负责处理一路输入信号。并且该AD转换比较特殊的一点就是:每个AD转换内部都分为奇采样和偶采样,这是其他ADC所没有的,我想这么做的目的就是为了更好的实现每个AD可以处理2路输入信号,从而利用16个AD转换器就可以实现该芯片32通道的数据采集。该模式下的数据输出结构,在数据手册中也详细给出了,如下图3所示:

ADS52J90开发笔记(5)—LVDS_16通道_12bit_80MSPS数据采集

图3:16通道模式LVDS输出结构

我们可以看到,虽然一个ADC工作时分为奇数和偶数采样,但最终输出时已经合二为一,一个通道的采样数据最终通过一个AD输出。该模式下,从模拟信号输入到LVDS串行数据输出之间详细的映射关系如下表所示,属于一一对应:

ADS52J90开发笔记(5)—LVDS_16通道_12bit_80MSPS数据采集

4.2对时钟芯片编程,产生80MHz的ADC时钟

既然ADC工作在80MHz连续采样下,因此FPGA的处理时钟也应该设计为80MHz。FPGA利用板载40MHz晶振,产生配置逻辑,对LMK04826时钟芯片进行编程配置,分别产生ADC采样和FPGA系统80MHz时钟。即有输入时钟fIN=80MHz,采样时钟fSAMP=80MHz,转换时钟fc=80MHz。但是帧时钟和位时钟需要注意了:由于xilinx 7系列FPGA内部的串并转换模块ISERDES在接收DDR数据时,只支持10bit或者14bit的数据,因此当ADC工作在12bit精度时,是没办法处理的,但庆幸的是该款ADC有一个特殊功能,即当精度为12bit时,串行传输的数据通过在尾部添加2个零,可以变为14bit数据传输,因此帧时钟fFCLK=80MHz,位时钟变为fbitclk=7* fFCLK=560MHz.FPGA端只需再移出最后两位即可。

 

4.3配置该ADC的工作模式为LVDS/16通道/12bit/80MSPS

该ADC芯片可以工作在多种模式下,其默认的工作模式可能不是我们所需要的模式。因此需要通过SPI配置该ADC,配置数据和地址应该严格按照数据手册给出的值确定。该ADC芯片功能很丰富,因此配置寄存器数量比较多,有一些寄存器不需要配置,保持默认值即可。我们需要做的就是了解每个配置寄存器的功能,选择需要的寄存器配置,这里需要花费大量的时间和精力。该款ADC配置的方面的内容在以前的文章已详细说明,这里略过。

4.4开发FPGA端的ADC数据获取逻辑

对于该款ADC的FPGA数据获取逻辑思路很清晰,其实就是高速源同步数据的获取,只需要利用FPGA自带的底层硬件资源ISERDES即可实现。ISERDES就是FPGA自带的高速串并转换模块,其具体定义和功能,小青菜哥哥在以前的文章中已专门说过。该数据采集模块功能图如图4所示:

ADS52J90开发笔记(5)—LVDS_16通道_12bit_80MSPS数据采集

图4:数据采集模块框图

下面分别介绍各个主要模块的功能:

1,DCLK模块

DCK模块的功能就是通过idelay\ISERDES\BUFIO\BUFR产生bitclk和clkdiv,使得bitclk的相位和位时钟dclk的相位对齐。其内部功能框图如图5所示:

ADS52J90开发笔记(5)—LVDS_16通道_12bit_80MSPS数据采集

图5:dlck

具体过程就是:首先控制模块控制Idelay延迟模块,使得dclk产生一定的延迟量。Idelay的输出再经过BUFIO和BUFR,进一步产生固定延迟,得到bitclk和clkdiv。Dclk同时还进入ISERDES模块进行串行转换,其时钟就为bitclk。控制模块一直监视iserdes的并行数据输出。随着idelay延迟量的改变,iserdes的输出也一直在变。当发现iserdes的输出为既有0又有1的状态时,说明bitclk和dclk相位对齐了。之后bitclk就可以作为fclk和data的数据采集时钟了。

2,FCLK模块

Dclk模块功能完成之后,只能保证采集到的数据的每一位都是对的,但并不知道一个14bit数据(最后2位为零)的首尾在哪,fclk模块就是用来寻找并行数据的正确起始与结束位置,因此业界也称fclk为帧时钟,但它并不是用作时钟,只用来判断data数据的位置。通过图3给出的LVDS输出时序图,不难发现:fclk进入iserdes进行串并转换后,如果输出的14bit数据为11111110000000,说明找到了正确的字符边界,在此状态下去取data从iserdes输出的并行14bit数据即可,如图6所示:

ADS52J90开发笔记(5)—LVDS_16通道_12bit_80MSPS数据采集

图6:fclk

fclk工作的原理就是通过bitslip不断的调节iserdes的输出,当输出为11111110000000时,该模块功能完成,bitslip的用法在iserdes的说明里很详细,前面的文章也具体介绍过~。

3,Data模块&数据输出模块

Dclk和fclk的功能完成后,该模块就只需要取数就就行了,不需要任何控制操作。然后将取到的数通过fifo同步到系统时钟域进行后续的处理,如图7所示:

ADS52J90开发笔记(5)—LVDS_16通道_12bit_80MSPS数据采集

图7:data

Fifo1的写入时钟为80MHz,用80MHz的系统时钟读这个fifo,读出的数据即为80MSPS采样率的全局时钟域下的模拟输入波形。由于所有的时钟都同源产生于LMK04826,所以不用担心fifo的空满问题,只需要不断读就可以~

4.5在线chipscope调试与测试

按照上面的思路和功能模块编写好代码,并利用chipscope观察输出信号。首先将ADC配置成ramp测试模式,即测试累加数据(0~4095)会取代正常采样数据,测试的波形如下图9,10所示。可以看到FPGA接收到的测试数据无误。

ADS52J90开发笔记(5)—LVDS_16通道_12bit_80MSPS数据采集

图8:ramp测试总体

ADS52J90开发笔记(5)—LVDS_16通道_12bit_80MSPS数据采集

图9:ramp测试细节

4.6利用真实信号测试采集功能

接下来,将ADC配置成正常采集模式,利用外接的信号发生器,FPGA获取到的80MHz采样波形如图10,11 ,12所示:

ADS52J90开发笔记(5)—LVDS_16通道_12bit_80MSPS数据采集

图10:chipscope抓取正弦波形

ADS52J90开发笔记(5)—LVDS_16通道_12bit_80MSPS数据采集

图11:chipscope正弦详细波形

ADS52J90开发笔记(5)—LVDS_16通道_12bit_80MSPS数据采集

图12:信号发生器输出波形

可以看到,信号发生器给的正弦波形频率为4MHz(250ns),而chipscope抓取的正弦波形一个周期为20个点,chipscope的观察时钟为80MHz(12.5ns),信号发生器给出的波形和数据采集后波形完全一致。

ADS52J90的LVDS_16通道_12bit_80MSPS数据采集模式的开发笔记就到这里,该篇最需要注意的就是12bit精度的数据要串行化成14bit进入FPGA进行串并转换,再取高12bit。下篇将是LVDS_16通道_14bit_60MSPS数据采集模式的开发笔记。

ADS52J90开发笔记(5)—LVDS_16通道_12bit_80MSPS数据采集