找回密码
 注册会员
img_loading
智能检测中
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

[嵌入式/ARM] 基于FPGA的USB接口数据采集系统设计

[复制链接]
admin 发表于 2013-3-21 00:37:13 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
摘  要:介绍了一种高速实时数据采集系统的设计。该系统以FPGA作为逻辑控制的核心,以USB2.0作为与上位机数据传输的接口,能同时支持单端16路和差分8路模拟信号输入,最大采样率为200 kHz,12位的转换精度。描述了系统的主要组成和FPGA模块化设计的实现方法,并给出了其核心模块的时序仿真波形图。
关键词: FPGA; USB2.0; 数据采集; 转换精度
       传统的数据采集系统中通常采用单片机或DSP作为控制模块,控制A/D转换、存储和其他外围电路的工作,利用PCI、ISA等接口与上位机进行通信。随着数据采集对速度、实时性、简易性的要求越来越高,传统数据采集系统的弊端也日趋明显。近年来随着FPGA技术和USB技术的应用深度和广度的不断加大,利用FPGA芯片和USB接口设计高速数据采集系统成为新的研究热点。FPGA芯片不仅体积小、功耗低、时钟频率高、内部时延小,而且能够使用VHDL语言来编程实现程序的并行执行,配置灵活,开发周期短,性能可靠。USB是一种高效、快速、价格低廉、体积小并支持热插拔的新型串行通信接口,目前USB2.0的高速传输速率能够达到480 Mb/s,能够实现数据的高速传输。
1 系统总体结构
     本设计采用FPGA+USB的设计思路,利用FPGA芯片作为系统的逻辑控制核心,通过USB 2.0接口与上位机通信,实现单端16路/差分8路模拟数据的高速、实时、便携式的采集。本文设计的数据采集系统划分为A/D转换电路、FPGA采集控制和USB传输控制器等若干部分。如图1所示。
    20121107053504977173306.gif
       本数据采集系统支持单端16路和差分8路模拟信号输入,每路12 bit的转换精度,最高采样率为200 kHz。主机应用程序首先向USB控制器发出采样时控包,在时控包中设置采集通道及其采样频率。进而USB控制器触发FPGA采集信息,FPGA根据时控包开始启动A/D进行模数转换,转换结束后,FPGA接受A/D输出的12 bit串行数据,并通过串并转换将它转换成16 bit并行数据输出。然后将采集到的数据信息通过USB控制器发送给主机,最后由主机做进一步信息处理。
2 主要芯片选型
     本数据采集系统用到的主要芯片包括FPGA芯片、A/D转换芯片和USB传输控制芯片。
2.1 FPGA芯片的选取
      依据本系统设计的需要选用Altera公司的Cyclone II系列EP2C8Q208C8。该芯片内部逻辑单元8 256个,有165 888个RAM位,182个可用I/O口,系统时钟频率高于260 MHz,只需要3.3 V和1.2 V的工作电压,完全能够满足设计的要求。
2.2 ADC转换芯片的选取
     考虑到系统的采样率、分辨率、通道数等要求,本系统选用德州仪器公司(TI)的ADS7817模数转换器。该器件是12位的低功耗、高阻抗全差分模拟输入、具有串行输出接口的模数转换器,内部基准电压范围为100 mV~2.5 V,最高采样率200 kHz,相应输入分辨率范围49 μV~1.22 mV。
2.3 USB传输控制芯片的选取[1]
     本系统选用CYPRESS公司的USB2.0外设控制器EZ-USB FX2 CY7C68013-56。该芯片包括带8.5 KB片上RAM的高速8051单片机、4 KB FIFO存储器以及通用可编程接口(GPIF)、串行接口引擎(SIE)和USB2.0收发器,可与任何ASIC或DSP进行接合,并且还支持所有通用总线标准,性价比较高。USB2.0协议提供480 Mb/s的传输速度,因此CY7C68013是USB2.0的完整解决方案。
3 系统硬件设计方案实现
3.1 FPGA与ADC及模拟多路开关的电路设计

     系统选用8通道模拟多路开关CD4501和SN74LS174集成D触发器组合构成FPGA信号采集控制的输入通道。本系统要求支持单端16路和差分8路模拟信号输入,因此使用2片CD4501来实现最大16路模拟输入通道的多路复用。在选择单端或差分输入时,通过硬件开关来实现。在一个采样周期内,选择哪路模拟信号进行A/D转换由FPGA控制D触发器SN74LS174其中的5个D输入端的电平高低来选择通道实现。每路模拟信号都要经过多路模拟开关选择通道后,再送入A/D芯片的输入端,如图2所示。本方案中,FPGA为采样通道SN74LS174提供30 MHz的时钟CLK1及复位信号CLR,为A/D芯片提供3 MHz的同步时钟信号DCLK和片选信号CS,从而使A/D芯片对相应的通道进行数据转换。
    20121107053505024043307.gif
   


   3.2 FPGA与USB芯片的连接设计
     当EZ-USB FX2LP工作于Slave FIFO模式时,外围电路可以像普通FIFO一样对EZ-USB FX2LP中的端点数据缓冲区进行读写[2]。本系统采用FPGA作为主控制器,因而,对USB控制采用Slave FIFO模式,FPGA通过控制CY7C68013内4 KB的FIFO进行与上位机之间的数据传输。FPGA与USB芯片的硬件连接如图3所示。
    20121107053505055293308.gif
   4 系统软件设计
     系统软件设计主要包括FPGA控制逻辑设计、USB固件程序设计、USB设备驱动程序和上位机应用程序。
