目录1高速数据采集系统简介 22几种常用的数据采集系统方案简介与分析比较 32.1基于ARM的高速数据采集系统 32.2基于MCU+FPGA组合的高速数据采集系统 62.3基于USB2.0芯片CY7C68013以及模数转换芯片MAX1195的高速数据采集系统 102.4几种高速数据采集系统的比较 123自行设计的基于单片机的高速数据采集系统 133.1设计原理 133.2 AD转换模块设计 143.3 DA输出模块设计 163.4 LCD显示模块设计 183.5 总的电路图 184程序设计 195心得体会 256参考文献 261高速数据采集系统简介通用的数据采集系统有硬件和软件两部分组成。
硬件部分主要完成数据采集,存储等功能,软件部分则完成对硬件控制、对采集数据进行处理等功能。
与传统的中、低速数据采集系统相比,高速高精度数据采集系统有其特殊性。
首先,对于采样率高到一定程度的系统,很难用软件和常规的微机接口对其采样、转换过程进行控制。
在这种情况下,通常用硬件实现转换过程的控制和采样数据的同步;其次,如果系统的实时性要求高,必须采用高速缓存对数据进行存储和高速DS芯片完成数字信号的实时处理。
高速高精度数据采集系统的主要任务是将外界模拟信号进行采集转换,然后送往计算机根据相关要求进行数据处理,其结构主要由信号调理、采样保持、模数转换和微机系统等部分组成,系统的结构框图如图1.1所示。
图1.1 高速高精度数据采集系统框图其中数据采集系统前置电路一般包括传感器、放大器和滤波器等,传感器把外界信号转变成模拟电量(如热电偶传感器、流量传感器、速度传感器等等),其转换后的信号一般比较微弱,需要进行放大处理,在传感器转换信号和放大器工作时,常常产生噪声信号影响采集的准确性,这就需要滤波器降低各种噪声信号提高系统的信噪比。
数据采集系统中常常需要对多组模拟量进行采集,在模拟量信号变化周期不快的情况下就可以选用模拟多路开关,这样模数转换电路就可以只选取一套从而降低系统的开发成本。
其中模数转换器是数据采集系统中的核心部分,其性能决定了数据采集系统所能实现的功能。
2几种常用的数据采集系统方案简介与分析比较2.1基于ARM的高速数据采集系统该系统的控制核心Samsun公司推出的16/32位RISC处理器S3C44B0X。
它为手持设备和一般类型应用提供了高性价比和高性能的微控制器解决方案。
为了降低成本,S3C44B0X提供了丰富的内置部件:8KB Cache,可选的内部SRAM,LCD控制器,带自动握手的2通道UART,4通道DMA,系统管理器(片选FP/EDO/SDRAM控制器),带PWM功能的5通道定时器,I/O端口,RTC,8通道10为ADC,IIC总线接口,IIS总线接口,同步SIO接口和PLL倍频器。
S3C44B0X采ARM7TDMI内核,0.25um工艺的CMOS标准宏单元和存储编译器。
它低功耗,精简,出色和全静态的设计特别适用于成本和功耗敏感的应用。
同样S3C44B0X还采用了一种新的总线结构,即SAMBAII(SAMSUNG ARM CPU 嵌入式微处理器总线结构)。
S3C44B0X的显著特性时它的CPU核,是由ARM公司设计的16或32位的ARM7TDMI最高为66MHz的RISC处理器。
微处理器S3C44B0X提供全面的,通用的片上外设,大大减少了系统电路中除处理器以外的元器件配置,从而最小化系统的成本。
系统以S3C44B0X为数据采集模块核心处理器,采用模块化方法设计,按照功能的不同,分为电源电路、通道选择电路、模数转换电路、通信电路、多路开关及信号调理电路、计算机人机交互界面部分,数据采集系统整体结构图2.1所示。
2.1 高速高精度数据采集系统的电路框图数据采集系统工作流程:传感器输入的模拟信号经过信号调理电路的处理(包括隔离、变换、放大、滤波等各种处理)以满足数模转换芯片对输入电平和信号质量的要求,然后通过多路开关进行信号选择,选通的信号由高性能高速电压反馈放大器AD8021的进一步的处理获得更精确,精度更高的模拟信号,在微处理器的控制下模拟信号通过16位逐次渐近型模数转换器AD7663的转换处理存入数据缓存,进一步通过S3C44B0X处理器的控制的显示、键盘模块实现人机交换功能。
同时多路开关的选择与控制有微处理器控制。
软件部分的设计分为两个部分,分别为数据采集系统控制软件和数据程序处理两个部分。
软件设计共包括五部分:通道选择,数据采集处理,数据存储,数据显示和键盘控制。
系统各模块功能概述:(1) 多路开关及信号调理模块模拟多路开关是数据采集系统的一个重要部分,通常在多路被测信号共用一路A/D转换器的采集系统中用来把多路信号有条理的传送到A/D转换器中去,以完成多路信号的数据采集。
这里介绍的是采用8通道模拟多路复用器MAX308EPE实现8路模拟信号的采集。
信号调理电路主要基于AD623与MAX291芯片的自行设计电路。
信号调理电路主要用来对传感器输入的信号进行隔离、变换、放大、滤波等等各种处理,以满足模数转换芯片对输入电平和信号质量的要求,同时大大的简化了信号调理电路的设计,简化了外围电路。
多开关由微处理器S3C44B0X进行控制选择。
(2) 模数转换模块本模块由两部分组成:信号驱动放大器AD8021与具有低噪声、高精度和出色的长期稳定特性的基准电压源ADR421提供基准电压的模数转换芯片AD7663。
传感器输入的信号通过多路开关及信号调理模块处理后得到比较符合要求的模拟信号,进一步通过信号驱动放大电路AD8021的处理得到精度较高的、稳定的模拟信号,通过分辨率高,采样速率高,功耗小的模数转换芯片AD7663的作用,输出符合要求的数字信号,完成模数转换。
(3) 存储模块传统的数据采集系统由于数据传输率较低,数据量小,一般可以完成实时分析和处理,所以存储问题不突出。
但高数高精度数据采集系统的数据传输率很高并且数据量很大,采集速度达到一定的限度就无法进行实时分析和处理,所以合适的存储器显得很有必要。
本设计采用的是SST39VF160芯片。
它具有成本低和密度大的优点,能很好的完成本系统的存储要求,把通过内部AD7663模块转换成数字量,经通信端口送入计算机进行下一步处理。
(4) 键盘模块键盘扫描过程就是有规律的时间间隔查看键盘矩阵,以确定是否有键被按下。
一旦处理器判定有一个键被按下,键盘扫描程序就会滤掉抖动,然后再判定是哪个键被按下。
每个键被分配一个称为扫描码的唯一标示符,应用程序利用该扫描码来判断应按下了什么键。
本设计就是采用的是4×4矩阵键盘,完成人机交换的键盘控制。
(5) 显示模块S3C44B0X内部有一个LCD控制器,只需要在外部接一个液晶驱动模块就可以具有显示功能了。
本设计设置了LCD液晶显示驱动模块与S3C44B0X的连接模式,包括接口方式,寄存器的编程。
本模块达到了微处理器与显示器的数据传输,实现了显示的功能。
2.2基于MCU+FPGA组合的高速数据采集系统高速数据采集系统的硬件核心为FPGA控制器,其主要功能为响应计算机通过PCI总线或者USB总线发出的控制命令,接收ADC的实时数据存储在DDRII芯片阵列中,在存储完成后自动将数据通过PCI总线或者USB总线传输到计算机存储到硬盘中。
这些功能的实现都是使用Verilog HDL语言编程实现的。
Verilog HDL语言是一种用形式化方法来描述数字电路和系统的硬件语言。
利用其进行电路设计,大大提高了逻辑电路的设计效率,缩短了逻辑电路的设计周期。
采用FPGA+MCU的结构,主控逻辑模块用FPGA来实现,在系统中对A/D器件进行采样控制,起到连接采样电路和MCU的桥梁作用,数据处理、远程通信及液晶显示控制等由MCU来完成。
FPGA把传统的纯粹以单片机软件操作形式的数据采集变成硬件采集。
首先用VHDL语言来设计状态机,用MCU来启动状态机,使其控制A/D器件,实现数据采集。
并将采集到的数据存储到FPGA内部的数据缓存区FIFO 中。
当FIFO存储已满时,状态机控制FIFO停止数据写入,并通知单片机取走采集数据进行下一步处理。
这种设计思想大大减轻了单片机的软件运行时间,提高了采集速率。
这里,把6路模拟信号采集任务作为快任务,把用于系统自检的6路检测量信号作为慢任务。
为了使快任务的优先级高于慢任务,本系统设计两个状态机分别实现快任务和慢任务的数据采集,并由单片机生成PWM波,分别控制两个状态机。
系统的总体框图如下图所示:FPGA高速数据系统总框图1)系统主要器件选择①FPGA芯片选取及依据:FPGA实现主控逻辑控制,要求响应速度快,效率高。
可采用ALTERA公司的ACEX1K 系列EP1K5O芯片,最高工作频率可达250 MHz。
该系列芯片的特点是将LUT(查找表)EAB(嵌入式阵列)相结合,提供了效率最高而又廉价的结构。
基于LUT的逻辑对数据路径管理、寄存器强度、数学计算或数字信号处理的设计提供优化的性能和效率,而EBA可实现RAM (随机读写存储器)、ROM(只读存储器)、双口RAM 或FIFO (先入先出存储器)功能,使得ACEX1K适合复杂逻辑以及有存储、缓冲功能的数据采集系统。
②ADC芯片选型及依据数据采集系统的输入信号多数都来源于现场传感器的输出信号,传感器种类不一,致使信号特性也不同,各通道信号的幅度与频率范围有很大的不同,高精度的、大动态范围的A/D转换芯片使设计更能满足测量的需要。
2)FPGA 方案设计①设计思想用VHDL语言来设计两个状态机,状态机1来控制A/D实现快任务的采集,状态机2来完成慢任务采集。
两个状态机的时钟信号CLK(高电平有效)均来自单片机生成的PWM波,状态机1直接由单片机控制,状态机2则是由单片机经反向器来控制。
首先置P1.0口为高电平,并用定时器来产生中断,使P1.0口产生PWM波。
当P1.0口为高电平时启动状态机1,此时状态机2不动作;当快任务采样完成后,由定时器产生中断,将P1.0口置为低电平,此时状态机2动作,来完成慢任务采集。
下一个周期完成同样的操作。
对应快任务的采集数据缓存在快任务FIFO,慢任务的采集数据缓存在慢任务FIFO里,单片机读对应的FIFO数据来进行相应处理。
②各模块的设计根据以上的设计思想,FPGA系统的硬件设计模块主要有状态机模块,FIFO设计模块[4-5]。
下面具体给出硬件原理设计。
A)状态机的设计该设计过程主要是建立采集所需要的硬件电路,等待时钟信号的到来便立刻启动A/D进行工作。
了解了AD574A的工作时序,就可以写出状态机的采样控制状态。
控制状态编码下表所示:表 1 控制状态编码表用VHDL语言来实现状态机,其原程序:SIGNAL current_state,next_state:STD_LOGIL_VECTOR(4 DOWNTO 0);CONSTANT st0:STD_LOGIL_VECTOR(4 DOWNTO 0):=”01000”;CONSTANT st1:STD_LOGIL_VECTOR(4 DOWNTO 0):=”10000”;CONSTANT st2:STD_LOGIL_VECTOR(4 DOWNTO 0):=”01001”;CONSTANT st3:STD_LOGIL_VECTOR(4 DOWNTO 0):=”01100”;CONSTANT st4:STD_LOGIL_VECTOR(4 DOWNTO 0):=”01110”;SIGNAL LOCK :STD_LOGIL;COM:PROCESS(current_state,STS)BEGINCASE current_state ISWHEN st0=> next_state<= st1;WHEN st1=> next_state<= st2;WHEN st2=> IF(STS=‘0’) THEN next_state<=st3; ELSE next_state<=st2;END IF;WHEN st3=> next_state<= st4;WHEN st4=> next_state<= st0;WHEN OTHERS=>next_state<=st0;END CASE;END PROCESS COM;REG:PROCESS(CLK)BEGINIF(CLK=‘1’)THEN current_state<=next_state; END IF;END PROCESS REG;B)FIFO 模块设计利用FPGA中的EAB/ESB等嵌入式模块构成的LPM宏功能模块来生成LPM_FIFO。