新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于CYUSB3014 USB3.0总线开发技术

基于CYUSB3014 USB3.0总线开发技术

作者: 时间:2016-12-21 来源:网络 收藏

  当为写命令时,CYUSB3014需要将从DDR2中读取的数据发送出去;当为读命令,读取CYUSB3014传递过来的数据,流程图如图4所示。图5、图6分别为同步写入和读出数据的时序图。由于读写最大包为1024字节,所以实际每一包传输需要256个周期。图中的输入/出DQ数据为测试数据模块和PC机产生的测试数据,RX即UART_RX信号。

  时序图

  3.3.2 测试数据模块

  当计算机向FPGA发出读命令时,FPGA产生测试数据。32位数据,高16位为0,低16位循环计数,发送一个周期后,自动清零。

  批量(bulk)传输时的最大包大小为1024字节,因此测试数据在0~255之间循环变化。

  产生测试数据后,数据传输流程为DATA->

  DDR2->FIFO->CYUSB3014->PC机,实现了将测试数据上传到PC机的功能。

  3.3.3 DDR2接口模块

  该部分直接负责外围DDR2接口,利用FPGA的DDRII SDRAM IP核实现,按照DDR2芯片MT47H64M16HR来设定控制器的时序参数,控制器根据这些参数值生成满足MT47H64M16HR时序的接口,再由DDR2模块进行读写控制。

  3.4 应用程序的设计

  应用程序由VC++编写,利用与设备驱动关联的API与设备联系。CYPRESS公司提供了完整的API库,配合使用其提供的通用驱动程序,可以便利地调用控制USB设备。应用程序的主要功能是发送命令,并将USB输入数据保存下来,程序主要界面如图6所示。

  界面

  4.测试结果及分析

  4.1 写入数据测试

  当应用程序向USB发出写命令时,FPGA产生测试数据并传给FX3以便上传给PC机。

  采集1000MB的数据进行记录,以便在MATLAB中进行分析。

  CYPRESS官方开发包中自带了streamer软件进行速度测试。在Endpoint选项中选择Bulk in endpoint端点(Bulk Out对应的是PC机向FPGA写数据)。由于批量传输时的最大包为1024字节,因此需要将Packets perXfer设置为256或以下,Xfers to Queue置为4。不同的USB3.0控制器,速度的测试结果会有所不同。如图7所示是在64位WIN7系统下的测试及分析结果。如图7(a)中所示,经过一段时间的速度测试,23704个成功包,0失败,往P C中写入数据的速度能够达到178800KB/S,即1.43Gbps。为了验证数据的正确性,在MATLAB中对采集的8.0Gb数据进行分析。由于测试数据是0~255之间循环变化,因此可以根据每一包数据的数据差是否为1来判断数据的正确性,当不为1时报错。

  如图7(b)所示,读取的数据是正确的,没有发生丢数或错数的情况。

  测试分析

  4.2 读出数据测试

  类似的,当应用程序向USB发出读命令时,同时会产生一组有规律的测试数据,并传送给CYUSB3014,FPGA直接读取数据。如下图8(a)所示是读入速度测试结果,18252个成功包,0失败,往USB中写入数据的速度能够达到179000KB/S,即1.432Gbps。在FPGA中记录下随机采集的32k数据并进行分析,同样的可以根据数据间的差来判断数据的正确性,如图8(b)所示,写入的数据时正确的,没有发生丢数错数的情况。

  分析

  5.结束语

  本文在FPGA和CYUSB3014的基础上,对USB3.0进行了开发应用。鉴于本文的系统架构,虽然测试数据都是FPGA内部产生,但是对于实际使用高采样率AD的数据采集系统具有很大的借鉴意义。


上一页 1 2 下一页

关键词: DDR2FPGAUSB总

评论


技术专区

关闭