FPGA实现AD采集

1 理论学习(废话篇)

  ADC 模拟数字转换器(额谈到这个,真的很荣幸在ADI实习的时光,打住不扯了),凡是涉及到模拟信号转数字信号的时候,都会用到ADC。
  ADC的种类很多,有积分型,逐次比较型,SAR型等等,各有各的优势和缺点,一般根据实际项目来选择ADC型号。ADC有一个很重要的参数就是位宽,什么8位,12位,16位。这其实就是ADC的分辨率,最小能分辨的输入电压大小。假设ADC的位宽是8位,参考电压为5V,最小分辨率为:1/256*5v=0.0195mv 。

2 实战参考

FPGA高速ADC接口实战——250MSPS采样率ADC9481

2.1 ADC硬件特性分析(瞎抄的)

   首先必须通过datasheet分析其核心参数、接口定义和时序要求。ADC9481的采样率为250MSPS,精度8bit。其原理结构图如下
在这里插入图片描述
主要引脚:
CLK:差分时钟输入,信号频率为250Mhz
VIN:模拟信号输入,范围是1vpp
VREF:电压参考输入输出,这里使用内部固定参考电压模式
SENSE:参考模式选择
D7A~D0A: 通道A的数字信号输出
D7B~D0B:通道B的数字信号输出
DCO: 数字差分时钟信号输出,信号频率为125Mhz
S1:数据格式选择,该接口电压决定数格式是原码还是补码
PDWN:低功耗选通

接下来看看接口时序:
在这里插入图片描述

2.2 基于FPGA的AD采集

   LVDS低电压差分信号,是一种低功耗,低误码率、低串扰和低辐射的差分信号技术。KSPS,采样千次每秒,是转化速率的单位。
  逐次逼近型ADC由比较器包括n位逐次比较型AD转换器,它由控制逻辑电路、时序产生器、移位寄存器、DA转换器及电压比较器组成
在这里插入图片描述
逐次逼近转换过程和用天平称重类似,从最重的开始试放与被称物体进行比较,若物体重于砝码,则该砝码保留,否则移去。再加上第二个次重砝码,由物体的重量是否大于砝码的重量决定第二个砝码是否保留。
  逐次逼近AD转换器,就是将输入模拟信号与不同的参考电压作多次比较,使转换所得的数字量在数值上逐次逼近模拟量对应值。如上图,它由脉冲启动后,在第一个时钟脉冲作用下,控制电路使时序产生器的最高位置1,其他位置0,其输出的数据寄存器将100.000送到DA转换器,输入电压首先与DA器输出电压 VERF/2 进行比较,如果v1>= (VERF/2),比较器就输出1,否则为0.比较结果存于数据的寄存器的Dn-1位。然后再第二个时钟脉冲CP下,移位寄存器的次高位置1,其他低位置0.如最高位已存1,则此时vo=(3/4)VERF。于是v1再与(3/4)VERF相比较,如v1>=(3/4)VERF,则次高位 Dn-2=0;如最高位为0.,则vo=VERF/4 ,与vo相比较如 v1>= VERF/4,则Dn-2位存1,否则位存0…依次类推,逐次比较得到输出数字量。基准电压VREF。(抄了这么一大段 我好像还没理解,我来理一理)
好吧理解了一点,就这样依次比较!

举个例子如下:
电路为8位AD转换器,输入模拟量VA=6.84v,DA转换器基准电压VREF=10v。当启动脉冲低电平到来后转换开始,在第一个CP作用下,数据寄存器将D7-D0=1000000000送入DA转换器,其输出电压vo=5v(这个0.5 怎么算出来的?),vA与vo比较,vA大于vo存1;第二个CP到来的时候,寄存器输出D7-D0=11000000,vo为7.5v,vA再与7.5v比较,因为小于7.5,所以D6存0;输入第三个CP时,D7~D0=10100000,vo=6.25v;vA再与v0进行比较,如此重复下去。经8个时钟周期,转换结束。由图中v0的波形可见,在逐次比较过程中,与输出数字量对应的模拟电压v0逐渐逼近vA值,最后得到AD转换器转换结果D7-D0为10101111。该数字量所对应的模拟电压为6.83v,与实际输入的模拟电压6.84的相对误差仅仅为0.06%。
在这里插入图片描述

2.2.1 AD7982

本实验打算采用AD7982这个数据采集设备,是一个12位高速,低功耗、8通道逐次逼近型ADC。采用单电源工作,电源电压为2.7v到5.25v,最高吞吐率可以达到1Msps。内置低噪声、宽带宽采样保持放大器,可以处理8Mhz以上的输入频率。
通过配置控制寄存器,器件的模拟输入范围可以在0到REFin或0v到2REFin间选择,可采用标准二进制或者二进制补码输出编码。AD7928具有八个通道序列器的单端模拟输入,可以通过预先编程选择通道转换顺序。

参考:https://blog.csdn.net/weixin_43727437/article/details/103349387

  • 5
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
FPGA是一种可编程逻辑器件,可以根据需要通过编程实现不同的功能。SPI(Serial Peripheral Interface)是一种串行通信协议,用于在数字系统之间传输数据。AD采集程序则是指使用FPGA通过SPI接口来采集模拟信号。 FPGA与SPI接口之间的连接可以通过外部引脚配合SPI控制器模块实现。首先,我们需要编写SPI控制器模块的代码,这个模块负责与外部设备进行通信,实现SPI协议中的发送和接收数据的功能。 然后,我们需要编写AD采集模块的代码,这个模块负责将模拟信号转换为数字信号。在采集过程中,首先通过SPI控制器向外部设备发送指令,使其将模拟信号转换为数字信号。然后,通过SPI控制器接收从外部设备传回的数字信号。AD采集模块将接收到的数字信号进行处理和存储,最终将结果输出。 在编写AD采集程序时,需要考虑一些关键的参数和功能,例如采样率、分辨率、通道数等。根据实际需求和外部设备的规格,我们可以对AD采集模块进行相应的配置。同时,还需要与外部设备的通信协议进行匹配和配置。 在程序开发完成后,我们需要将代码烧录到FPGA芯片中,并将外部设备与FPGA连接起来。通过SPI接口与外部设备进行通信,并实时采集和处理模拟信号。最终,我们可以通过FPGA的输出端口读取和使用处理后的数字信号。 总结来说,FPGA SPI AD采集程序主要包括SPI控制器模块和AD采集模块的编写与配合,通过FPGA与外部设备的SPI接口实现模拟信号的采集和转换。这种方式具有较高的灵活性和可编程性,适用于许多需要高速和精确数据采集的应用场景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值