白云网站(建设信科网络),88黄页网发帖效果好吗,app开发制作一般多少钱,高端品牌网站建设制作多少钱FPGA存在的意义#xff1a;为什么adc连续采样需要fpga来做#xff0c;而不会直接用iic来实现 原因ADS111x连续采样实现连续采样功能说明iic读取adc的数据速率 VS adc连续采样的速率adc连续采样的速率iic读取adc的数据速率结论分析 FPGA读取adc数据问题一#xff1a;读取adc数… FPGA存在的意义为什么adc连续采样需要fpga来做而不会直接用iic来实现 原因ADS111x连续采样实现连续采样功能说明iic读取adc的数据速率 VS adc连续采样的速率adc连续采样的速率iic读取adc的数据速率结论分析 FPGA读取adc数据问题一读取adc数据过快造成数据多余问题二fpga没有那么多空间存储取回来的全部数据 原因 每次调用iic驱动的时间间隔太长了adc连续采样的速率高且没有多的寄存器缓存数据所以用户得及时取数据否则就会产生数据丢失于是就需要一个快速的取数据方式而fpga的时间以8ns为单位它可以做到快速取数据但是用户没法这么快的从fpga那边取数据于是就需要用DMA给fpga存放数据最后用户再从DMA中取数据。 下面将来介绍一个实际的案例详细说明。
ADS111x连续采样实现
连续采样功能说明 主要获取信息
在连续转化模式中ADC 一旦上一个转化完成了 就会自动开始下一个转化连续转化的速率 等于 编程的数据速率数据能在任意时刻被读取 并且 数据总是对应着最近完成的转化也就是数据会不断得刷新成新的 编程可理解为设置的数据速率。下图就是ads111x可编程可理解为设置的数据速率
结论 所以就是我们要实现连续采样即及时得把adc每次转化的数据取出来的话我们读取adc的数据速率 就得跟得上 adc连续采样的速率这样才不会丢失adc转换的数据。 iic读取adc的数据速率 VS adc连续采样的速率
adc连续采样的速率 从上图可以看到最高的转化速率是860SPS即每秒钟采集860个电压点转换电压间隔是 1s / 860个 * 1000ms/s 1.16279ms/个
iic读取adc的数据速率 根据试验两次iic通讯操作间隔时间是3ms左右意味着iic取数据的速率大概 3ms/个。
结论分析 用iic去取数据的速率时 3ms/s 间隔3ms才取1个数据ads 在860SPS的转换速率下 3ms / 1.16279ms/个 2.58个这样子的话每次都会丢1.58个数据即用iic取数据的话流失数据率是 1.58 / 2.58 61.2%。 假如在860SPS速率下每秒860个iic成功获取只有 860 * 1- 0.612 333.68 个将近流失了 2/3 的数据点 所以得用一种跟得上860sps 速率的取数据方式FPGA
FPGA读取adc数据
fpga读取数据的速率可以高于adc的连续采样速率。
问题一读取adc数据过快造成数据多余
但是取数据的速度太快的话也会出现问题同一个数据会被多次获取造成数据错误多余
解决方案 就是在取数据的速率 高于 adc转换速率时FPGA并不是一直取数据而是当得知adc每次转换完成后fpga再去取数据
如何得知adc转换完成了呢adc正好有这个功能
就是adc可以配置功能使得一个特定的芯片引脚 空闲时得外部接上拉电阻进行上拉每当adc转换时会拉低这个引脚转换完成会释放就会有一个上升沿检测这个上升沿就可以知道adc转换完成引脚。FPGA只要检测adc的这个引脚相当于触发中断 得知转换完成后 进行 取数据就好了
问题二fpga没有那么多空间存储取回来的全部数据
开辟内存空间FPGA就把取回来的数据存放在dma当中通过dma存放到内存空间最后用户再从内存空间中获取全部数据即可。