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

这篇具有很好参考价值的文章主要介绍了FPGA配置高速ADC篇(6)_AD9639四线SPI配置实战。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

​ 注:扫码关注小青菜哥哥的weixin公众号,免费获得更多优质的核探测器与电子学资讯~

FPGA配置高速ADC篇(6)_AD9639四线SPI配置实战,FPGA配置高速ADC,笔记

前段时间小青菜哥哥写过几篇关于FPGA通过SPI接口配置高速ADC的文章,收到了很多朋友的意见和建议,如今在verilog的实现方式上又有了很大改进。因此小青菜哥哥打算再更新几篇关于这方面的内容,并且为了不和以前的内容重复,这次主要以实际操作为主,一些基本的概念就不重复介绍了。

本篇以ADI公司的4通道高速ADC—AD9639为实例,向大家演示FPGA是如何通过SPI接口向该ADC读写寄存器配置数据的。如下图所示为AD9639的功能框图,不难发现其SPI接口既可以实现3线模式也可以实现4线模式,本篇将演示4线模式,3线模式的读写控制咱们下篇见:

FPGA配置高速ADC篇(6)_AD9639四线SPI配置实战,FPGA配置高速ADC,笔记

图1:AD9639功能框图

既然该篇是实例操作,那咱们就必须与硬件相结合。如下图所示为小青菜哥哥以前设计的一款8通道、150MHz采样率的FPGA数据采集卡:8路模拟信号通过SMA连接器引入板卡、系统时钟采用TI的LMK03000时钟控制芯片来产生任意频率的时钟供给FPGA和ADC,FPGA为AMD xilinx公司的virtex-5系列。逻辑代码的工程采用ISE14.7来建立,配置的代码为verilog:

FPGA配置高速ADC篇(6)_AD9639四线SPI配置实战,FPGA配置高速ADC,笔记

图2:基于该款ADC的FPGA采集板卡实物

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

FPGA配置高速ADC篇(6)_AD9639四线SPI配置实战,FPGA配置高速ADC,笔记

图3:ADC的SPI读写控制

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

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

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

FPGA配置高速ADC篇(6)_AD9639四线SPI配置实战,FPGA配置高速ADC,笔记

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

FPGA配置高速ADC篇(6)_AD9639四线SPI配置实战,FPGA配置高速ADC,笔记

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

根据AD9639的手册说明,当配置WrtieReg1后,该寄存器地址读到的数据应该为8’h18;当配置WrtieReg2后,该寄存器地址读到的数据也应该为8’h01;同样读芯片的ID号,结果应该与手册给的8’h29一致。这里大家如果不太清楚,可以查阅芯片手册的配置地址和数据部分章节,里面已经详细说明。

接下里咱们就说下如何用代码具体实现读写过程,首先咱们先介绍FPGA如何向ADC写入配置数据,请看如下代码:

FPGA配置高速ADC篇(6)_AD9639四线SPI配置实战,FPGA配置高速ADC,笔记

该代码目的是实现一个24bit的寄存器地址+数据的写入,但是咱们要写3个寄存器的数据,而有的ADC可能需要写入更多的配置数据,总不能将代码复制很多遍吧,那样效率太低了,这里咱们就用了一个循环,里面的n值就代表写入的个数,具体如何循环请看如下代码:

该段代码就实现了循环写的功能,因此整个ADC的配置过程只需要4个状态,即可完成全部的配置,是不是很方便呢?

接下来咱们将写入ADC的数据再读出来看看是否配置正确吧,请看如下代码:

FPGA配置高速ADC篇(6)_AD9639四线SPI配置实战,FPGA配置高速ADC,笔记

上面的代码就实现了1次寄存器的读操作,咱们需要读3个寄存器的值甚至更多的时候,不可能一次次的读,所以这里也用循环的操作,使代码尽可能简洁,下图代码的功能就是让上图的代码循环m次:

FPGA配置高速ADC篇(6)_AD9639四线SPI配置实战,FPGA配置高速ADC,笔记

循环m次后,将得到m个寄存器的值,这个例程里是3个值,将这3个值与预期值比较,如果相同,则配置成功,如果不同,则说明哪地方出问题了,需要仔细检查~如下图所示:

FPGA配置高速ADC篇(6)_AD9639四线SPI配置实战,FPGA配置高速ADC,笔记

这样4线SPI的配置过程就完成了,总共用了15个状态,其中好几个等待状态都是冗余的,实际应用中大家去掉也没事。用上面介绍的代码在ise14.7上运行,并下载到电路板上,咱们观察chipscope吧!

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

FPGA配置高速ADC篇(6)_AD9639四线SPI配置实战,FPGA配置高速ADC,笔记

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

FPGA配置高速ADC篇(6)_AD9639四线SPI配置实战,FPGA配置高速ADC,笔记

      

咱们再看读该寄存器的时序图,如下图所示:可以看到读到的数据也为8’h01,OK!

FPGA配置高速ADC篇(6)_AD9639四线SPI配置实战,FPGA配置高速ADC,笔记

AD9639的实际操作就这样完成了,介绍性的东西写的较少,以前的几篇小青菜哥哥都已经写过,所以本篇直接拿出干货供大家参考。如果一开始不明白的地方,大家可以好好琢磨,毕竟代码也就那么几行,还有注释,搞明白了以后ADI公司的4线ADC的SPI配置就都没问题了~

3线的SPI配置稍微复杂一些,涉及到FPGA的I/O的3态控制,体现在配置逻辑里则稍微麻烦一点,但也和4线SPI配置大同小异,咱们下篇再介绍~

