ADS52J90开发笔记(3)—LVDS_8通道_10bit_200MSPS数据采集

1,硬件工作环境

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

ADS52J90开发笔记(3)—LVDS_8通道_10bit_200MSPS数据采集

  图1:硬件PCB

 

2,逻辑开发环境

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

 

3,工作模式总结

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

3.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

 

4LVDS_8通道_10bit_200MSPS数据采集开发过程

本篇将介绍该款ADC的8通道/10bit/200MSPS工作模式下的开发过程。开发过程本人按顺序总结了以下6个部分:

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

2)对时钟芯片编程,产生200MHz的ADC时钟和FPGA系统时钟

3)配置该ADC的工作模式为LVDS/8通道/10bit/200MSPS

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

5)在线chipscope调试与测试

6)利用真实信号测试

 

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

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

ADS52J90开发笔记(3)—LVDS_8通道_10bit_200MSPS数据采集

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

 

该芯片内含16个AD转换器,从上图不难发现其工作在8通道模式时,每两个AD交替采集同一个输入信号。由于每个ADC在10bit采样精度时,最大采样率可达100MSPS,因此两个ADC同时工作,交替采集同一个输入信号时,对该信号的采样率就可达200MHz。该模式下的数据输出结构,在数据手册中也详细给出了,如下图3所示:

ADS52J90开发笔记(3)—LVDS_8通道_10bit_200MSPS数据采集

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

 

我们可以看到,一个通道的采样数据通过两个AD输出,这两路输出数据交错组合起来就形成了完整的200MHz采样数据。该模式下,从模拟信号输入到LVDS串行数据输出之间详细的映射关系如下表所示:

ADS52J90开发笔记(3)—LVDS_8通道_10bit_200MSPS数据采集

 

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

既然ADC工作在200MHz连续采样下,因此FPGA的处理时钟也应该设计为200MHz。FPGA利用板载40MHz晶振,产生配置逻辑,对LMK04826时钟芯片进行编程配置,分别产生ADC采样时钟和FPGA系统200MHz时钟。需要注意的是输入ADC芯片的时钟是200MHz,可是该芯片内部每个AD转换时钟为100MHz,即有采样时钟fs=200MHz,转换时钟fc=100MHz,帧时钟fFCLK=100MHz,位时钟fbitclk=5*fFCLK.

 

4.3配置该ADC的工作模式为LVDS/8通道/10bit/200MSPS

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

 

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

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

ADS52J90开发笔记(3)—LVDS_8通道_10bit_200MSPS数据采集

图4:数据采集模块框图

 

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

1,DCLK模块

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

ADS52J90开发笔记(3)—LVDS_8通道_10bit_200MSPS数据采集

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

ADS52J90开发笔记(3)—LVDS_8通道_10bit_200MSPS数据采集

图6:fclk

 

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

 

3,Data模块

Dclk和fclk的功能完成后,该模块就只需要取数就就行了,不需要任何控制操作。如图7所示:

ADS52J90开发笔记(3)—LVDS_8通道_10bit_200MSPS数据采集

图7:data

 

4,数据输出模块

由于是8通道工作模式,每两路data模块的数据其实只有100MSPS,需要整合为一个完整的200MSPS采样数据,这里就需要用到fifo了,通过fifo将100MHz下的两路数据同步到200MHz系统时钟区域内,再进行后续的处理。如图8所示:

ADS52J90开发笔记(3)—LVDS_8通道_10bit_200MSPS数据采集

图8:数据输出模块

 

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

 

4.5在线chipscope调试与测试

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

ADS52J90开发笔记(3)—LVDS_8通道_10bit_200MSPS数据采集

图9:ramp测试总体

 

ADS52J90开发笔记(3)—LVDS_8通道_10bit_200MSPS数据采集

图10:ramp测试细节

 

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

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

ADS52J90开发笔记(3)—LVDS_8通道_10bit_200MSPS数据采集

图11:chipscope抓取正弦波形总体

 

ADS52J90开发笔记(3)—LVDS_8通道_10bit_200MSPS数据采集

图12:chipscope正弦详细波形

 

ADS52J90开发笔记(3)—LVDS_8通道_10bit_200MSPS数据采集

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

 

ADS52J90开发笔记(3)—LVDS_8通道_10bit_200MSPS数据采集

图14:整体1

 

ADS52J90开发笔记(3)—LVDS_8通道_10bit_200MSPS数据采集

图15:整体2

 

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

 

ADS52J90的LVDS、8通道、10bit、200MSPS数据采集模式的开发笔记就到这里,下篇将是LVDS、16通道、10bit、100MSPS数据采集模式的开发笔记。