基于FPGA和USB2.0的数据采集系统

背景:传统的数据采集是使用得是DSP作为核心的芯片,虽然运行的速度比较快,但是不能完成外围的硬件的逻辑控制;
      FPGA的时钟频率相对较高且延时比较小,采用的是IP内核技术,可以继承外围的控制和接口电路

XC3S1200E作为核心的处理芯片,CY7C68013作为USB的接口芯片,通过FPGA的内部控制模块进行A/D的数据转换和USB的数据传输,在FPGA内部完成数据的处理;


1.系统的设计方案   
数据采集和处理系统主要由四个部分组成
(1)信号调理电路:
    a:对采集的模拟信号进行放大,滤波,将单路信号转换成为差分信号,驱动AD转换器工作
(2)A/D转换:
    a:在FPGA内部模块的控制下,将模拟信号转换为16位的数字信号,传入FPGA进行处理
(3)FPGA:
    a:Spartan 3E 系列的XC3S1200E,控制AD转换以及数据的FFT处理;
    b:FPGA内部的USB控制模块查询CY7C68013(USB的接口芯片)是否是空闲状态,控制USB将处理好的数据传递给主机,从而在PC机上显示
(4)USB(CY7C68013):EZ-USB FX2系列的USB接口芯片
    在FPGA内部的USB的控制模块控制下,将处理完的数据传递给主机

系统工作原理:
    (1)这个系统可以完成两路中频信号的采样处理,单路信号经过THS4503后变成差分信号,输入到模数转换器中,FPGA中的AD控制模块
    向ADS1605发送采样指令,从而AD转换器在控制其的控制下完成数据的采集,将模拟信号转换为16位的数字信号,并且依次选通两片AD通道,
    实现了AD转换器到FPGA的双通道数据传输;
    (2)当发现采集的数据达到处理的条件后,相应的数据会在FPGA中进行FFT运算,计算结束后,将处理后的数据在FPGA的USB接口
    控制逻辑下,经过USB接口传递给主机
    (3)数据传递完成之后,再次进行下一次的数据采集

2.系统硬件设计
    (1)信号调理电路:
        THS4503
    (2)A/D转换:

        ADS1605-高采样率,高精度,易使用的16位模数转换器,
        +5V的模拟电源,+3V的数字电源
        需要外接时钟源,本系统外接50MHZ的时钟晶振,经过FPGA进行分频之后,可以满足ADS1605的正常工作所需要的频率.
    五种工作状态----详情可见连接
    (3)FPGA
        内部模块:
        A:两个FIFO数据存储模块(采集了两路信号[荧光信号,以及多普勒信号])
        B:数据处理模块
            (1) 将一路通道采集到的荧光信号数据进行32个数据的求平均操作,从而预触发两个通道的信号,然后再对一路信号的数据进行最大最小的计算,通过这两个数据求出荧光信号的宽度,
            (2) 对另外一个通道的多普勒信号进行FFT计算
            (3) 通过两个通道计算得到的数据计算出所求粒子的直径
        C:控制模块
            是对ADS1605,FIFO存储模块,以及对USB接口模块的控制
            会产生控制信号,实现系统的数据采集,处理以及传输
        D:分频倍频模块
            系统为FPGA提供的外部时钟频率为50MHz,分频满足各个芯片的工作频率
    (4)USB:
          接口设计
          为了保证较高的数据传输速率,使用的是不经过CPU的SLAVEFIFO控制模式.

文献资料:
[1]FPGA与USB2.0的实时数据采集和处理系统
    http://wenku.baidu.com/link?url=PMP4XMJgW_6pI8IEYaRobtJBU4u3PKBRdJ8cg5Hgqb2ygB_dHlyry8idRIhJXenE9L6hQey-rZ3T_z0z50Tyl3Z-35EtegefJuoGdwrnV_K
[2]USB控制芯片cy7c68013 EZ-USB FX2中文手册
    http://wenku.baidu.com/link?url=9NgJo2h_7e0D0NJemxeujZYSHuhQlXCJPxQ247rsbgiXUWFRFk9pFtnECvqlYQHuDkGuthu36h-F5MSrnLwJ4kv81_GHEJ9xEgsGkeht7aO
[3]

扩展: 
(1)USB数据传输的核心是一个叫端点(endpoint)的东西,
(2)然后你要知道USB的协议一点点,比如四种传输方式,数据用BULK方式就OK啦
(3) CY68013提供的开发包有驱动,自己改改就OK了,并且68013还带单片机的功能,带GPIO,可以完成其他的功能
USB1.1速度最快12M bps,2.0最快480Mbps,根据你的数据量来选择

你可能感兴趣的:(FPGA-VHDL)