基于 ARM+FPGA+AD的高精度数据采集系统设计

随着图像处理 工业控制 无线通信等领域的飞速发
对数据采集系统的速度 精度等性能要求也越来越高
这些要求都对数据采集系统的设计和实现提出了新的挑
目前数据采集系统的设计方案通常分为以下几类
以微处理器单一控制芯片和 转换器形式为主 该设计
方案简单 在对性能要求不高的应用场合为了降低成本甚
至可以采用集成 转换器的微处理器 采用通用
计算机配置数据采集卡的方式 通常需要开发计算机端
应用程序 可以完成复杂的计算 ,但不同的采集卡相应的驱
动程序不同 如果需求改变需要更换采集卡时 相应的应用
程序也需要重新开发 因此 该设计方案通用性差 实时性
不高 ARM FPGA DSP FPGA 组合方式作为
采集系统的核心 ARM 处理器适合控制领域 DSP 处理
器适合信号处理领域 FPGA 器件由于其自身特点 适合高
速并行采集与处理领域 具有 ARM 或者 DSP 等处理器无
法比拟的优势 这类组合方式结合各自特点 处理能力强
应用范围广 通过以上分析 设计了 ARM 处理器和 FPGA
器件作为数据采集系统的核心 ARM 处理器使用 Marvell
公司的 PXA270 FPGA 器件使用 Altera 公司的 Cyclone
EP1C6 前端采集芯片使用 Ti 公司的高精度 大动态 24
转 换 器 ADS1278 进 行 模 数 转 换 ARM FPGA
之间的数据交换采 用 双 口 RAM 芯 片 来 实 现 FIFO 功 能
系统中 ARM 处理器作为系统控制核心 负责控制整个系
统工作时序 并将数据通过网络上传到服务器中进行存储
FPGA 负责 转换器的模式配置 数据传输 该组合方
式结合 ARM 在控制方面和 FPGA 在采集方面的优势
有通用性强 配置灵活的特点
系统设计
本系 统 硬 件 主 要 由 信 号 调 理 电 路 模 数 转 换 器
ADS1278 FPGA 器 件 Cyclone 系 列 EP1C6 双 口 RAM
IDT7205 和处理器 PXA270 及外围电路 组成 系统结构框
图如图 所示 输入信号经过信号调理电路后 进入
转换器进行数据转换 将模拟信号转换成 23 位尾数和一符
号位的数据 FPGA 配置 转换器并将转换的数据按照
顺序存储到双口 RAM 当转换数据存储满后中断 ARM
处理器 ARM 处理器将数据从双口 RAM 读出进行运算
并通过网络接口将采集数据传输到服务器
2.1 24 转换芯片 ADS1278
ADS1278 是德州仪器 TI 公司推出的采样率高达
128KS 24 通道同步采样 Σ Δ ADC 支持多种工
作模式 内部集成线性相位数字滤波器 数据输出接口支
SPI 或可选帧同步 便于与 FPGA 互连 可满足国防
航天和医疗应用
ADS1278 转换器内部集成的数字滤波器通过奈奎斯特
采样将输入信号抽取为长度为 比特的高分辨率数字信
通道输入信号分别进入独立的 转换器
内部由高阶斩波器 数字滤波器 调制器组成 可将输入模
拟信号经过高阶滤波器后得到数字信号
ADS1278 MODE 0..1 ]、 FORMAT 0..2 ]、
SYNC CLK SCLK DRDY DOUT 8..1 引 脚 分 别 于
FPGA IO 口 相 接 其 中 MODE 0..1 引 脚 状 态 决 定
的工作模式 FORMAT 0..2 引脚状态决定数据输
出格式选择 CLK 引 脚 需 要 输 入 转换器工作时钟
SYNC SCLK DOUT 8..1 引脚是控制 转换的数据
串行输出帧同步 时钟 通道数据 ADS1278
SPI 格式下 时钟和数据时序图
2.2 ARM FPGA 的接口设计
本 系 统 核 心 采 用 ARM FPGA 的 组 合 方 式
ARM FPGA 之 间 采 用 片 双 口 RAMIDT7205 进 行
24bit 数据传输 其中 FPGA 器件控制 转换 并将转
换数据按照一定顺序存储到双口 RAM 当数据存储完
后将中断 ARM ARM 将双口 RAM 中的数据进行读取
比使用 FIFO 传输的方案降低了成本 提高了数据传输的
吞吐量
本系 统 中 FPGA 的设计作用如下 复 位 并 配 置
ADS1278 的工作 模 式 FPGA 内部设置一个地址加法器
控制将 转换器的数据写入双口 RAM 当 双 口
RAM 写满 后 大 小 24 KB 地址加法器复位 ARM
FPGA 的接口方式 有 很 多 种 IIc spi 等串行接口或总
线等并行接口 串行接口由于本身的局限性限制了其在大
数据量 实时数据的传输的应用 而总线的形式更合理一
稳定性较之更好一点 ARM FPGA 通 过 地 址
数据 控制总线直接连接的方式在大数据传输时会影响系
统的效率 因 此 ARM FPGA 之 间 采 用 双 口 RAM
进行连接的方 式 ARM FPGA 异 步 工 作 提 供 了 系 统
的效率 其接口如图 所示
FPGA 的 控 制 信 号 WR RD nRESET 与 双 口 RAM
IDT7205 的复位信号 RS 读写信号 WR RD 连接 数据
总线 D0 D23 与双口 RAM 的数据总线连接 FPGA 通过
内部地址加法器依次将将 转换器的数据串并转换后
写入双 口 RAM 双 口 RAM EF HF 信 号 分 别 与
PXA270 GPIO0 GPIO1 连接 接受数据写满后产生
的中断 PXA270 提 供 个分区的静态存储器 Bank0
Bank5 设计将双口 RAM 的存储空间映射到 PXA270
Bank3
驱动程序设计
为了实现 ARM FPGA 通过双 口 RAM 的 数 据 传
需要设计嵌入式 Linux 下的驱动程序 FPGA
数据写到双口 RAM 根据双口 RAM 中数据的状态中
ARM 处理器进 行 数 据 读 取 这一过程主要需要中断
和总线驱动程序配合
在中断驱 动 程 序 中 通 过 request _ irq () 函 数 为 双 口
RAM 的中断分配中断请求 IRQ 当处理器检测到这
IRQ 号对应的中断产生时 将启动该 IRQ 对应的中断
服务例程 IRQ 号与中断处理例程是一一对应的 在系
porc interrupts 文件中可以为设备选择 IRQ FP
GA 转换的数据写入双口 RAM 当数据写满后
会中断 ARM 处理器 ARM 会响应中断处理例程 读取双
RAM 中的 数 据 中断处理例程首先要清除 PXA270
的中断寄存器相应的位 需要通过对状态寄存器相应位进
行写 操 作 这是为了能够继续响应双口 RAM 产 生 的 中
然后是设置数据传输标志位 当主程序中检测到标志
进而调用总线驱动程序进行数据传输 这种工作方式
可以避免中断处理例程的冗长 提高系统传输效率
由于应用程序工作在用户空间 它无法完成对总线的
操作 而驱动程序工作在内核空间 可完成对总线的操作
因此 在总线驱动程序中 必须支持应用程序对总线的操
以完成数据的传输 传统的 Linux 应用程序需要通过
总线驱动程序完成对总线空间的访问方法是通过 个函
数完成用户空间与内核空间之间的数据传递 其中内核空
间向用户空间传输数据使用 copy _ from _ user 函数 用户空
间向内核空间传输数据使用 copy _ to _ user 函 数 copy _
from _ user copy _ to _ user 这种方法虽然能完成 个空
间的数据传输 但是效率不高 最好的方法是将内核空间
能访问的物理地址直接映射到用户空间 Linux 内核提供
remap _ page _ range 函数 应用程序对该用户空间的地
址访问相当于直接对物理地址的访 问 本 文 的 总 线 驱
动程序就是直接映射的方法 来完成快速的读写
下面是驱动程序代码段 它使用 remap _ page _ range ()
函数在驱动程序中完成 mmap 系统调用中物理空间到虚
拟空间的映射 remap _ page _ range () 函数原型如下
intremap _ page _ range vma _ area _ struct vma un
signedlongfrom unsignedlongto unsignedlongsize pg
prot _ tprot );
remap _ page _ range () 函数的调用需要初始化
虚拟内存空间指针 vma 起始地址 物理地址 映射区
域字节 数 等 参 数 首 先 计 算 物 理 地 址 然 后 通 过 右 移
PAGE _ SHIFT 本系统使用 PXA270 Bank3 的物理
空间 起始地址 0x0c000000 大 小 为 4KB 映 射 到 虚 拟 空
驱动程序中 还需要判断虚拟内存大小和偏移了指定
距离后物理内存的大小 如果虚拟内存过大 应该返回并
提示映射超出允许的内存空间
调用 remap _ page _ range () 函数过程如下 remap _ page _
range vma vma- vm _ start 0x0c000000 + vma- vm _
pgoff << PAGE _ SHIFT vma- vm _ end- vma- vm _
start pgprot _ noncached vma- vm _ page _ prot ));
应用程序中调用 mmap 系统就是对 mmap () 函 数 的
参数初始化 mmap () 函数原型如下
void mmap void start size _ tlength intprot int
flags intfd off _ toffset );
首先将文件描 述 符 fd 指 定 的 设 备 文 件 与 start 处 开
始的内存空间关联 通常将 start 设为 mmap () 函数返回
实际关联 的 内 存 地 址 length 为内存映射的字节长度
prot 为内 存 保 护 类 型 flag 为 映 射 类 型 MAP _ SHARED
标识符表示与其他所有映射这个对象的进程共享内存区
本设计调用 mmap () 函数过程如下
base= unsignedlong mmap 0X100 PROT _
READ PROT _ WRITE MAP _ SHARED fd );
系统实验结果分析
本系统中 FPGA 外部晶振频率采用 32.768MHz
过内 部 16 分 频 器 后 得 到 2.048 MHz 时 钟 频 率 作 为
ADS1278 的工作时 钟 ADS1278 完 成 通 道 24 位 精 度
的采样 传 输 大 约 需 24 μ 采 样 数 据 被 FPGA 写 入 双 口
RAM 基本在采样结束后同步完成 当双口 RAM 数据被
写满后 中断 ARM 处理器进行数据读取 ARM 的工作频
率为 520 MHz 外部总线时钟频率为 104 MHz 配 置
PXA270 外部 Bank3 MSC 寄存器为 0x7ff4 满足系统对
双口 RAM 时序读写的需要
为了提高采集精度 首 先 需 要 对 转 换 器 进 行 零
偏校准 零偏校准后 通过动态范围计算公式 20×lg 信号
电压 噪声电压 得到各通道实际动态范围如表 所 示
其中零偏电压以转换后的数字形式给出 从表 中动态
范围一列中可以看出 系统各通道实现的动态范围都接近
转换器 24 位采样精度时的理想动态范围 111dB
测量结果表明本文设计的系统可充分发挥 转换器高
精度 大动态范围的特性
信迈提供ARM+FPGA+AD的设计与批量生产解决方案。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/122986.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分类预测 | Matlab实现KOA-CNN-BiGRU-selfAttention多特征分类预测(自注意力机制)

