FPGA经过SPI对ADC配置简介(三)-------3线SPI配置时序分析

上篇以德州仪器(TI)的高速ADC芯片——ads52j90为例,介绍完了4线SPI配置时序。本篇将以Analog Device(ADI)的多通道高速ADC芯片AD9249为例,介绍3线SPI读写配置时序。另外,你们若是想详细了解Analog Device(ADI)公司的关于SPI的全部内容,推荐你们在其官网阅读AN-877。微信

                                                

AD9249的SPI控制模块包含4根信号线,即CSB一、CSB二、SDIO以及SCLK。但CSB一、CSB2能够一块儿由CSB来控制,实际上就是3线SPI。因为3线SPI数据的读、写操做在同一根信号线SDIO上实现,所以其配置方式与4线的配置稍微有些不同。下面咱们将详细介绍读写操做:学习

 CSB:SPI控制读写使能信号;spa

 SDIO:SPI的数据、地址读写端口;blog

SCLK:FPGA提供给ADC的SPI接口时钟; 接口

 

以下图1所示为该ADC的SPI读、写配置时序图。其中CSB和SCLK的操做和上篇介绍的4线SPI配置相同,图上的时序参数在其datasheet上也有明确的说明,这里就不介绍了。3线SPI与4线SPI配置的主要不一样之处在传输的数据格式以及I/O转换上。3线的读写数据格式由控制命令+地址+数据组成,而上篇提到的4线配置只有地址+数据。其中R/~W为高电平时,表示读操做,低电平表示写操做。W1,W0表示要读写的数据字节数,通常都设为0,表明每次读写一个寄存器地址的数据。A12~A0表示13bit的寄存器地址。D7~D0表示要读写的8bit寄存器数据。同步

图1:SPI读、写时序图it

所以咱们在SPI写操做时,只需写入1bit 1 + 2bit 0 +13bit地址+ 8bit数据 便可。其配置的方法和上篇的4线SPI写操做相同。但当咱们在执行SPI读操做时,就须要注意了。首需写入1bit 0 + 2bit 0 +13bit 地址,当最后1bit的地址A0SCLK的上升沿写入SDIO后,SDIO会由输入口变为输出口,而后在接下来的8个SCLK降低沿,SDIO会输出寄存器的8bit数据。所以,在ADC的SDIO由输入变为输出口时,FPGA端的SDIO必须同步由输出口变为输入口,并在SCLK上升沿接收这8bit数据最稳定,FPGA端口的这种I/O转换能够经过其内置的三态门来实现。class

 

如图2所示为SDIO由输入口变为输出口的时序控制图,tEN_SDIO为转换时间,其最小时间为10ns,参考零点为SCLK降低沿。配置

                    

图2:SDIO输入转换为输出的时序图搜索

 

如图3所示为SDIO由输出口变为输入口的时序控制图,tDIS_SDIO为转换时间,其最小时间也为10ns,参考零点为SCLK上升沿。

                       

图3:SDIO输出转换为输入的时序图

 

3线SPI的读写时序分析就介绍到这里了,一样强调几个关键点:

关键点1CSB在读写操做时,必须拉低。读写完成以后,必须拉高。

关键点2SDIO做为输入口时,数据每次必须在SCLK的上升沿写入SPI。

关键点3SDIO做为输出口时,寄存器数据每次在SCLK的降低沿输出SPI,FPGA端在SCLK的上升沿处捕获数据最稳定。

关键点4必定要知足datasheet给出的SPI的时序参数,并在代码实现时要留有适当的时序裕量。

关键点5注意FPGA端的SDIO口的三态控制逻辑,以便正确读写ADC寄存器。

 

本篇以Analog Device(ADI)的多通道高速ADC芯片AD9249为例,简要介绍了ADC的3线SPI配置时序,但愿咱们能一块儿学习、一块儿进步!下篇将具体介绍如何用verilog实现FPGA经过SPI对ADC进行配置。

 

若有问题,请扫码关注 或者 微信搜索小青菜哥哥的那些事”联系本人!