USB3.0专题-硬件的测试

本次演示用的是USB3.0芯片-CYPRESS CYUSB3014(下称 FX3),该芯片是标准的USB3.0 PHY,可以大大简化使用USB通信时FPGA的设计,主需要使用状态机进行FIFO的读写控制即可,同时该芯片还具有ARM核+I2S、I2C、SPI、UART等接口,大大增加了该芯片的使用范围。

硬件测试

经过前面几期的介绍,我们基本了解及准备好所需要的环境,接下来我们就需要在应用之前先测试一下我们的硬件,主要包括:loopback传输测试、数据吞吐量测试、Streamer功能测试。

1、识别USB3.0接口(驱动安装)

将FX3 USB口插上电脑后,可以在设备管理器中看到一个未识别到的设备:

右击,更新驱动程序:

驱动所在位置和自己安装路径有关,我使用的是默认安装位置,所以驱动位置在:

C:\Program Files (x86)\Cypress\EZ-USB FX3 SDK\1.3\driver\bin\win8\x64.

上面路径和自己安装路径和所使用的平台有关,具体需要自己去选择(Win7选择win7文件夹下,win8和win10选择win8文件夹下)。

安装完驱动后,惊叹号消失,出现如下列表中设备,可以记住他的VID/ID。

2、基于内部DMA的loopback传输测试

何为LoopBack,通俗点就是FX3接收到什么数据就发送什么数据(类似串口回环)。

在上诉过程中,FX3内部ARM核(ARM9)是不参与数据本身传输的,固件配置好后,内部通过DMA进行数据的搬运。

编译固件

本节测试固件代码来源:

C:\Program Files (x86)\Cypress\EZ-USB FX3 SDK\1.3\firmware\basic_examples\cyfxbulklpautoenum

PS:还是根据自己安装 目录选择。

COPY到一个不含中文路劲及空格的文件夹下。

在开始菜单内选择Cypress-->Eclipse-->EZ USB Suite:

编译完会在Console下输出打印信息:Build Finish,证明编译完成。

此时在工程目录下会生成一个Debug的文件夹,文件夹下面就生成了我们需要的固件,如下:

接下来,根据自己的硬件选择从USB引导。

插上USB,就可以在设备管理器上看到FX3设备。

加载固件

接下来启动Control Center

开始 > 程序 >Cypress > Cypress USBSuite > Control Center

在左侧USB Control Center中单击Cypress USB BootLoader(表示对该设备进行操作)。

选择Program > FX3 > RAM。

其中RAM类似FPGA中JTAG调试,烧写到其他两种芯片需要看FX3芯片外围接口芯片是什么,根据需求选择,我们目前还是在调试,所以选择烧写到RAM中。

选择在上一节基础上生成的固件(Debug文件夹下):

在上面操作没问题的情况 下:工作窗口中原先的Cypress USB BootLoader就编程了我们下载固件的名字(Cypress USB BulkLoopExample)。

LoopBack硬件测试

在上一节基础上,单击打开Cypress USB BulkLoopExample。选中Bulk out endpoint(0x01)选项,在Data Transfers-->Data to send(Hex)中输入要发送给FX3的数据。单击Transfer Data-OUT发送数据。

在下图中的信息串口就会出现刚刚发送的内容及Bulk out Transfers completed的提示,证明传输已经完成。

接下来,单击Bulk in endpoint(0x81)选项,然后单击Data Transfers-->Data-IN按钮。

在下图中的信息串口就会出现刚刚发送的内容及Bulk IN Transfers completed的提示,证明传输已经完成。

接下来进行批量LoopBack测试。

在上一节基础上,打开Bulk Loop。

点击Start 按钮运行一段时间后,可以对比Bytes transferred OUT好Bytes transferred IN后面的统计,看下LoopBack测试下有没有丢包。

点击Start 按钮运行一段时间后,可以对比Bytes transferred OUT好Bytes transferred IN后面的统计,看下LoopBack测试下有没有丢包。

3、FX3数据吞吐量测试

编译固件

本次使用的是SDK目录下:

C:\Program Files (x86)\Cypress\EZ-USB FX3 SDK\1.3\firmware\basic_examples\cyfxbulksrcsink

编译固件过程同上一节基本不变:

下载固件

下载固件也基本不变,选择的文件是刚刚编译出来的固件:

工作窗口中原先的Cypress USB BootLoader就编程了我们下载固件的名字(Cypress USB StreamerExample)。

Streamer硬件测试

开始菜单中打开Streamer。

进入软件后,会自动识别到FX3设备,按照下图中设置后,单击Start按钮后既可以进行Streamer测试。

3、固件固化

上面下载的固件是下载到RAM中的,一断电后固件就会丢失,这种在实际应用中是不可取的。

FX3为了方便用户使用,提供两种固件固化方式:SPI FLASH和EEPROM。启动方式可以通过下面方式进行选择。

实际使用过程中SPI FLASH是比较常用的方式,设计的FLASH电路如下所示:

固化方式同上面RAM下载方式相同,下图中选择自己配置的外围器件后,等待下载完成即可。

相关推荐
Terasic友晶科技7 小时前
【教程】Agilex 5 SoC 的两种启动模式的开发演示(一)(FPGA Configuration First)
fpga开发·agilex 5 soc
ALINX技术博客7 小时前
【黑金云课堂】FPGA技术教程Vitis开发:SD卡WAV文件读取音频播放实验
fpga开发·音视频
仲南音2 天前
Xilinx FPGA——时钟IP核MMCM、PLL
fpga开发
I'm a winner3 天前
基于Xilinx FPGA的LVDS高速串行通信系统(三)--数据训练及握手机制【文末源码】
fpga开发
upper20203 天前
coremark移植坑之-nostartfiles -nostdlib参数
学习·fpga开发·coremark移植·riscv设计
Eloudy3 天前
Vivado 纯命令行构建 FPGA 项目教程
fpga开发
Rambo.xia3 天前
AXI跨时钟域与数据一致性——CDC FIFO深度不够、写后读冒险、多Master仲裁、乱序返回,出了Bug根本查不出来
fpga开发·bug
upper20203 天前
FPGA部署卷积神经网络识别MINST图片
fpga开发·卷积神经网络·minst·minst识别·部署神经网络·神经网络识别图片
你是我的解忧王子4 天前
嵌入式 ADC采样 原始数据分析上层(平均值 波动率 正态分布 线性补偿 系统误差)
fpga开发·数据挖掘·数据分析
9527华安4 天前
FPGA纯verilog代码ISP图像处理培训教程,基于IMX214,提供工程源码+视频教程+FPGA开发板
图像处理·fpga开发·isp·imx214·mipi