FPGA配置高速ADC篇(8)_AD9249三线SPI配置实战

FPGA配置高速ADC篇(1)_什么是SPI-CSDN博客

FPGA配置高速ADC篇(2)_4线SPI配置时序分析-CSDN博客

FPGA配置高速ADC篇(3)_3线SPI配置时序分析-CSDN博客

FPGA配置高速ADC篇(4)_基于verilog的4线SPI实现-CSDN博客

FPGA配置高速ADC篇(5)_基于verilog的3线SPI实现-CSDN博客

FPGA配置高速ADC篇(6)_AD9639四线SPI配置实战-CSDN博客

FPGA配置高速ADC篇(7)_AD9639三线SPI配置实战-CSDN博客

FPGA配置高速ADC篇(8)_AD9249三线SPI配置实战-CSDN博客

FPGA配置高速ADC篇(9)_ADS52j90四线SPI配置实战-CSDN博客

FPGA配置高速ADC篇(10)_ADS528X_SPI配置实战-CSDN博客

*******获取工程代码,加V博主:FPGA_GO*******

本篇博主小飞继续以ADI公司的16通道高速ADC—AD9249为实例,向大家演示FPGA是如何通过SPI接口向该ADC读写寄存器配置数据的。如下图所示为AD9249的功能框图,其为16通道、65MSPS、14bit精度的多通道高速ADC,且其SPI接口只为三线模式:

该ADC的SPI配置完全可以用上篇介绍的AD9639的配置方式完成。但本篇实现的方式由于采用的是kintex7系列的FPGA,且操作软件为vivado,因此在verilog代码实现上简化了很多,更容易让大家理解!

如下图所示为博主设计的一款80通道的FPGA数据采集系统,采用5片AD9249+kintex7 FPGA+网络+光纤传输的方式,本篇的SPI读写将以其中的一片ADC芯片为例,代码为verilog,vivado版本为2017.4。

该款ADC和ADI公司其他ADC的SPI配置方式相同,其数据传输的结构如下图所示:

每次事件传输24bit数据,MSB为读/写控制位,接下来2bit为一次传输数据的大小,一般写0即可,A12-A0为地址位,D7-D0为数据位。

当FPGA向ADC读写配置数据时,就需要完成上图的时序功能,每配置一个寄存器,就执行上图的逻辑功能一次,如果是配置多个寄存器,则反复执行上述逻辑即可。

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

这里需要注意的是,配置接口中多了一个Tri_en信号,该信号即为三态口控制信号,三态口的定义如下图所示:

本例程同样实现了3个寄存器的写和读,如下图所示:

当然,配置个数可以任意改动,只要改变Wr_n这个写参数和Rd_n读参数个数即可。RdData1~3为存储读到的3个寄存器的值,方便ILA逻辑分析仪观察。

具体的3线SPI读写过程,咱们在上一篇的AD9639已经说过了,本篇再次介绍ADI的AD9249配置,代码实现上的主要区别在于哪呢?就是在循环读写上!

如下如所示,上边为ise14.7实现的方式,下边为vivado实现的方式,可以看到,同样写入3个寄存器数据,显然vivado实现起来更加方便,便于扩展,改变n值即可。

同样的,在读寄存器数据阶段,循环代码也可以简化,简化前后如下图所示:

最后,在移位取数阶段,同样可以简化,简化前后如下图所示:

这样3线SPI的配置过程完成后。用上面介绍的代码在vivado2017.4上运行,并下载到电路板上,咱们观察的ILA逻辑分析仪吧!

如下图所示为分别读写3个寄存器的时序图,可以看到最终咱们读到的寄存器值分别为8’h92、8’h04、8’h42,与预期值完全一致,配置成功!

咱们再看看逻辑实现的写过程的具体时序图吧,下图所示为写WrtieReg2的实际时序,写入的数据为8’h04:

咱们再看读该寄存器(RdData3)的时序图,如下图所示:可以看到读到的数据为8’h42,和WrtieReg3写入的数据一致,OK!在vivado中,这里可以加入sdin,正如上篇所说,sdin和sdout其实都是SDIO信号,从时序图可以看出来:

AD9249的3线SPI实际操作就这样完成了,本篇的说明比较少,博主小飞主要是想向大家演示,前两篇ise14.7平台实现的AD9639配置的代码,在vivado平台下其实可以更加简化,使用起来更加方便。

从下一篇开始,博主小飞将以德州仪器(TI)的ADC芯片为例,介绍其FPGA的SPI配置方式~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值