4.1 FPGA设计
     FPGA程序的设计是整个采集系统的关键,整体分成三大模块:分频采样控制模块、通道选择模块和USB传输控制模块。以下是各个模块设计的具体介绍。
4.1.1 分频采样控制模块
     本系统中,FPGA的主时钟m_clk由USB芯片输出的30 MHz频率提供,由于A/D采样需要3 MHz的时钟频率,因此首先模块对主时钟进行10分频得到3 MHz同步时钟信号o_clk。同时,该模块还要控制数据采样、A/D转换以及数据的串并转换。在采样时刻到来时,在同步脉冲o_clk和片选信号cs(低电平有效)的控制下,依据ADS7817转换时序图进行采样、转换。转换过程中计数o_clk脉冲,每12个脉冲置位cs为高电平,使结果仅输出一次,否则在DOUT端继续从最低位到最高位依次输出转换结果。in_data是A/D转换后的串行输出数据,o_Para是对in_data经过串并转换后输出的并行16 bit数据。
4.1.2 USB传输控制模块
     该模块主要负责对USB芯片端点的读写控制。USB芯片端点FIFO用于数据的缓存,一方面存储上位机发出的采集参数信息,另一方面存储FPGA输出的并行16 bit采集数据。该模块通过判断端点FIFO的空、满标志位来对USB端点2、4、6、8进行读写控制。本系统采用异步FIFO读、写控制模式,该模块用状态机来实现,将读、写过程分别分成5个状态,异步FIFO读状态机如图4所示。
    20121107053505086543309.gif
       IDLE:当“写”事件发生时,转到状态1。
     状态1:指向OUT FIFO,激活FIFOADR[1:0],转向状态2。
     状态2:激活SLOE,如果FIFO空标志为“假”(FIFO 不空),则转向状态3;否则停留在状态2。
     状态3:激活SLOE,SLRD,传送数据到总线上;撤销激活SLRD(指针加1)和SLOE,转向状态4。
     状态4:如果有更多的数据要求,则转向状态2;否则转向IDLE。
4.1.3 通道选择模块
     该模块主要负责系统通道的选通,根据得到的采集参数信息选择相应的通道进行数据采集[3]。该模块通过产生不同的电平,来控制集成D触发器SN74LS174的其中5个输入端,从而达到选择通道的目的。
4.2 USB固件程序设计
     本系统中数据通道分为采集数据上传通道和控制字下传通道。根据设计需要进行配置,配置端点4、6、8为采集数据上传通道,用于从FPGA向主机传输采集数据,采用块传输模式,512 B 2重缓冲,16 bit数据自动输入模式;配置端点2为控制字下传通道,用于传送主机控制字到FPGA,采用块传输模式,512 B 2重缓冲,16 bit自动输出模式。固件程序采用Cypress公司提供的固件程序框架,在其初始化函数中添加了用户配置代码。改动部分代码如下所示:
     void TD_Init(void)
     {...
          EP2CFG=0xA2;
          EP4CFG=EP6CFG=EP8CFG=0xE2;
         EP2FIFOCFG=0x15;
         EP4FIFOCFG=EP6FIFOCFG=EP6FIFOCFG=0x0D;
      ...
     }
4.3 USB设备驱动程序设计
     Cypress为其EZ-USB系列USB接口芯片提供了一个完整的开发包,其中包括通用USB驱动程序。本系统按照设计要求,在DDK平台上修改通用USB驱动程序代码,生成本系统的驱动程序代码。
4.4 上位机应用程序设计
     上位机应用程序的作用就是提供一个人机交互的显示界面,体现系统的运行状态。这里采用Microsoft Visual C++ 6.0进行上位机应用程序的设计,程序中采用CYAPI控制函数类。CyAPI控制函数类为EZ-USB FX2LP系列USB接口芯片提供了十分精细的控制接口[4]。在使用Cypress公司提供的驱动程序基础上,只需在主机程序中加入头文件CyAPI.h和库文件CyAPI.lib即可调用相应的控制函数。
5 FPGA核心模块仿真
     图5是针对分频采样控制模块的仿真时序。波形结果显示该模块在一个采样周期内能够准确产生同步时钟信号o_clk和片选信号cs,并且串行输入数据in_data经过串并转换后能够准确无误地并行输出。
   
       本文创新点是设计了一款同时支持单端16路和差分8路模拟信号输入、FPGA为核心控制和USB2.0为接口传输的多通道、实时、高速、便携式数据采集系统。本系统在Altera公司提供的Quartus II 8.0 集成开发环境下进行设计、编译、综合、优化、布局布线、验证和仿真,并成功下载到FPGA芯片中。经过长时间的测试,系统工作稳定、性能可靠,说明了设计结构的合理性,比较适合野外现场数据采集的场合。
参考文献
[1] 刘福奇.FPGA嵌入式项目开发实战[M]. 北京:电子工业出版社,2009.
[2] 薛园园.USB应用开发技术大全[M]. 北京:人民邮电出版社,2007:190-191.
[3] 李艳军,郭正刚,张志新,等.基于FPGA多通道同步数据采集系统设计[J].微计算机信息,2007,23(2-2):212-213.
[4] 戴小俊,丁铁夫,郑喜凤. 基于USB和DSP的数据采集系统设计[J].电子技术应用,2007,33(1):84-86.
您需要登录后才可以回帖 登录 | 注册会员

*滑块验证:
loading...
logo
验证成功
验证未通过
加载失败,请点击重试
本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2025-1-3 16:25 , Processed in 0.062290 second(s), 11 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表