基于 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的设计与批量生产解决方案。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于ARM FPGA的高速AD采集传输实验是指利用AD9226芯片进行模拟信号的采集和转换,并通过ARM FPGA进行数据处理和传输的实验。 AD9226是一款高速、高分辨率的模拟信号转换器芯片,能够将模拟信号转换为数字信号。该芯片具有12位的分辨率和65 MSPS的采样率,适用于高速信号采集应用。 在实验中,首先将待采集的模拟信号输入到AD9226芯片中,然后通过芯片内部的采样电路,将模拟信号按照一定的采样率转换为数字信号。转换后的数字信号被送入FPGA中进行处理和传输。 ARM FPGA是一种结合了ARM处理器和FPGA可编程逻辑器件的集成电路。通过使用这种结构,可以实现对采集到的数据进行实时处理和传输。在实验中,ARM处理器负责控制AD9226芯片和FPGA的数据传输,同时执行特定的算法来处理所采集到的数据。 而FPGA作为可编程逻辑器件,则通过编程来实现对采集到的数据进行处理。可以通过FPGA内部的逻辑设计和算法实现数据的滤波、降噪、压缩等处理过程。处理完毕的数据可以通过FPGA输出接口传输给其他外部设备,如计算机或显示器。 综上所述,基于ARM FPGA的高速AD采集传输实验是通过AD9226芯片采集模拟信号,并利用ARM处理器和FPGA进行数据处理和传输的实验。这种实验可应用于许多领域,如通信、图像处理、物联网等,具有较高的实时性和可靠性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值