基于USB通信的FPGA高速数据采集系统
扫描二维码
随时随地手机看文章
摘要:为了解决高速数据采集以及数据传输问题,设计了基于USB通信的FPGA高速数据采集系统。方案以FPGA为控制核心,实现A/D控制、数据缓存双口RAM和控制CY7C68013A三个功能。系统采用Verilog HDL语言,通过ISE软件编程控制多个AD7356同时进行数据采集,将采集所得数据存入双口RAM,控制CY7C68013A将数据通过USB总线上传到PC机。系统进行实测实验表明,在CY7C68013A设定为16.7Mb/s的传输速率下,系统工作正常。
关键词:USB;FPGA;高速数据采集;CY7C68013A;双口RAM
0 引言
现代安全防卫系统中及时发现和定位入侵行为具有重要的现实意义。传统的安全防卫系统存在监测距离较短、抗电磁干扰能力弱、维护成本高等缺点。分布式光纤振动传感器能测量整个光纤长度上随时间变化的振动信息,具有检测距离远、抗电磁干扰能力强、安装后易维护等优点,已成为长距离管道监测和安全防卫领域最具有应用前景的技术之一。
本系统中需要对多路信号进行高速、高精度采集,然后将数据上传到PC机中进行数据处理。所以上位机(PC机)和下位机(FPGA)如何高效、快速、方便地数据传输是本系统中的重要问题。目前常用的传输方法为RS 232串口通信方式,通信协议简单,在交互数据量不大,传输速度要求不高的情况下使用非常方便。但是其通常传输速率在几十Kb/s,在高速实时传输系统中无法达到要求。
本文研究基于USB接口的上、下位机通信方法,来解决数据的实时交换问题。通用串行总线(UniversalSerial Bus,USB)是计算机上的一种新型接口技术,它使得计算机和外部设备的连接十分方便。USB接口已经和串口、并口一样,成为PC机的标准接口。目前最新的USB 2.0接口的最高传输可以达到480 Mb/s,远高于传统的串、并口连接速度,可以满足绝大多数情况的大数据量实时交换的需求。除此之外,USB接口还支持插拔,极大地方便了系统的开发调试和实际使用。
1 主要器件选择
本系统为分布式光纤振动传感器的数据采集和传输系统,需要实现的主要功能有光电转换、A/D转换和USB通信。系统的总体结构图如图1所示,可以看出系统以FPGA为处理核心,包含光电转换、A/D转换和USB通信等外围功能模块。
由于光纤微扰动传感器的传感采用的是光纤,所以首先需要将信号经过光电转换和A/D转换,将信号转换为数字信号。然后,在FPGA中进行数据缓存,并对多路信号进行排序后通过USB总线将存储器中数据上传到PC机中。
1.1 光电转换和A/D转换器件
光电转换部分采用的是PINFET,PIN管反偏高、输出阻抗与FET的高输入阻抗得到很好匹配,同时减少了外部干扰和杂散电容,大大降低了热噪声,这对低噪声器件是非常有益的。比起目前较通用的PIN器件来说,PINFET不需要复杂的后续电路,而且其模块化设计,使输出噪声较小,输出电压较大,为后续A/D转换器的采样电压提供较好的工作范围。
A/D转换模块采用的是12位双通道差分输入SAR型AD7356,结构简单实用。AD7356为12位双通道差分输入SAR型AD。该AD为双通道型,所以2路信号的转换是同时进行,减小了因转换带来的时间延迟。而且AD7356的采样频率由输入时钟信号决定,因此可以很方便的改变系统的采样频率,满足系统1~5 MHz的采样速率要求。另外该AD采用单2.5 V供电,可以与FPGA共用电源,使系统的供电系统简洁。
1.2 FPGA
作为高速数据采集系统数据缓存的FPGA,由于系统需要对16路信号进行高速实时缓存,所以FPGA的内部存储空间需要比较大。另外,系统由于下一步需要对于信号做初步处理以减轻PC的运算量,提高处理的实时性,所以采用的是XC4VSX25。XC4VSX25的内部块RAM高达2 304 KB,分布式RAM高达160 KB,完全满足系统需求。而且XC4VSX25中含有128个XtremeDSP Slice,而每个XtremeDSP Slice包含一个18×18位带补数功能的有符号乘法器、加法器逻辑和一个48位累加器,每个乘法器或累加器都能独立使用。XtremeDSP Slice可以通过IP核的形式方便的调用,在XC4VSX25中可以方便的将乘法器和累加器进行组合,构成所需要的数据处理结构,为下一步信号处理提供了基础。[!--empirenews.page--]
1.3 USB器件
USB接口使用方便,连接简单,但是通信协议很复杂。因此,USB外设必须使用控制器芯片,管理数据通信USB控制器采用集成了8051单片机的CY7C68013A控制器芯片,该芯片遵从USB 2.0规范,有较快的传输速度,是目前比较通用的一种USB控制芯片。
CY7C68013A是Cypress公司EZ-USB FX2LP系列芯片中比较经典的一款USB控制器,其内部结构如图2所示。其中,主要包括USB 2.0收发器、串行引擎(SIE)、增强型8051内核、16 KB的RAM、4 KB的FIFO存储器、I/O接口、数据总线、地址总线和通用可编程接口(GPIF)。
EZ-USB FX2LP拥有非常独特的结构,其串行接口引擎(SIE)负责完成串行数据的解码、差错控制、位填充等与USB有关的功能。串行接口引擎(SIE)能够实现大部分的功能,从而减轻了嵌入式增强型8051的负担,简化了USB固件程序的开发。
2 系统软硬件实现
2.1 A/D转换
系统通过PINFET光电转换为单端模拟信号,而A/D转换器AD7356是差分输入方式,所以需要对输入方式进行转换。AD7356说明书中给出了详细的转换电路,按说明连接即可。由于AD7356供电电源为2.5 V,所以和FPGA之间的连接需要调整AD7356的信号电平,使得输出电平与FPGA的3.3 V电平兼容。在电路设计时,可以通过将AD7356的Vdriver引脚连接到3.3 V,这样使得输出信号电平为3.3 V。
系统采用的AD7356采样频率由输入时钟信号决定,而采样通过使能引脚CS控制。在设定好采样频率后,A/D转换程序主要依靠对CS信号控制,并对输入得两路信号串并转换即可。
2.2 数据缓存
数据缓存主要是利用FPGA内自带的块RAM对多路信号进行排序、存储,然后按USB数据包大小打包传输,因此对于硬件(FPGA)不再多做介绍。
数据缓存的软件实现主要依靠FPGA内的双口RAM IP核。双口RAM由于有2个单独的数据输入和输出口,所以可以调节输入输出端口的速度,使得数据读取与输入速度可以方便的控制。另外,由于本系统有多路光信号,所以FPGA内还需要对各个双口RAM的读取进行控制,对各路信号读取顺序进行,其软件结构图如图3所示。每路A/D都有两个RAM轮流存储采集数据,一方面避免RAM出现数据溢出,保证数据不丢失;另一方面可以通过将RAM大小设定与USB数据包大小一致,使USB传输的控制简单。
[!--empirenews.page--]
2.3 USB通信
在系统中,USB控制器被配置为SlaVe FIFO模式,CY7C68013A Slave模式接口引脚的连接如图4所示,这样FPGA可以将USB控制器当成FI-FO来控制,而不用考虑USB标准的各种规则。而USB控制器则将USB标准的各种规则通过许多特殊寄存器来设置,将USB控制简化。
因此,此部分的软件实现包括2个部分。从图4可以看出,FPGA对各RAM轮流读取数据,由于RAM大小与USB数据包大小设定一致,直接把数据送入CY7C68013A即可。而FPGA把CY7C68013A当成FIFO来控制,所以该部分程序比较简单。而CY7C68013A内程序设计主要是通过固件程序对传输速度、传输方式、传输模式等进行设置。
固件程序是指运行在设备CPU中的程序,只有在该程序运行时,外设才能称之为具有给定功能的外部设备。系统把固件代码固化到1片E2PROM中,外设加电后由FX2通过I2C总线下载到片内RAM中自动执行。固件架构是由Keil C51编译器与其整合开发工具所编写和构建。其主要文件包括:fw.c负责设备连接、重枚举、设备初始化;periph.c负责响应各种中断事件,是主要的用户函数应用代码;gpif.c含有GP IF波形描述符表,可以实现波形的传输;dscr.a51文件定义USB设备握手时需要的各种描述符;fx2.h定义各种二级中断向量和描述符的数据结构;fx2 regs.h定义USB单片机中所有的寄存器。
USB支持4种传输类型:控制传输、中断传输、等时传输、批量传输。批量传输可以是双向的,也可以是单向的。它特别适合大数据量的传输,而且它对传输的准确性要求较高。因此,通过固件程序设定本系统采用Slave FIFO模式,批量(BULK)传输方式进行数据传输。
3 实验结果
为了方便实验,使用耦合器将一路光信号分为16路相同的信号,这样所有采集到的信号波形基本相同。实验时,AD7356设定为1 MHz采样速率,USB数据包大小为512 Kb,CY7C68013A采用异步SlaveFIFO模式发送数据,上位机采用Cypress公司自带的EZ-USB Interface软件采集实验数据。采集到的信号如图5所示,系统在16.7 Mb/s的传输速率下工作正常。
4 结语
本文采用目前使用最为广泛的EZ-USB FX2LP芯片,给出了基于USB数据采集系统的设计。该系统充分表现了USB接口传输数据量大,传输速度快的特点,非常的适合大批量数据实时的传输场合,尤其适合数据采集系统和主机的通信,能够实时的处理采集到的数据。这克服了以往数据采集速度慢,采集数量少,接口复杂等特点,实现了数据采集的高速率、多通道。系统进行实测实验表明,在CY7C68013A设定为16.7 Mb/s的传输速率下,系统工作正常。