转——高速数据采集之ADC(3)
作者:chenzhufly QQ:36886052
& w ^& W4 u0 e. F( A, H/ B
1、 硬件环境
硬件平台:Embest SoC --LarkBoard
软件平台:开发板-linux-3.10.31
Quartus 14.0
1 i3 @( k/ ~4 F
2、信号链深入剖析
原本只打算简单的介绍一下AD9628,然后用FPGA控制,采集到数据就完事了,哪知水太深,还需进一步的深入分析,方能更加清晰的明白整个数据信号链的组成,理清楚数据的来龙去脉。 . _% X) n4 b! [( S* n3 O) O
1)浅谈AD9628的默认配置
AD9628这个控制器是可以通过SPI 接口来配置操作模式或者一些特殊功能,我在测试的过程中并没有进行配置,使用的是芯片的默认配置,那么都是那些功能呢?刚开始的时候也疏忽了,还是需要静下心来认真阅读啊
- The AD9628 serial port inteRFace (SPI) allows the user to configure
- the converter for specific functions or operations through a
- structured register space provided inside the ADC
7 B+ u6 H! D Z% B! ?1 G2 _& S
( F- V5 l1 Y4 v# f9 P7 F$ S8 L1 z$ M& v h) X8 q
具体spi控制寄存器的详细描述可见AD9628数据手册的36页,以下是我摘录的一些主要参数:- 采样率为105MSPS, 芯片型号AD9268-105
" ^) u; x4 @& Q% g( @6 ]: o
- The AD9628 is a monolithic, dual-channel, 1.8 V supply, 12-bit,
- 125 MSPS/105 MSPS analog-to-digital converter (ADC). It
- features a high performance sample-and-hold circuit and onchip voltage reference.: ~$ e' V! C6 D; U3 h
, C& T- F& j' X0 t" q+ _( ?9 s1 t) l5 R" N
- 模拟电压的输入范围,这点很重要,慢慢向下看4 N g& h0 d# A6 k
6 p; G8 d5 G; P8 w2 } D! Q1 o
- 时钟:默认时钟分频系数为1( v) h3 _3 s! {9 T1 {& W( T6 [& T% F
4 L- D" _* Q) \. W
- 输出模式:默认输出接口为CMOS,而不是LVDS,一开始我也理解错了;编码格式为offset binary
" m, L- _: Y X% n4 ^' e' @
4 B. B. ~2 a) H# U+ }! a- 参考电压:固定参考电压为1.0V1 B" l, P. E6 M% j4 P" M; Q" E9 l
这个地方是有些疑问的,默认配置是2.0Vp-p,实际用示波器测量是1.0V
! [( @( M4 D7 j+ G
3 H" p/ v, k9 P8 P+ z: Y& @- SENSE接地,固定使用内部参考电压,也就是1.0V
4 N/ e2 I+ v: o
% E& |/ E6 h, Q: L8 M4 y0 F9 Z
- 数据的编码格式,offset binary- J5 l! w( q0 I- j( U0 U6 k
* ^& @- Q5 G* P% n4 f; S! Q这样通过VIN+和VIN-我们就可以计算出它的编码,并且可以和实际的测量值进行比较。这时候我们不得不研究一下前级放大电路。
/ Z/ N R5 P9 ?$ d# }
2)前级放大干了什么,模拟信号的前世今生
从实际的电路中可以看出,进入AD9628的信号是进过前级放大电路ADL5562的,它在电路中起了什么样的作用,对后续的ADC到底产生了什么影响呢?
+ w6 l# q* U" A: u" C: d
实际的ADL5562电路就是按照参考电路设计的:
5 R9 P5 H# V6 J8 z- z
注意:这依然是差分输入,和单独输入还是不一样的,有兴趣的详见数据手册第15页。
8 [& \, t! s* w
这个电路的增益是多少呢?选择R1=R2=40.2欧姆的时候增益为15.5db,相当于信号放大6倍。
% h8 p* p8 M/ }" ^, x1 f注意:这个地方可以通过修改实际电路中电阻,改变整个链路的增益,可以设置为6db(2倍),12db(4倍)
* Q; c7 S3 C! W
从这个电路可以看出,原始信号进入ADL5562后被放大6倍,然后一差分信号的方式输出给下一级AD9268
由于VIN-接地,那么VIN+的原始电压输入范围为 -0.3/6V<VIN+<2.0/6V
* w' b. |: c" }" H$ x% ]3 N5 A
3、测试数据
初步的试验结果,配置AFG3252如下:
高电平配置的有些不合适,要不然可以计算一下实际测量值是否正确,明天看看可有时间补测一下。
( ]* x; z j, L$ T b* ^% o
- 低电平的数据:+ g& p7 G2 O8 w: o# V: C5 M6 R
- 高电平的数据:电压设置太高,肯定超过了
/ n- b) d" @4 e& F4 }1 ^
- 数据频率:
$ v# E K; E, n0 C% z# H+ `& q
singtap的采样率设置的是100M,可以数一数高电平大概维持了50个采样点,100M/(50*2)=1Mhz
2 |3 V% j9 m+ t4 d( i0 u! D
- 抓出的模拟波形:2 ^- b: P- C- _5 Y
波形有畸变,原因不明,直观感觉和硬件电路有关,用示波器测量时候发现,ADC前级输入的信号已经发生畸变,在这就不深究了。
5 e& A2 o) K3 q. ~$ s
4、总结
1) 看数据手册太累了,这部分最好由开发板厂商来说清楚,而实际上他们提供的入门指南确实有些简陋;
2) 信号采集部分也就打算整理到这个程度了,后面还有很多工作需要做,就不在这个地方过多的停留;
3) 欢迎大家批评指正,一起学习,共同进步。