基于FPGA的多通道数据采集系统设计

时间: 2009-10-23 09:27:29 来源:微计算机信息 作者:刘小林 范育兵 罗春晖
大地电磁场携带着地球内部的结构、构造、温度、压力以及物质成分的物理状态等信息,为人们研究板块运动的规律、追溯地球的演化历史提供了科学依据。大地电磁探测是研究大陆岩石圈导电性结构的有效方法之一,使人们从电性角度认识地球内部的构造形态,达到了解地下不同深度地质情况的目的。该技术应用前景广泛,可用于地下更深层找矿、找水、找油、监测海底潜艇等,对国民经济和国防的发展都有重要的推动作用。
  最常用的数据采集方案多以MCU为核心,控制多路信号的采集及处理。但由于单片机本身的指令周期以及处理速度的影响,对于多通道A/D进行控制及数据处理,普通的MCU往往不容易达到要求。考虑到FPGA器件的高集成度、内部资源丰富、特别适合处理多路并行数据等明显优于普通微处理器的特点,并针对大地电磁数据采集系统对实时性和同步性的要求,本文提出了一种多通道数据采集方案。采用FPGA与ARM相结合的设计,采集主控制逻辑用FPGA实现,ARM用来实现采集数据的存储和数据传输控制。
1 系统总体结构
  系统总体结构如图1所示。A/D转换器采用TI公司的24位高精度模数转换器ADS1255;FPGA采用Altera公司的EP2C35;ARM为ARM9内核的处理器S3C2410。双口RAM由EP2C35内部存储器块配置而成,该双口RAM与ARM的系统总线相连,映射为ARM的一块内存区。

 

  AD前端处理电路的作用是实现对信号的放大、衰减以及阻抗匹配,从而满足ADC对输入信号的要求。滤波网络滤除高频噪声和工频信号的干扰,增益放大通过ARM给出的控制信号实现对模拟信号的不同增益的放大处理。ADS1255负责把模拟电信号转换成数字信号,可以通过功能选择设置ADS1255工作在不同的工作模式下。ADS1255的工作时钟由FPGA提供,改变FPGA输出时钟的频率就能实现AD采样率的改变。FPGA并行控制5路AD的数据采集,并把采集到的各路数据按顺序以字节的形式写入双口RAM中缓存。FPGA对双口RAM的数据写入和ARM对数据的读取是通过乒乓传输结构实现的。当FPGA写满双口RAM上半区后,向ARM申请中断,ARM响应中断后,读出上半区数据到内存中进行存储;同时FPGA向RAM的下半区写数据,写满下半区后也向ARM发出中断,通知ARM读出下半区数据。通过乒乓传输保证了系统数据采样和数据传输可以连续进行。
2 FPGA的逻辑设计
  本方案中的数据采集流程如下:系统初始化后,ARM通过控制信号把采样频率、通道选择等参数通知给FPGA,然后FPGA向需要同步采样的通道对应的AD芯片提供统一时钟,使得AD同步地选择相应的通道进行数据的同步采样和转换,其结果由FPGA接收并存储在双口RAM对应的存储空间,然后由ARM从相应的双口RAM空间读取数据进行本地存储或经过网络传输给上位机进行处理。根据以上流程以及FPGA要实现的功能,整个FPGA逻辑设计划分为通道和采样率选择模块、时钟模块、双口RAM模块、AD采样控制模块、串并转换模块、数据存储控制模块、ARM接口控制模块。
  各模块连接关系如图2所示。

2.1 通道和采样率选择模块
  在实际应用中并不是每个通道都被使用,AD的采样率也不只一种,所以在通道的控制和采样率设置上应该具有可选择性。
  通道和采样率选择模块提供2个8 bit的控制寄存器A和B。如图3所示,寄存器A的0~4 bit分别对应ADC通道CH0~CH4,5~7 bit保留;寄存器B的8 bit分别对应采样率FS0~FS7。如果要选择某几个通道,只需将寄存器A中相应的位置1,其他位置0,AD采样控制模块就会根据该寄存器中的内容使能相应的通道。如果要选择某一个采样频率,只需把寄存器B中相应的位置1,其他位置0,时钟模块会产生相应的时钟控制AD的采样率。在开启数据采集之前,ARM应根据所要求的通道和采样频率向寄存器A和B写入相应命字。


2.2 时钟模块
  本设计中外部输入时钟为16.384 MHz。由于设计中各个模块工作时钟的不同以及AD采样率的变化,所以需要多种不同的时钟信号。时钟模块的功能就是根据不同采样率为各个模块提供所需的时钟信号。由于该设计采用同步时序电路,它是基于时钟触发沿设计,对时钟的周期、占空比、延时、抖动提出了较高的要求,为此本设计中采用FPGA所带的PLL时钟资源驱动设计的主时钟,使其达到最低的时钟抖动和延迟。
2.3 双口RAM模块
  本设计中双口RAM用于数据缓存,一方面存储各个AD芯片转换的数据,另一方面供ARM读取数据做进一步的存储与处理。它具有真正的双端口,可以同时对其进行数据存取,两个端口具有独立的控制线、地址线和数据线。该双口RAM模块是通过调用Altera FPGA自带的参数化模型库(Mega-lpm)实现的。
