1 引言
随着低成本高性能的计算机资源普及运用、大规模集成电路技术和通讯技术的飞速发展,数字化测量平台逐渐成为测量仪器的基础。所有测量测试仪器的主要功能由数据采集采集与控制、数据分析与处理、结果的表达与输出三大部分组成。高质量的A/D采集卡及调理放大器是影响其发展的一个重要因素。本文实现了基于USB接口的实用型数据采集卡的设计。
2 数据采集卡的结构设计
本文采用集散型的系统结构,定位为高速、双通道的数据采集系统。整个系统采用模块化技术,各个模块通过总线连接。设计时将整个系统划分为四个相互关联的有机部分,即信号调理模块、数据采集模块、CPLD控制模块和软件操作平台。模块间连接关系如图1所示。
图1 模块间的连接
高速数据采集卡的设计的关键是高速ADC的选择和经采样得到的高速数据如何被送到计算机里进行处理,在本章中将详细介绍关于高速数据采集卡的各模块的设计。高速数据采集卡硬件部分的设计从功能上主要包括信号调理模块、高速模数转换模块、CPLD控制模块以及与计算机接口部分电路组成。
2.1 信号调理模块的设计
在高速数据采集系统中,现场输入信号是高频的模拟信号,信号变化的范围都比较大,如果采用单一的增益放大,那么放大以后的信号幅值有可能超过A/D转换的量程,所以必须根据信号的变化相应地调整放大器的增益。在自动化程度较高的系统中,希望能够在程序中用软件控制放大器的增益,AD8321正是这样一种具有增益可编程功能的芯片。AD8321是美国AD工公司生产的一种增益可编程线驱动器,可广泛应用于多种领域。它具有频带宽、噪声低、增益可编程且易于与单片机进行串行通信等优点,十分适合在数据采集系统做前置放大。本文的高速数据采集系统原理图如图2。
图2 高速数据采集系统原理图
在此系统中,高频模拟信号线输入到AD8321,经程控放大后再输送到具有采样保持功能的模数转换器中,因为采样频率为高频,所以在A/D后接在EZ-USB FX2芯片,然后再连到计算机上。
2.2 高速模数转换模块的设计
图3 AD9059管脚及基本连接
高速数据采集卡的核心是高速模数转换器,它直接影响了整个数据采集卡的性能指标,所以选择合适的高速模数转换器是至关重要的。
本文采用的高速模数转换器是AD公司生产的AD9059, AD9059是8位单片双通道模数转换器,主要有两个跟踪/保持电路(T/H)、2个模数转换器(ADCa, ADCb)和一个2.5V的基准电源等组成,具有高速、高性能、低功耗及易使用等特性,60MSPS的编码速率和120MHz的最大功率模拟带宽使其在多路数据采样系统中表现出优秀的动态性能。大部分情况下,AD9059仅需要一个单极性的5V电源和一个编码时钟即能正常工作。编码时钟提供与TTL/CMOS兼容的逻辑数据输出,并控制两个模数转换通道同时对数据进行采样。如长时间不需要采集数据,可启动体眠模式使总功耗小于12MW。AD9059的管脚和基本连接如图3所示。管脚AINA, AINB为双通道模拟输入;VREF为参考电压,一般可以采用内部2.5V的参考电压。理论上模拟电压的输入范围与参考电压有关,Vrange (p-p)=VREF/2.5, Vmidscale=VREF。PWRDN为掉电功能选择,当 PWRDN为逻辑高电平时,AD9059处于掉电模式,这时,所有的逻辑输出变为高阻态,VD为+5V模拟供电电压,VDD为逻辑输出供电电压,D0A-D7A和D0B-D7B为双通道数据输出,ENCODE为编码时钟,最大采样时钟为60MHZ, ADC在时钟的上升沿开始采样。经过A/D转换后的数据直接传送到FX2的数据线上。ADC的时钟及控制信号等由CPLD提供。
2.3 CPLD的选择与USB设计
在本设计中,所有的数字电路部分,全部是在CPLD内实现的。在本设计中采用了Lattice公司的ISP1032这块芯片,所用的EDA软件是Lattice公司的ispEXPERT system,编程语言为ABEL语言和电路原理图。
在用CPLD进行数字系统的设计一般采用由顶到下,由粗到细,逐步求精的原则,最顶层的设计是指系统的整体要求,最底层的设计是具体的逻辑电路的实现。经过在实践中检验,在高速数据采集卡中,用CPLD来实现数字逻辑电路功能,可以使高速数据采集卡工作稳定,各方面性能良好。
通用串行总线(Universal Serial Bus,简称USB)是1995年康柏、微软、IBM,DEC等公司为了解决传统总线的不足推广的一种新型串行通信标准。该总线接口具有安装方便、高带宽、易扩展等优点,已经逐渐成为现代数据传输的发展趋势。在本文中采用的是具备USB通信功能的单片机的芯片,Cypress公司的EZ-USB FX2。
3 系统软体设计
3.1 USB设备驱动程序
图4 USB驱动程序体系结构
Windows系统对构成一个USB总线主机的不同软件部分进行了明确的划分,如图4所示,其中USB客户软件仅仅包含了用来控制不同的USB外设的设备驱动程序。USB客户软件会通过一个Windows所定义的一个软件接口来同根集线器驱动程序进行通信。而USB根集线器驱动程序则要通过USBDI(通用串行总线驱动程序接口)来实现同USBD通用串行总线驱动程序)的通信。然后,USBD会选择两种主控制器驱动程序(UHCD和OpenHCI)之一来同其下方的主控制器进行通信。最后,在USB总线和主机控制器之间存在一个PCI总线枚举器,它负责在检测到系统中存在一个通用串行总线时,装载适当的USB总线系统软件,主控制器驱动程序会通过PC工枚举器软件直接实现对USB物理层总线的访问。HCD与USBD代表了基于对不同层次的抽象的软件接口,它们能以某种方式共同工作,以满足USB系统的整体要求。
3.2 固件程序开发
设备固件是设备运行的核心,它控制整个硬件系统的运行,并负责处理PC机发来的各种USB请求,以完成它们之间的数据传输。其主要功能包括控制放大模块、实现通道选择;控制A/D模块的数据采集;通过FX2实时上传采集数据给PC;控制FX2芯片接收并处理USB设备驱动程序的请求(如设置USB接口状态等多种USB协议标准请求)等。
Cypress公司提供的EZ-USB FX2软件包为用户开发基于EZ-USB FX2系列芯片的USB设备的编程提供了很大的方便。无论是开发基于外设的8051固件程序,还是开发基于USB主机的设备驱动程序或应用程序,该软件包都提供了较完备的程序框架和例程库。
EZ-USB FX2固件库为用户开发EZ-USB FX2固件提供了底层Keil C函数库。EZ-USB FX2软件开发包提供了该库的目标文件,同时还提供了该函数库的源代码,用户可以利用Keil来重新编写该函数库。
EZ-USB FX2固件是使用EZ-USB FX2程序框架或直接使用EZ-USB FX2固件库开发的程序,这是开发USB外设的重要部分。
FX2在其固件程序中把自己定义为USB大存储类、块传输子类,操作系统(Win98以上)有相应的USB类设备驱动程序来支持这种USB类外设,而不需要另外在操作系统内安装其驱动程序。在FX2的固件程序中写入USB通信模块,就可以实现主机和USB设备的通信。
固件程序必须包括DSCR.A51(A51宏汇编器), USBJmpTb.OBJ(目标文件转换器)和Ezusb.lib ( Ezusb C编译器库文件和启动代码)。
固件程序有两个C文件,一个是FW.C,即框架程序,定义了基本的USB设备的功能,一般不许修改。另一个是FUNCTION.C(FUNCTION为自己命名),本设计要实现的具体功能在此文件中完成。
3.3 应用层程序
应用层程序用Visual C++6.0来开发,它可以直接调用底层的设备驱动程序。利用VC开发的应用软件具有高效、美观、操作方便等优点。
图5 软件流程图
如图5所示,本系统需要通过软件下载固件程序,对ADC、放大模块、采集模块进行控制,同时还要接收或者发送数据。在采集开始前,可以先将命令发送出去,实现在固件程序中定义的相应功能,如通过FX2口线控制前置放大模块等。然后可以读取传送到主机的数据,或者向设备发送数据等。
本文作者创新点: 本文设计的USB2.0为接口的数据采集卡,采样及数据传输速度都达到了24Mb/s,达到国内先进水平。同时该系统具有简单实用,硬件成本低,构造简单,复用性良好,功能强大的特点,也是该系统的优势之处。 |