[FPGA开发] 【Altera SoC体验之旅】高速数据采集之ADC(3)

chenzhufly   2015-4-7 23:40 楼主
作者:chenzhufly  QQ:36886052

1、  硬件环境
     硬件平台:Embest SoC --LarkBoard
     软件平台:开发板-linux-3.10.31
                     Quartus 14.0

2、信号链深入剖析
     原本只打算简单的介绍一下AD9628,然后用FPGA控制,采集到数据就完事了,哪知水太深,还需进一步的深入分析,方能更加清晰的明白整个数据信号链的组成,理清楚数据的来龙去脉。

    1)浅谈AD9628的默认配置
         AD9628这个控制器是可以通过SPI 接口来配置操作模式或者一些特殊功能,我在测试的过程中并没有进行配置,使用的是芯片的默认配置,那么都是那些功能呢?刚开始的时候也疏忽了,还是需要静下心来认真阅读啊
  1. The AD9628 serial port interface (SPI) allows the user to configure
  2. the converter for specific functions or operations through a
  3. structured register space provided inside the ADC
      具体spi控制寄存器的详细描述可见AD9628数据手册的36页,以下是我摘录的一些主要参数:
  • 采样率为105MSPS, 芯片型号AD9268-105
  1. The AD9628 is a monolithic, dual-channel, 1.8 V supply, 12-bit,
  2. 125 MSPS/105 MSPS analog-to-digital converter (ADC). It
  3. features a high performance sample-and-hold circuit and onchip voltage reference.
  • 模拟电压的输入范围,这点很重要,慢慢向下看
VOLTAGE.png

  • 时钟:默认时钟分频系数为1
clock.png

  • 输出模式:默认输出接口为CMOS,而不是LVDS,一开始我也理解错了;编码格式为offset binary
outputmode.png

  • 参考电压:固定参考电压为1.0V
refrence.png
这个地方是有些疑问的,默认配置是2.0Vp-p,实际用示波器测量是1.0V
vref.png


  • SENSE接地,固定使用内部参考电压,也就是1.0V
sense.png

  • 数据的编码格式,offset binary
outputdata.png

这样通过VIN+和VIN-我们就可以计算出它的编码,并且可以和实际的测量值进行比较。这时候我们不得不研究一下前级放大电路。

    2)前级放大干了什么,模拟信号的前世今生
    从实际的电路中可以看出,进入AD9628的信号是进过前级放大电路ADL5562的,它在电路中起了什么样的作用,对后续的ADC到底产生了什么影响呢?
amp.png

实际的ADL5562电路就是按照参考电路设计的:
ADL5562-EVA.png

注意:这依然是差分输入,和单独输入还是不一样的,有兴趣的详见数据手册第15页。

这个电路的增益是多少呢?选择R1=R2=40.2欧姆的时候增益为15.5db,相当于信号放大6倍。
AV.png

注意:这个地方可以通过修改实际电路中电阻,改变整个链路的增益,可以设置为6db(2倍),12db(4倍)

从这个电路可以看出,原始信号进入ADL5562后被放大6倍,然后一差分信号的方式输出给下一级AD9268
由于VIN-接地,那么VIN+的原始电压输入范围为  -0.3/6V

3、测试数据
初步的试验结果,配置AFG3252如下:
AFG.jpg
高电平配置的有些不合适,要不然可以计算一下实际测量值是否正确,明天看看可有时间补测一下。

  • 低电平的数据:
data.png
  • 高电平的数据:电压设置太高,肯定超过了
data-h.png
  • 数据频率:
data-h1.png
singtap的采样率设置的是100M,可以数一数高电平大概维持了50个采样点,100M/(50*2)=1Mhz

  • 抓出的模拟波形:
波形有畸变,原因不明,直观感觉和硬件电路有关,用示波器测量时候发现,ADC前级输入的信号已经发生畸变,在这就不深究了。
data_1m.png

4、总结
1) 看数据手册太累了,这部分最好由开发板厂商来说清楚,而实际上他们提供的入门指南确实有些简陋;
2) 信号采集部分也就打算整理到这个程度了,后面还有很多工作需要做,就不在这个地方过多的停留;
3) 欢迎大家批评指正,一起学习,共同进步。



生活就是油盐酱醋再加一点糖,快活就是一天到晚乐呵呵的忙 =================================== 做一个简单的人,踏实而务实,不沉溺幻想,不庸人自扰

回复评论 (9)

点赞  2015-4-8 09:14
加个FIFO,进到HPS里面处理~~
点赞  2015-4-8 09:16
柱斑给力啊
training
点赞  2015-4-8 20:51
楼主,ADC芯片是有量程的,即位宽限制,你不能满偏输出,你不必纠结于于过程,而应该关注结果,你可以尝试验证信号的链路是否是正确的,比如发送信号然后接受该信号,并进行判断是否一致,最好做个DDS然后FFT分析吧。而且,你这里错了,你后面很难排错
点赞  2015-4-11 00:27
有点厉害。。。。
分享铸就美好未来。。。
点赞  2015-4-11 10:33
引用: 不足论 发表于 2015-4-11 00:27
楼主,ADC芯片是有量程的,即位宽限制,你不能满偏输出,你不必纠结于于过程,而应该关注结果,你可以尝试验证信号的链路是否是正确的,比如发送信号然后接受该信号,并进行判断是否一致,最好做个DDS然后FFT分析吧。而且,你这里错了,你后面很难排错





暂时这个地方不是重点哦,目前重点是需要把整个流程搞通畅,正确性以后再说了

相对来说,ADC采样还是容易一点
生活就是油盐酱醋再加一点糖,快活就是一天到晚乐呵呵的忙 =================================== 做一个简单的人,踏实而务实,不沉溺幻想,不庸人自扰
点赞  2015-4-11 11:04
引用: 不足论 发表于 2015-4-11 00:27
楼主,ADC芯片是有量程的,即位宽限制,你不能满偏输出,你不必纠结于于过程,而应该关注结果,你可以尝试验证信号的链路是否是正确的,比如发送信号然后接受该信号,并进行判断是否一致,最好做个DDS然后FFT分析吧。而且,你这里错了,你后面很难排错

当然FFT已经验证过了,频率检测是正确的
生活就是油盐酱醋再加一点糖,快活就是一天到晚乐呵呵的忙 =================================== 做一个简单的人,踏实而务实,不沉溺幻想,不庸人自扰
点赞  2015-4-11 11:05
示波器测到1V是因为阻抗不匹配,2V变1V了
点赞  2015-4-17 10:15
我需要看FFT处理方案,哈哈
点赞  2015-4-17 10:15
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复