高速ADC-FPGA配置SPI
文章平均质量分 79
FPGA小飞
超级奶爸,辞职在家带娃!闲时写博客、分享FPGA相关内容!985高校,理工科博士毕业,专注FPGA设计!微信号:FPGA_GO
展开
-
FPGA配置高速ADC篇(10)_ADS528X_SPI配置实战
如下图所示为写操作的逻辑,状态0初始化,状态1不断发送24bit寄存器参数,状态2为配置完一个寄存器参数,等待5个时钟周期,再进行下一个寄存器参数的配置,这里的操作只显示了第一个寄存器配置,其余两个与这里是完全一样的。前几篇博主小飞分别以ADI公司和TI公司的高速ADC为实例(AD9429、AD9639、ADS52J90),向大家演示FPGA是如何通过SPI接口向该ADC读写寄存器配置数据的,所述的方法都是通用型的SPI读写操作,适用于任何FPGA与高速ADC的SPI配置。原创 2024-08-17 16:15:02 · 323 阅读 · 0 评论 -
FPGA配置高速ADC篇(9)_ADS52j90四线SPI配置实战
本篇的说明很少,主要是想告诉大家,无论是ADI还是TI公司的adc配置,其实都是一样的,代码都相同,只不过这两家公司的数据定义格式有区别罢了。前几篇博主小飞介绍了ADI公司的ADC和FPGA的3线、4线SPI配置方法,本篇博主将继续以TI公司的多通道高速ADC—ADS52J90为实例,向大家演示FPGA是如何通过SPI接口向该ADC读写寄存器配置数据的。如下图所示为写操作的逻辑,只需要两个状态即可循环完成76个的寄存器的写操作:这里的操作方法和前几篇所说的完全一样。原创 2024-08-17 16:15:00 · 408 阅读 · 0 评论 -
FPGA配置高速ADC篇(8)_AD9249三线SPI配置实战
如下图所示为博主设计的一款80通道的FPGA数据采集系统,采用5片AD9249+kintex7 FPGA+网络+光纤传输的方式,本篇的SPI读写将以其中的一片ADC芯片为例,代码为verilog,vivado版本为2017.4。如下如所示,上边为ise14.7实现的方式,下边为vivado实现的方式,可以看到,同样写入3个寄存器数据,显然vivado实现起来更加方便,便于扩展,改变n值即可。从下一篇开始,博主小飞将以德州仪器(TI)的ADC芯片为例,介绍其FPGA的SPI配置方式~原创 2024-08-17 16:14:58 · 753 阅读 · 0 评论 -
FPGA配置高速ADC篇(7)_AD9639三线SPI配置实战
读者可以看到,三线SPI的写逻辑和四线SPI的写逻辑其实是一样的~当FPGA向ADC读写配置数据时,就需要完成上图的时序功能,每配置一个寄存器,就执行上图的逻辑功能一次,如果是配置多个寄存器,则反复执行上述逻辑即可。AD9639的3线SPI实际操作就这样完成了,本篇文字性的说明比较少,主要是以代码的形式给出,博主小飞在每条代码后都给出了详细注解,大家很容易理解的~每次事件传输24bit数据,MSB为读/写控制位,接下来2bit为一次传输数据的大小,一般写0即可,A12-A0为地址位,D7-D0为数据位。原创 2024-08-17 16:14:56 · 878 阅读 · 0 评论 -
FPGA配置高速ADC篇(6)_AD9639四线SPI配置实战
AD9639的SPI配置实际操作就这样完成了,介绍性的东西写的较少,原理性的内容在前面的几篇博主都已经写过,所以本篇直接拿出干货供大家参考。RdData1~3为存储读到的3个寄存器的值,方便chipscope观察。当FPGA向ADC读写配置数据时,就需要完成上图的时序功能,每配置一个寄存器,就执行上图的逻辑功能一次,如果是配置多个寄存器,则反复执行上述逻辑即可。3线的SPI配置稍微复杂一些,涉及到FPGA的I/O的3态控制,体现在配置逻辑里则稍微麻烦一点,但也和4线SPI配置大同小异,咱们下篇再介绍~原创 2024-08-17 16:14:54 · 925 阅读 · 0 评论 -
FPGA配置高速ADC篇(5)_基于verilog的3线SPI实现
3线SPI的时钟产生方式和上一篇的4线SPI相同,这里不在叙述。然而在读操作中,该信号在写地址的前半段需置高,当完成写地址操作后,ADC的SDIO接口由输入变输出,此时FPGA控制Tri_en信号拉低,将FPGA端的SDIO管脚由输出变为输入,从而正常接收ADC的SDIO口输出的寄存器数值。3线SPI的FPGA实现就介绍到这里了,其实和4线基本一样,只不过多了个三态转换而已,咱们把上篇的4线SPI的实现过程想清楚了,再加上一个三态转换控制,3线SPI也就拿下了!答案其实在第3篇已经说的很清楚了~原创 2024-08-17 16:14:51 · 252 阅读 · 0 评论 -
FPGA配置高速ADC篇(4)_基于verilog的4线SPI实现
接下来在进入下一个状态,本篇例子下一个状态的操作是读取对应寄存器地址的数据。我们首先需在SCLK的上升沿写入8bit的寄存器地址,接下来在SCLK的下降沿读取16bit的数据。假如FPGA系统工作时钟40MHz,我们可以利用计数器产生一个n分频的时钟作为SCLK,本例中n取8,SCLK频率5MHz。第2篇以德州仪器(TI)的高速ADC芯片——ads52j90为例,介绍完了 4线SPI配置时序。本篇(第4篇)博主小飞将以该芯片SPI结构为例,具体介绍如何利用verilog 实现4线SPI配置时序。原创 2024-08-17 16:14:48 · 355 阅读 · 0 评论 -
FPGA配置高速ADC篇(3)_3线SPI配置时序分析
首先需写入1bit 0 + 2bit 0 +13bit 地址,当最后1bit的地址A0在SCLK的上升沿写入SDIO后,SDIO会由输入口变为输出口,然后在接下来的8个SCLK下降沿,SDIO会输出寄存器的8bit数据。因此,在ADC的SDIO由输入变为输出口时,FPGA端的SDIO必须同步由输出口变为输入口,并在SCLK上升沿接收这8bit数据最稳定,FPGA端口的这种I/O转换可以通过其内置的三态门来实现。3线的读写数据格式由控制命令+地址+数据组成,而上篇提到的4线配置只有地址+数据。原创 2024-08-17 16:14:44 · 479 阅读 · 0 评论 -
FPGA配置高速ADC篇(2)_4线SPI配置时序分析
首先介绍该ADC的SPI的写功能,datasheet给出的时序图如图1所示:我们首先大致看一下写时序图,能够了解到对于SDIN来说,需要先写入A7~A0的8bit的地址,接下来写入该地址下的16bit的寄存器数值D15~D0,也就是说每进行一次写操作需要不间断的写入24bit 的数据。从图上我们可以看到,SPI的读操作可以分解为两个部分:第一个部分是先写入A7~A0 8bit的寄存器地址到SDIN,然后SDOUT输出对应地址的16bit的寄存器数值。:SDIN的数据每次必须在SCLK的上升沿写入SPI。原创 2024-08-17 16:14:40 · 896 阅读 · 0 评论 -
FPGA配置高速ADC篇(1)_什么是SPI
另外,某些ADC的三线模式较为简单,SDIO只用做输入端口SDI(例如德州仪器的ADS5281芯片),没有SDO的功能,配置起来较为简单。目前,市面上绝大多数的高速ADC(模数转换器)芯片都内嵌专用的SPI配置接口,通过配置其SPI接口可以对ADC内部的控制寄存器进行读、写操作,从而灵活的使用ADC芯片的各种功能。3线模式和4线模式相比,表面上看只是少了1根信号线,实际上在读写操作时,涉及到了ADC端与FPGA端的SDIO接口的三态转换控制,这点需要大家特别注意。原创 2024-08-17 15:59:40 · 737 阅读 · 0 评论