今天的博文就到这里了,有问题请在小青菜哥哥的公众号留言,谢谢!文章来源地址https://www.toymoban.com/news/detail-835072.html

到了这里,关于FPGA配置高速ADC篇(6)_AD9639四线SPI配置实战的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32-SPI1控制AD7705(Sigma-Delta-ADC芯片)

    该芯片需要晶振(Y2)和参考电源电压(U3) AD7705与国产TM7705型号差不多,也就是可以参考国产的手册。 AD7705利用 Σ-Δ 转换技术实现了 16 位无丢失代码性能。选定的输入信号被送到一个基于模拟调制器的增益可编程专用前端。片内数字滤波器处理调制器的输出信号。通过片

    2024年02月19日
    浏览(40)
  • FPGA高速A/D数据采集(AD9226)

    FPGA驱动AD9226采集模拟信号并读取转换结果至寄存器。 文章目录 前言 一、AD9226时序图 二、 具体思路 1. 需求分析 2. 代码示例 总结 AD9226是一种流水线形式的单通道ADC模数转换器。它支持12位宽、65MHz的采样精度和速度。 FPGA是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的

    2024年02月16日
    浏览(47)
  • FPGA模块——AD高速转换模块(并行输出转换的数据)

    AD9280/3PA9280芯片的引脚功能: 工作电压2.7到5.5v 数据对应: AD9280 支持输入的模拟电压范围是 0V 至 2V,0V 对应输出的数字信号为 0,2V 对应输出的数字信号为 255。而 AD9708 经外部电路后,输出的电压范围是-5V到+5V,因此在 AD9280 的模拟输入端增加电压衰减电路,使-5V到+5V 之间的

    2024年02月04日
    浏览(50)
  • STM32模拟SPI协议获取24位模数转换(24bit ADC)芯片AD7791电压采样数据

    STM32大部分芯片只有12位的ADC采样性能,如果要实现更高精度的模数转换如24位ADC采样,则需要连接外部ADC实现。AD7791是亚德诺(ADI)半导体一款用于低功耗、24位Σ-Δ型模数转换器(ADC) ,适合低频测量应用,提供50 Hz/60 Hz同步抑制。 这里介绍基于AD7791的24位ADC采样实现。 AD7791的管脚

    2024年02月09日
    浏览(61)
  • FPGA对高速采集ADC(8路并行数据)进行峰值检测,并记录峰值位置

              本模块主要是ADC(2Gsps)采集信号波形进行峰值检测,主要是检测单音信号或者脉冲信号中的所有峰峰值信号(对噪声大信号适用性不是很好),并记录峰值点的位置。         1. 峰值检测8路并行数据端口 2.连续3点检测峰值,被例化8次,                

    2024年02月16日
    浏览(78)
  • 半导体运动台基于dsp+fpga+ad+endac的高速数据采集FPGA设计(二)

    4 系统 FPGA 程序的设计 4.1 设计方法及逻辑设计概述 4.1.1 开发环境与设计流程 Quartus II 是 Altera 公司综合开发工具,它集成了 FPGA/CPLD 开发过程中所设计 的所有工具和第三方软件接口,支持多时钟分析, LogicLock 基于块的设计,片上可编 程系统 SOPC, 内嵌在线逻辑分析仪 Signal

    2024年02月12日
    浏览(48)
  • AD9680+JESD204B接口+FPGA FMC高速率数据采集板卡

    板卡概述: 【FMC_XM155】 FMC_XM155 是一款基于 VITA57.1 标准的,实现 2 路 14-bit、500MSPS/1GSPS/1.25GSPS 直流耦合 ADC 同步采集 FMC 子卡模 块。 该模块遵循 VITA57.1 规范,可直接与 FPGA 载卡配合使用,板 卡 ADC 器件采用 ADI 的 AD9680 芯片,该芯片具有两个模拟输入通道和两个 JESD204B 输出数

    2024年02月14日
    浏览(51)
  • 基于vivado+Verilog FPGA开发 — 基于AD9767高速DAC的DDS信号发生器

    目录  一、功能定义 二、设计输入  1、主模块 2、DDS模块 3、 按键消抖模块 三、功能仿真  四、综合优化 五、布局布线 六、时序仿真 七、板级调试  代码规范:Verilog 代码规范_verilog代码编写规范-CSDN博客 开发流程:FPGA基础知识----第二章 FPGA 开发流程_fpga 一个项目的整个

    2024年03月18日
    浏览(77)
  • 基于dsp+fpga+AD+ENDAC的半导体运动台高速数据采集电路仿真设计(四)

    整个调试验证与仿真分析分三个步骤:第一步是进行 PCB 检查及电气特性测试,主 要用来验证硬件设计是否正常工作;第二步进行各子模块功能测试,包括高速光纤串行 通信的稳定性与可靠性测试, A/D 及 D/A 转换特性测试, EnDat 串行通信相关时序测试 与验证等,主要用来验

    2024年02月01日
    浏览(55)
  • 光刻机基于dsp+fpga+ad+endac光纤传输的高速数据采集与伺服接口系统设计(一)

    光刻机双工件台运动控制系统,控制任务相当复杂,要求极高的速度和精度,且设 备体积庞大,各传感器执行器空间距离较远,线缆众多现场电磁干扰严重。 为满足控制系统要求,本文利用 DSP 的高速浮点运算能力、 FPGA 强大的并行处理 能力及光纤通信传输距离远、抗干扰

    2024年02月03日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包