实战篇——ADS528X"/>
5,ADC的SPI实战篇——ADS528X
注:学习、交流就加博主weixin “fpga_start” 私信~
若需要完整、实用的veilog代码工程,请点击(博主1对1技术支持,包学会):
.htm?ft=t&id=683887211432
前几篇咱们分别以ADI公司和TI公司的高速ADC为实例(AD9429、AD9639、ADS52J90),向大家演示FPGA是如何通过SPI协议向该ADC读写寄存器配置数据的,所述的方法都是通用型的SPI读写操作,适用于任何FPGA与ADC的SPI配置。
本篇咱们再介绍一种更简单的SPI写操作方式。大家可能已经发现,ADI和TI的某些高速ADC只有SPI写的功能,也就是说只能往ADC里配置寄存器参数,而不能把参数再读出来。这样的话,FPGA设计SPI代码时就没必要考虑读寄存器参数这个功能了,而如果只是往ADC里写配置数据,那么就有更为简单的实现方式,理解起来也非常容易。
比如TI公司的ADS5281和ADS5282这两款芯片,就是8通道、50MSPS/65MSPS、12bit采样精度的高速串行ADC,使用的非常广泛,而其只有写寄存器的功能,而没有读寄存器的功能。如下图所示为ADS5282的功能框图,且配置接口包含4个信号:低电平有效的reset、SPI的Cs、SPI的SCLK以及SPI的SDATA,其中SDATA只作为配置数据输入接口,相当于sdin。
本篇实例操作方式采用的是virtex5系列的FPGA,操作软件为ISE14.7。如下图所示为本人设计过的基于该系列ADC的多通道数据采集板卡:
TI的该款ADC的SPI写配置时序图如下所示:
简单来说,就是在在CS_n低电平期间,SCLK上升沿时,SDATA写入8bit的地址(A7-A0)和16bit配置数据(D15-D0),共24个SCLK周期完成写寄存器操作,另外该芯片无读寄存器功能。
本例程以3个寄存器的写操作为例,介绍一种简单的SPI写配置方式,如下图所示为定义的3个24bit寄存器参数,高8位是地址,低16位是数据:
如下图所示为写操作的逻辑,状态0初始化,状态1不断发送24bit寄存器参数,状态2为配置完一个寄存器参数,等待5个时钟周期,再进行下一个寄存器参数的配置,这里的操作只显示了第一个寄存器配置,其余两个与这里是完全一样的。这种写操作方式和前面多篇介绍的写操作也是类似,大家可以相互对比一下~
下图所示为写C_AcfgReg1=24'h14_00_ff 的实际时序:
下图所示为写C_AcfgReg2= 24'h25_00_00的实际时序:
下图所示为写C_AcfgReg3= 24'h2A_00_00的实际时序:
本篇作为附加篇,主要是想告诉大家,咱们很多时候不需要读配置寄存器的数据,只需配置好ADC让其正常工作就可以了。
更多推荐
5,ADC的SPI实战篇——ADS528X
发布评论