2.4 A/D采样控制模块
  A/D采样控制模块的主要任务就是根据ADS1255的转换时序图,在其芯片的引脚发出相应的时序控制信号,使ADS1255完成启动、配置和数据读取等操作。ADS1255的控制操作如下:首先设置ADS1255的参数配置,读数据模,然后启动转换,通过查询ADS1255的DRDY信号判断是否转换完成,转换结束后将数据按bit顺序读出。同时将数据输出给串并转换模块,完成一次A/D转换操作。采样控制模块每完成一次采样操作,则停止等待下一个触发脉冲的到来。

 

这一控制过程通过状态机实现。图4给出了该A/D转换控制模块的状态转换图。当数据采集启动信号START为高电平时,状态机启动。

  状态机的各个状态描述如下:
  (1)conv_init:状态机的初始状态。
  (2)mode_set:设置ADS1255内部的控制寄存器。
  (3)conv_start:启动A/D转换。
  (4)conv_wait:等待A/D转换结束。如果转换结束则进入下一状态,否则将继续保持在该状态。
  (5)conv_read:A/D转换结束后读出每个bit信息,同时使能移位寄存器进行串并转换。
  (6)read_next:判断数据是否读完。如果没有返回conv_read状态,否则进入下一状态。
  (7)conv_next:判断是否需要继续转换数据。如果没有就进入下一状态,否则返回conv_start状态。
  (8)cony_end:表示本次采样任务结束。状态机保持在该状态,直到采样启动脉冲触发重新开始新的一次采样任务,状态机复位到conv_init状态。
2.5 串并转换模块
  由于ADS1255是以串行输出转换结果的,故需要该模块将串行输出的数据转换为井行输出。该模块主要采用移位寄存器来实现,其移位控制信号由AD采样控制模块提供。
2.6 数据存储控制模块
  该模块的作用是将5通道24 bit经过串并转换的采样数据按通道顺序,以从低字节到高字节的次序,一个一个字节将其写入双口RAM中,实际上相当于一个字节意义上的并串转换。该模块输入为5路采样数据reg24Data_0~4,dataF为输出的字节数据,wrenF为双口RAM的写控制信号。图5是一个五通道数据存储的仿真示意图。输入数据值分别为0x030201、0x060504、0x090807、0x121110、0x151413,输出字节数据为01~15,同时使能写RAM,满足设计要求。

 


2.7 ARM接口控制模块
  该模块为ARM与FPGA及其双口RAM交互提供桥梁。当ARM向控制寄存器写入采集参数信息时,接口模块要将该信息通知通道和采样率选择模块;当ARM读取双口RAM中的数据时,接口模块对ARM的访问地址进行译码,选中对应的存储空间取出数据。
  本文采用FPGA和ARM结合设计,很好地完成了多通道高精度的数据采集与处理,并且还详细介绍了FPGA逻辑的设计方法。FPGA逻辑通过硬件描述语言Verilog实现,已应用到磁数据采集系统中。本方案设计灵活,能很容易地扩展为更多路的数据采集,也能很容易地修改为与其他的A/D转换芯片接口。所以该方案可根据不同的应用进行扩展,进一步增强了系统应用的灵活性。

 

  • 4
    点赞
  • 89
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
项目背景1.1 AD转换 AD转换就是模数转换。顾名思义,就是把模拟信号转换成数字信号。主要包括积分型、逐次逼近型、并行比较型/串并行型、Σ-Δ调制型、电容阵列逐次比较型及压频变换型。 A/D转换器是用来通过一定的电路将模拟量转变为数字量。模拟量可以是电压、电流等电信号,也可以是压力、温度、湿度、位移、声音等非电信号。但在A/D转换前,输入到A/D转换器的输入信号必须经各种传感器把各种物理量转换成电压信号。 AD转换的技术指标,一般有如下几个: 1. 分辨率(Resolution) 指数字量变化一个最小量时模拟信号的变化量,定义为满刻度与2^n的比值。分辨率又称精度,通常以数字信号的位数来表示。 2. 转换速率(Conversion Rate)是指完成一次从模拟转换到数字的AD转换所需的时间的倒数。积分型AD的转换时间是毫秒级属低速AD,逐次比较型AD是微秒级属中速AD,全并行/串并行AD可达到纳秒级。采样时间则是另外一个概念,是指两次转换的间隔。为了保证转换的正确完成,采样速率 (Sample Rate)必须小于或等于转换速率。因此有人习惯上将转换速率在数值上等同于采样速率也是可以接受的。常用单位是ksps和Msps,表 示每秒采样千/百万次(kilo / Million Samples per Second)。 3. 量化误差 (Quantizing Error) 由于AD的有限分辨率而引起的误差,即有限分辨率AD的阶梯状转移特性曲线与无限分辨率AD(理想AD)的转移特 性曲线(直线)之间的最大偏差。通常是1个或半个最小数字量的模拟变化量,表示为1LSB、1/2LSB。 4. 偏移误差(Offset Error) 输入信号为零时输出信号不为零的值,可外接电位器调至最小。 5. 满刻度误差(Full Scale Error) 满度输出时对应的输入信号与理想输入信号值之差。 6. 线性度(Linearity) 实际转换器的转移函数与理想直线的最大偏移,不包括以上三种误差。 其他指标还有:绝对精度(Absolute Accuracy) ,相对精度(Relative Accuracy),微分非线性,单调性和无错码,总谐波失真(Total Harmonic Distotortion缩写THD)和积分非线性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值