基于USB总线的多通道数据采集系统设计*
2012-08-13冷佳鹏刘文怡
冷佳鹏 ,刘文怡
(1.中北大学 电子测试技术国家重点实验室,山西 太原 030051;2.仪器科学与动态测试教育部重点实验室,山西 太原 030051)
随着工业测试设备待测参数性能的不断增多、数据速率不断加快,传统的数据采集系统已不能满足目前数据采集的实时性和可靠性要求。例如,单片机的时钟频率较低,软件在单片机中的顺序执行占用了大量时间,且单片机的内部逻辑资源和I/O资源有限,基于单片机的数据采集系统已不能满足目前工业上高采样速率、多采样通道的要求。而USB2.0总线的理论传输速度可达480 Mb/s,USB接口可以连接多个不同设备,支持热插拔;在软件方面,为USB设计的驱动程序和应用软件可以自动启动,无需用户干预;USB设备也不涉及IRQ冲突等问题,它单独使用自己的保留中断,不与其他设备争用PC的有限资源,为用户简化了硬件配置的繁琐过程[1]。现场可编程门阵列(FPGA)具有时钟频率高、其内部所有逻辑控制全部由硬件完成以及可靠性好等单片机无法比拟的优势,已经越来越广泛地应用于电子系统中[2]。由此,本文设计一种基于USB总线的数据采集系统,利用FPGA控制模/数转换芯片ADS8365进行模/数转换,再将转换后的数字信号通过USB接口快速上传至计算机[3]。
1 系统整体设计
本系统主要由信号调理电路、FPGA控制核心、A/D转换电路、FIFO缓存和USB接口组成。信号调理电路对输入的模拟信号进行预处理,使其能被ADS8365完整量化;FPGA负责接收所有的指令和控制信号,并控制ADS8365进行同步模/数转换,同时将转换后的数据发送到FIFO缓存;ADS8365对模拟信号完成16位量化;FIFO缓存量化后的数字量;USB接口从FIFO中读取数据并上传至计算机。系统采用54 MHz主频,根据待采集信号的特征对模拟信号进行27 kHz频率采样。系统采用Xilinx公司的 SPARTAN-3AN系列 FPGA XC3S200AN,这款FPGA具有288 KB的Block RAM,可以用作FIFO数据缓存。此外,XC3S200AN有4 MB的片上闪存,有助于减小系统的PCB面积和布线难度。USB接口芯片采用CY7C68013,其内置符合USB2.0协议的收发器、串行接口引擎、增强型8051内核以及可编程外围接口。系统整体结构图如图1所示。
FPGA并行处理的特性为系统的功能扩展提供了很大的灵活性。例如,添加Flash芯片并配以控制程序就可以实现数据的非易失存储。
2 系统关键模块设计
2.1 信号调理电路设计
要使输入的模拟信号能够被完全量化,则信号电压要求在ADS8365的转换范围之内,且要有一定的驱动强度。输入的模拟信号电压范围为0~5 V,先用高精度电阻将模拟信号分压,再利用运算放大器OPA4340对分压后的信号进行电压跟随,以保证输入信号能够被完整采集。信号调理电路如图2所示。
输入信号经分压后与地之间接了一个12 pF电容以滤除信号的高频干扰。
2.2 模/数转换模块设计
为满足多通道、高精度数据采集的要求,本系统选用16 bit分辨率、6通道、最高250 kHz采样率的差分输入高性能模/数转换芯片ADS8365。利用其内部2.5 V电压作为参考电压,经过电压跟随后接入负向输入端,将经调理后的模拟信号接正向输入端。这样可以有效地降低外界干扰,保证采样准确度。A/D转换模块电路如图3所示。
FPGA 通过控制 ADS8365的 BYTE(输出位宽)、RD(读信号)、CLK(转换时 钟)、HOLD(保 持信号)、A2、A1、A0(地址)等信号完成模/数转换,并将转换后的16位数字量发送到FIFO缓存。
2.3 FIFO缓存模块设计
与FPGA相比,USB2.0接口是一个高速接收单元。数据缓存是不同工作速度的系统之间不可缺少的部分,使用FIFO可以使各系统工作在自己的时钟频率下,不需要互相握手就能进行数据交流。为缩短系统开发周期、提高系统稳定性,本设计利用Xilinx公司的开发软件ISE提供的IP核在XC3S200AN内部构建了功能稳定的FIFO,其容量大小为 8 KB,读、写宽度都为 16 bit,可以为每通道缓存2 KB数据。FIFO内部结构如图4所示。使用FIFO IP核只需要根据满、空等状态信号就可以进行数据传输,降低了系统复杂度。
2.4 USB接口设计
FPGA将模/数转换后通过内部FIFO的空、满信号数据发送至USB单片机(CY7C68013),计算机再从单片机中读取数据。本文以FPGA为主控芯片,CY7C68013工作在Slave FIFO模式。FPGA与CY7C68013接口电路如图5所示。
3 逻辑控制
3.1 FPGA逻辑控制
FPGA主要对ADS8365和FIFO进行控制,其策略是不停地将从ADS8365采集到的数据的高13位连同1 bit指令信息和2 bit通道信息写入FIFO,数据接收设备则通过FIFO的空信号来决定是否继续读取数据。
通过 FPGA对 ADS8365中 A2、A1、A0 3个地址位的配置可以产生不同的采样顺序,本设计中采用循环采样方法,顺序地对4个通道进行采样。
控制ADS8365采集第一个通道数据并写入FIFO的部分Verilog-HDL程序如下(其中以“2'b00”表示通道 1):
本设计将ADS8365模/数转换操作和内部FIFO写操作融合到一个进程中,在简化时序的同时提高了系统稳定性。对于8 bit数据接口,可以通过FPGA将ADS6365的16 bit数据配置成2个8 bit数据顺序输出。
3.2 USB接口控制
USB接口应用程序通过驱动程序对USB芯片进行命令控制,读取FIFO中的数据并发送至计算机。CY7C68013程序开发包提供了USB标准设备请求和数据传输接口。程序首先调用Win32函数CreatFile()得到设备驱动程序的句柄,再调用DeviceIOControl(),通过句柄把 IO Control Code(IOCTL)和 输 入/输 出 缓冲提交给驱动程序。程序框图如图6所示。
图6 FPGA异步读USB FIFO状态机
4 验证
利用本系统对噪声传感器输出的频率为26.4 Hz、幅值为4 V的正弦波进行采集,可以得到8 bit十六进制数据,所得数据分布符合正弦曲线。根据数据绘出的波形如图7所示。
图7 采集26.4 Hz、4 V正弦波得到的图形
软件处理的数据只截取量化数据的高8位,分析图中数据,最大值为 E4h,最小值为 18h,其差值转换电压为:[(E4h-18h)/FFh]×5 V=4 V。
本文所设计的基于USB总线的多通道数据采集系统具有实时性好、可靠性高、易与其他设备通信、电路简单和扩展性强等优点,适合应用于多通道、高精度要求的数据采集设备中,是一种较理想的数据采集方案。
[1]薛园园.USB应用开发技术大全[M].北京:人民邮电出版社,2007.
[2]李艳军,郭正刚,张志新,等.基于 FPGA多通道同步数采集系统设计[J].微计算机信息,2007(26):212-213.
[3]陈曦,邱志成.基于 Verilog HDL的通信系统设计[M].北京:中国水利水电出版社,2009.