FPGA与ADC的SPI配置实战篇5_ADS528X_SPI配置

FPGA与ADC的SPI配置实战篇5_ADS528X_SPI配置_第1张图片

前几篇咱们分别以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。

FPGA与ADC的SPI配置实战篇5_ADS528X_SPI配置_第2张图片

 

本篇实例操作方式采用的是virtex5系列的FPGA,操作软件为ISE14.7。如下图所示为本人设计过的基于该系列ADC的8通道数据采集板卡:

FPGA与ADC的SPI配置实战篇5_ADS528X_SPI配置_第3张图片

TI的该款ADC的SPI写配置时序图如下所示:

FPGA与ADC的SPI配置实战篇5_ADS528X_SPI配置_第4张图片

简单来说,就是在在CS_n低电平期间,SCLK上升沿时,SDATA写入8bit的地址(A7-A0)和16bit配置数据(D15-D0),共24个SCLK周期完成写寄存器操作,另外该芯片无读寄存器功能。

本次的SPI写配置逻辑的顶层逻辑接口如下图所示:

FPGA与ADC的SPI配置实战篇5_ADS528X_SPI配置_第5张图片

本例程以3个寄存器的写操作为例,介绍一种简单的SPI写配置方式,如下图所示为定义的3个24bit寄存器参数,高8位是地址,低16位是数据:

如下图所示为写操作的逻辑,状态0初始化,状态1不断发送24bit寄存器参数,状态2为配置完一个寄存器参数,等待5个时钟周期,再进行下一个寄存器参数的配置,这里的操作只显示了第一个寄存器配置,其余两个与这里是完全一样的。这种写操作方式和前面多篇介绍的写操作也是类似,大家可以相互对比一下~

FPGA与ADC的SPI配置实战篇5_ADS528X_SPI配置_第6张图片

关键之处来了!前几篇例程里都需要在系统时钟下,状态机里描述SCLK的输出状态,以保证SCLK和SDATA的时序关系。这里咱们就没这个必要了,直接对系统时钟取反输出,即可作为SCLK。

FPGA与ADC的SPI配置实战篇5_ADS528X_SPI配置_第7张图片

 

如下图所示为写3个寄存器的时序图,可以看到SCLK为5M系统时钟的取反,和CS_n以及SDATA的SPI写时序关系正好合适!

 

咱们再看看逻辑实现的写过程的具体时序图:

下图所示为写C_AcfgReg1=24'h14_00_ff的实际时序:

FPGA与ADC的SPI配置实战篇5_ADS528X_SPI配置_第8张图片

下图所示为写C_AcfgReg2= 24'h25_00_00的实际时序:

FPGA与ADC的SPI配置实战篇5_ADS528X_SPI配置_第9张图片

下图所示为写C_AcfgReg3= 24'h2A_00_00的实际时序:

FPGA与ADC的SPI配置实战篇5_ADS528X_SPI配置_第10张图片

本篇作为附加篇,主要是想告诉大家,咱们很多时候不需要读配置寄存器的数据,只需配置好ADC让其正常工作就可以了。这种情况下,咱们就用这篇介绍的简单方式就可以,非常便于理解和实际操作~

 

          

你可能感兴趣的:(核探测器与核电子学,通信,数据处理)