FPGA配置高速ADC
文章平均质量分 69
小青菜哥哥
小青菜哥哥的核谐生活:专业的核探测器与电子学知识分享~
展开
-
FPGA配置高速ADC篇(10)_ADS528X_SPI配置实战
如下图所示为写操作的逻辑,状态0初始化,状态1不断发送24bit寄存器参数,状态2为配置完一个寄存器参数,等待5个时钟周期,再进行下一个寄存器参数的配置,这里的操作只显示了第一个寄存器配置,其余两个与这里是完全一样的。前几篇小青菜哥哥分别以ADI公司和TI公司的高速ADC为实例(AD9429、AD9639、ADS52J90),向大家演示FPGA是如何通过SPI接口向该ADC读写寄存器配置数据的,所述的方法都是通用型的SPI读写操作,适用于任何FPGA与高速ADC的SPI配置。原创 2024-01-20 11:36:07 · 592 阅读 · 0 评论 -
FPGA配置高速ADC篇(9)_ADS52j90四线SPI配置实战
如下图所示为小青菜哥哥设计的基于该款ADC的8/16/32通道FPGA数据采集系统: 大家看到板卡上的人像丝印为小青菜哥哥当时的女朋友(现在的夫人),来自理工男的特有浪漫让她当时高兴了很久~前几篇小青菜哥哥介绍了ADI公司的ADC和FPGA的3线、4线SPI配置方法,本篇小青菜哥哥将以TI公司的多通道高速ADC—ADS52J90为实例,向大家演示FPGA是如何通过SPI接口向该ADC读写寄存器配置数据的。TI公司的3线SPI配置其实和前几篇所说的是一样的,本人就不再另篇说明了~写偏了,先回到主题。原创 2024-01-20 11:34:52 · 448 阅读 · 0 评论 -
FPGA配置高速ADC篇(8)_AD9249三线SPI配置实战
如下如所示,上边为ise14.7实现的方式,下边为vivado实现的方式,可以看到,同样写入3个寄存器数据,显然vivado实现起来更加方便,便于扩展,改变n值即可。如下图所示为小青菜哥哥设计的80通道的FPGA数据采集系统,采用5片AD9249+kintex7 FPGA+网络+光纤传输的方式,本篇的SPI读写将以其中的一片ADC芯片为例,代码为verilog,vivado版本为2017.4。从下一篇开始,小青菜哥哥将以德州仪器(TI)的ADC芯片为例,介绍其FPGA的SPI配置方式~原创 2024-01-20 11:33:08 · 1234 阅读 · 0 评论 -
FPGA配置高速ADC篇(7)_AD9639三线SPI配置实战
读者可以看到,三线SPI的写逻辑和四线SPI的写逻辑其实是一样的~AD9639的3线SPI实际操作就这样完成了,本篇文字性的说明比较少,主要是以代码的形式给出,小青菜哥哥在每条代码后都给出了详细注解,大家很容易理解的~当FPGA向ADC读写配置数据时,就需要完成上图的时序功能,每配置一个寄存器,就执行上图的逻辑功能一次,如果是配置多个寄存器,则反复执行上述逻辑即可。每次事件传输24bit数据,MSB为读/写控制位,接下来2bit为一次传输数据的大小,一般写0即可,A12-A0为地址位,D7-D0为数据位。原创 2024-01-20 11:31:18 · 1648 阅读 · 1 评论 -
FPGA配置高速ADC篇(6)_AD9639四线SPI配置实战
如果一开始不明白的地方,大家可以好好琢磨,毕竟代码也就那么几行,还有注释,搞明白了以后ADI公司的4线ADC的SPI配置就都没问题了~当FPGA向ADC读写配置数据时,就需要完成上图的时序功能,每配置一个寄存器,就执行上图的逻辑功能一次,如果是配置多个寄存器,则反复执行上述逻辑即可。3线的SPI配置稍微复杂一些,涉及到FPGA的I/O的3态控制,体现在配置逻辑里则稍微麻烦一点,但也和4线SPI配置大同小异,咱们下篇再介绍~咱们再看读该寄存器的时序图,如下图所示:可以看到读到的数据也为8’h01,OK!原创 2024-01-20 11:29:19 · 990 阅读 · 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-01-20 11:27:05 · 544 阅读 · 0 评论 -
FPGA配置高速ADC篇(4)_基于verilog的4线SPI实现
接下来在进入下一个状态,本篇例子下一个状态的操作是读取对应寄存器地址的数据。我们首先需在SCLK的上升沿写入8bit的寄存器地址,接下来在SCLK的下降沿读取16bit的数据。无论实现读还是写功能,都先要提供SCLK。假如FPGA系统工作时钟40MHz,我们可以利用计数器产生一个n分频的时钟作为SCLK,本例中n取8,SCLK频率5MHz。第2篇以德州仪器(TI)的高速ADC芯片——ads52j90为例,介绍完了 4线SPI配置时序。原创 2024-01-20 11:26:24 · 441 阅读 · 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转换可以通过其内置的三态门来实现。关键点4:一定要满足datasheet给出的SPI的时序参数,并在代码实现时要留有适当的时序裕量。原创 2024-01-20 11:25:20 · 1089 阅读 · 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的寄存器数值。1,SEN:控制ADC的SPI读写的使能信号;原创 2024-01-20 11:24:28 · 1063 阅读 · 0 评论 -
FPGA配置高速ADC篇(1)_什么是SPI
另外,某些ADC的三线模式较为简单,SDIO只用做输入端口SDI(例如德州仪器的ADS5281芯片),没有SDO的功能,实现起来较为简单。它是一种高速、全双工的数据通信总线,并且在芯片的管脚只占有4根线,节省了芯片的管脚,同时极大的方便了PCB的布局。目前,市面上绝大多数的高速ADC(模数转换器)芯片都内嵌专用的SPI配置接口,通过配置其SPI接口可以对ADC内部的控制寄存器进行读、写操作,从而灵活的使用ADC芯片的各种功能。原创 2024-01-20 11:23:16 · 466 阅读 · 0 评论