近年来,数据采集和处理技术得到飞速发展,在医疗、通信、化工、雷达等领域应用广泛[1]。早期采集数据主要是利用单片机作为主控制器,控制模/数转换器等外围电路。随着需求的增长,这种设计模式已不能满足人们的需求,因此必须使用速度更快、性能更强的器件作为控制器。综合考虑价格和性能,本设计采用可编程逻辑器件(FPGA)和单片机(MCU)联合控制,只需一块常用的MCU加上一块FPGA芯片就能完成高速的数据采集任务,同时FPGA还能完成其他逻辑功能[2]。
通用串行总线USB具有支持热拔插、传输速率高、占用资源少等优点,适合数据传输。但USB协议复杂,编写驱动费时,开发周期较长。FT245BM成功实现了USB和并行I/O的转换,避开了固件设计和驱动的编写,大幅缩短了开发时间,成为开发USB外围设备的理想选择[3]。利用FT245BM和FPGA实现数据采集和传输,可有效降低开发难度,缩短开发周期。
1 系统总体结构
数据采集系统主要完成两大功能:数据的采集和传输。系统利用外置手柄电极阵列采集64路模拟信号,通过FPGA控制可编程增益放大器放大采集的模拟信号,通过A/D转换后由USB总线传输给PC机处理。本系统控制部分采用Altera公司的Cyclone系列FPGAEP1C6Q240C8芯片以及Philips公司的P89LV51单片机完成控制功能。总体结构如图1所示。系统工作时,MCU通过串口接收PC机发送的采集命令,然后将命令打包发送给FPGA,控制FPGA芯片采集数据并将数据暂存到SRAM中[4],FPGA通过识别FT245BM的写数据命令,将SRAM中的数据送给PC机进行处理。此设计方案简化了USB通信,只需完成单向数据传输,降低了系统的开发难度,增加了系统的稳定性。
2 系统的硬件设计
2.1数据采集电路的设计
鉴于系统精度、速度和成本,采用ADI公司的AD9238芯片。该芯片采用3.3 V供电,速度为可选20 MS/s、40 MS/s和65 MS/s。其内部含有两路A/D转换器及信号保持器,可提供与单通道A/D转换器同样优异的动态性能,而且比使用2个单通道A/D转换器具有更好的抗串扰性能。模拟信号为差分输入,转换数字信号为并行输出。
考虑到被测信号频率最高为1 MHz,系统只需采用20 MS/s的采样频率即可,此时功耗约为180 mW,符合低功耗设计要求。采样时钟由FPGA内部的50 MHz时钟分频得到。采集电路采集的信号主要为通过手柄采集64路模拟信号和基准参考信号,频率在100 Hz~1 MHz范围之间,电流值小0.5 mA。数据采集电路设计图如图2所示。
2.2 数据传输电路设计
本系统采用的FT245BM模块是英国FTDI公司的一种快速USB通信接口,可以支持USB1.1/2.0规范,传输速率最大可达1 MB/s。该芯片功能强大,无需编写片内固件程序,能够实现USB协议与并行I/O协议之间的转换,芯片自动完成中间的转换工作。
FT245BM内部主要由USB收发器、串口接口引擎(SIE)、USB协议引擎和FIFO控制器等构成。片内含有2个FIFO数据缓冲区:1个128 B的接收缓冲区和1个384 B的发送缓冲区[5]。FT245BM还包括1个内置3.3 V稳压器,1个6 MHz振荡器,8倍频的时钟倍频器和USB内部锁相环。主要通过读写控制线(RDP、WR、TXE、RXF)和8根数据线D0~D7来完成与FPGA的通信。FT245BM的电路设计如图3所示。系统通过帧头来识别各个状态命令,数据传输格式为“帧头+控制命令+帧尾”。
2.3 FPGA选择
本系统的FPGA芯片采用Altera公司Cyclone系列的EP1C6Q240C8。它采用0.13 μm,全铜SRAM工艺,工作电压为1.5 V;内部有2个锁相环,5 980个LE单元,20个M4K型RAM块,总RAM容量达到92 160 bit,240个管脚,其中包括185个最大可用I/O口(I/O口可自由定义)。该芯片电路设计简单方便,编程灵活,不易受外部干扰。配合使用Altera公司的Quartus II软件开发平台,可以很容易地进行程序设计,有效减少了开发周期。
3 系统软件设计
3.1 主控制模块程序设计
主控模块由FPGA和MCU构成,其中MCU采用C语言编程,FPGA采用Verilog HDL语言编程。主控模块负责放大被测信号、采集信号和数据传输,本文主要讨论采集数据部分。
此设计简化了USB通信,FT245BM在本系统中只需将数据发送到PC机,不用进行读操作。FT245BM写时序如图4所示,当数据满足发送条件(当前没有数据发送且发送FIFO未满),TXE#置为低电平,控制器检测到TXE#为低时,放入数据。当WR输出一个下降沿时,可将数据写入发送FIFO[6]。
3.2 软件编程
FT245BM和上层PC机通信时,需要在PC机上安装驱动。FTDI公司提供了VCP、D2XX(动态链接库)两种驱动模式。前一种是将USB接口虚拟为串行通信口,在PC上的编程和实现串口编程完全一样;后一种提供了一个动态链接库(FTD2XX.DLL),内部包含了一套函数,使用该驱动传输速率可达到1 MB/s[7]。
根据FTDI公司的资料,前一种驱动的数据传输速率最高为300 kb/s,达不到高速处理数据的要求,因此本文选择利用D2XX来设计。应用程序通过FTD2XX.DLL、FTD2XX.SYS、Windows USB Driver Stack来实现对FT245BM的读写。上位机软件采用Delphi7来设计,该软件具有开发周期短、易于调试的优点。通过调用FTD2XX.DLL中的函数,可完成对USB接口设备的读写。
4 调试与小结
目前该数据采集系统已成功应用于乳腺电阻抗扫描成像系统。图5即为该系统的上位机测试界面第1帧第64电极的测量曲线图,其中,参考信号表示原输入激励信号,电极信号为通过人体后采集到的信号。从图中可看出当输入的激励信号为1 kHz时,测量得到的参考信号以及电极信号仅幅度不同,相位没有明显失真,频率和曲线变化趋势一致,表明该系统采集得到的数据准确,具有较高的准确性,符合设计要求。同时系统简化了USB通信,有效降低了软件交互的次数和软件编写的繁琐程度,节省了硬件资源,提高了效率。
参考文献
[1] 石波涌,应文威,蒋宇中.基于FT245BM的数据采集系统设计与实现[J].舰船电子工程,2010(12):125-129.
[2] 李娜,孟令军.用FT245BM实现FPGA与PC机的数据无缝传输[J].重庆工学院学报(自然科学),2009,23(5):80-83.
[3] 蔡江洪,史小军,朱为,等. 利用FT245BM实现FPGA与PC机的USB通讯[J].电子器件,2005,28(1):132-134.
[4] 王德胜,康令州.基于FPGA的实时图像采集与预处理[J].电视技术,2011,35(3):32-35.
[5] 徐锋. 基于FT245BM的快速USB接口的实现[J].电子工程师,2007(3):59-61.
[6] 刁兆奎,张鹏飞,熊继军,等.基于FT245BM的数据采集系统设计[J].测试技术学报,2011,25(2):163-167.
[7] 林秀珍,梁志强. 通用串行总线USB及其应用[J]. 现代电子技术,2003(7):88-91.