分类预测 | Matlab实现KOA-CNN-BiGRU-selfAttention多特征分类预测(自注意力机制) 目录 分类预测 | Matlab实现KOA-CNN-BiGRU-selfAttention多特征分类预测(自注意力机制)分类效果基本描述程序设计参考资料 分类效果 基本描述 1.M…

【数据结构】数组和字符串(五):特殊矩阵的压缩存储:稀疏矩阵——压缩稀疏行(CSR)

文章目录 4.2.1 矩阵的数组表示4.2.2 特殊矩阵的压缩存储a. 对角矩阵的压缩存储b~c. 三角、对称矩阵的压缩存储d. 稀疏矩阵的压缩存储——三元组表e. 压缩稀疏行(Compressed Sparse Row,CSR)矩阵结构体创建CSR矩阵元素设置初始化打印矩阵销毁…

Linux多核CPU启动内核调试(详细)总结

目录 一、综述二、调试流程简介2.1 大体流程2.2 spin-table简介 三、uboot和内核配置3.1 uboot配置3.2 timer配置3.3 GIC中断配置3.4 驱动确认3.5 SMP配置3.6 内核config配置 四、其他相关链接1、[交叉编译linux内核总结](https://blog.csdn.net/Luckiers/article/details/1245…

python:使用Scikit-image对遥感影像进行傅里叶变换特征提取(fourier)

作者:CSDN @ _养乐多_ 在本博客中,我们将介绍如何使用Scikit-Image来进行傅里叶变换特征提取(fourier),并且提供一个示例代码,演示了如何在单波段遥感图像上应用这些方法。 傅里叶变换特征提取是一种数学工具,用于将图像中的细节、纹理和边缘信息以不同频率的方式呈现…

电脑监控软件哪些比较好用

电脑监控软件在当今信息化时代越来越受到人们的关注,它们可以用于保护公司的商业机密,防止员工在工作中做一些不恰当的事情,以及在家庭中监控孩子的上网行为等。 本文将介绍一些比较好用的电脑监控软件: 一、域之盾软件 这款软件…

npm更新包时This operation requires a one-time password.

[访问我的npm包](mhfwork/yt-ui - npm) 更新npm包时出现 This operation requires a one-time password.是因为需要认证 解决办法 1. 点击红线处的链接 2. 进入npm官网获取指定秘钥 3. 再次填入 one-time password 即可

Linux进程地址空间

文章目录 背景进程地址空间分页和虚拟地址空间 写时拷贝 背景 研究背景:我们在之前通过fork函数创建子进程的时候,我们发现fork的返回值有两个,且值不相同但地址确实相同的,我们知道在物理空间上这种情况是不可能存在的&#xff…

SQL中:语法总结(group by,having ,distinct,top,order by,like等等)

语法总结:group by,distinct ...... 1.分组group by、条件havinggroup byhaving 2.聚集函数count 3.order by4.对表中数据的操作:增insert、删delete、改update增insert删delete改update 5.对表中数据的操作:查select嵌套查询不相…

如何防范AI等技术带来的诈骗风险?从技术、法律、教育等多方面入手

文章目录 前言什么是AI诈骗案例案例一案例二 AI诈骗的特点如何预防和应对AI诈骗建议后记 前言 互联网是一把双刃剑,这是我们常说的一个问题。 随着人工智能技术的快速发展,AI诈骗成为当今社会面临的新兴威胁。不法分子利用人工智能技术,以更…

8.自定义组件布局和详解Context上下文

pages/index.vue layout布局运行在服务端 1、在项目的目录下新建layout文件夹,并新建一个blog.vue布局文件 2、在页面中的layout函数里,返回刚才新建布局文件的名字blog就可以使用了 export default {...layout (context) {console.log(context)retu…

在3分钟内使用AI-Chat生成精美PPT(附AI工具)

前言 在人工智能的大趋势下,AI-Chat是一款令人惊叹的技术。它用强大的自然语言处理技术帮助我们快速生成PPT,提高工作效率。本文将介绍使用ChatAI-Chat生成PPT的方法,以及使用Mindshow转换为炫酷的演示文稿。让技术为我们节省时间&#xff0c…

Ubuntu中使用yum命令出现错误提示:Command ‘yum‘ not found, did you mean:

Ubuntu中使用yum命令出现错误提示:Command ‘yum’ not found, did you mean: command ‘gum’ from snap gum (0.12.0) command ‘num’ from deb quickcal (2.4-1) command ‘yum4’ from deb nextgen-yum4 (4.5.2-6) command ‘uum’ from deb freewnn-jserver (1.1.1~a021…

Stable Diffusion系列(一):古早显卡上最新版 WebUI 安装及简单操作

文章目录 Stable Diffusion安装AnimateDiff插件适配sdxl模型适配 Stable Diffusion使用插件安装界面设置基础文生图加入lora的文生图 Stable Diffusion安装 我的情况比较特殊,显卡版本太老,最高也就支持cuda10.2,因此只能安装pytorch1.12.1&…

计算机网络【CN】介质访问控制

信道划分介质访问控制 FDMTDMWDMCDM【掌握eg即可】 随机介质访问控制 CSMA 1-坚持CSMA 非坚持CSMA p-坚持CSMA 空闲时 立即发送数据 立即发送数据 以概率P发送数据,以概率1-p推迟到下一个时隙 忙碌时 继续坚持侦听 放弃侦听,等待一个随机的时…

车载音频项目

加我微信hezkz17进数字音频系统研究开发交流答疑群(课题组) ー 1.负责此项目的音频链路的设计及其实现 在ADSP21375上实现音频链路的处理。如噪声门,压限器,高低通,PEQ、各种效果等。 2.负责DSP与MCU端SPI协议实现。M…

Builder 请进:波卡最新开发入门指南

撰文:Dennis Zoma 编译:OneBlock 社区 本文更新于 2023 年 10 月 3 日,来源:https://wiki.polkadot.network/docs/build-guide Polkadot 是一个区块链协议,有两个目标:在所有连接的平行链之间提供共享安全…

【操作系统】进程的控制和通信

文章目录 一. 实验目的二. 实验内容三. 实验步骤四. 实验结果 一. 实验目的 (1)加深对进程概念的理解,进一步认识并发执行的实质。 (2)掌握Linux 操作系统中进程的创建和终止操作。 (3)理解进程…

计算机网络-应用层(2)

一、DHCP 当需要跨越多个网段提供DHCP 服务时必须使用DHCP 中继代理, 就是在DHCP 客户和服务器之间转发DHCP 消息的主机或路由器。 DHCP 服务端使用UDP 的67号端口来监听和接收客户请求消息, 保留UDP 的68号端口用于接收来自DHCP 服务器的消息回复。 在…

基于 Python 的豆瓣电影分析、可视化系统,附源码

文章目录 1 简介2 技术栈具体实现1.设计豆瓣电影自动化爬虫程序,自动获取电影数据2.对爬取到的数据进行清洗和预处理,包括多维度数据字段清洗和扩充3.将清洗好的数据存储到MySQL数据库中 4 具体效果图5 推荐阅读 1 简介 基于Python flask 的豆瓣电影分析…

win11 右键菜单默认 显示更多选项

win10升级至win11后,一个很大的变化就是右键菜单,其不再显示所有的菜单项,而是默认只显示主要的几项,点击“显示更多选项”后,才会显示所有菜单项。 这对于经常需要用到右键其他菜单项的人来说明,非常的不…