AC6102开发板USB3.0测试和使用说明
概述
AC6102上集成了一颗Cypress 推出的高性能USB3.0传输芯片CYUSB3014,Cypress称之为EZ-USBFX3。该芯片性能强劲,功能强大,接口简单,非常适合用于各种需要高速数据传输的场合,以下为摘自EZ-USBFX3数据手册中关于该芯片的介绍:
赛普拉斯EZ-USBFX3是新一代USB3.0外设控制器,具有高度集成的灵活特性,可帮助开发人员为任何系统添加USB3.0功能。EZ-USBFX3具有一个可进行完全配置的并行通用可编程接口GPIFII,它可与任何处理器、ASIC或FPGA连接。这个通用可编程接口GPIFII是赛普拉斯旗舰USB2.0产品FX2LP中的GPIF的增强版本。它可轻松无缝地连接至多种常用接口,比如异步SRAM、异步和同步地址数据复用式接口、并行ATA等等。
EZ-USBFX3集成了USB3.0和USB2.0物理层(PHY)以及32位ARM926EJ-S微处理器,具有强大的数据处理能力,并可用于构建定制应用。该产品采用了一种巧妙的架构,使从GPIFII到USB接口的数据传输速度可达320MBps[1]。通过集成的USB2.0OTG控制器,可以实现需要双角色使用场合的应用。例如,EZ-USBFX3可以作为MSC和HID级设备的OTG主机使用。EZ-USBFX3配有用于存储代码和数据的512KB片上SRAM。EZ-USBFX3还具有可连接至UART、SPI、I2C和I2S等串行外设的接口。
EZ-USBFX3附带易用的EZ-USB工具,为快速应用开发提供完整的解决方案。软件开发工具包中附带应用示例,可缩短上市时间。
EZ-USBFX3完全符合USB3.0规范1.0版,并可向下兼容USB2.0。本设备还符合电池充电规范v1.1和USB2.0OTG规范2.0版。
从该介绍中,摘选出我们所关心的以下信息:
1、 USB3.0外设控制器,兼容USB2.0协议
2、 对外是一个GPIFII接口,可以灵活的与FPGA连接
3、 片上集成ARM926EJ-S微处理器(ARM9处理器)
4、 用户接口(GPIFII)到USB接口的数据传输速度可达320MBps
5、 支持USB2.0 OTG功能,可以作为海量存储器控制器(MSC,如U盘)或人机接口设备(HID,如鼠标、键盘)的主机
6、 片上512K字节SRAM用于存储程序和数据
7、 UART、SPI、I2C、I2S串行外事接口。
8、 提供方便易用的EZ-USB开发
通过以上介绍可知,EZ-USBFX3的功能还是非常强大的。因此,如何高效快速的学会使用该芯片也就显得非常有意义了。
本文作为AC6102开发板的第一期配套资料,仅对AC6102上的USB3.0电路功能和性能测试进行简单的介绍。关于更加详细的开发教程,将在第二期或第三期资料推出。
本实验需要用到以下器件:
1、 芯航线AC6102型FPGA开发板一块
2、 带USB3.0接口的PC机一台
3、 Micro USB3.0数据线一根
4、 5V/2A电源适配器一个
5、 USB Blaster下载器一个
安装SDK
开发EZ-USBFX3,需要用到Cypress提供的开发工具,该软件已经经历了多次更新,目前最新版本的叫做FX3_SDK_Windows_v1.3.3.exe。该软件以及EZ-USBFX3的其他所有相关文档都可以从以下地址下载得到。下载需要注册,注册非常简单,仅需要邮箱就能成功注册,这里就不给大家介绍注册方法了。
CYUSB3014开发套件官方资料下载地址:
http://www.cypress.com/documentation/software-and-drivers/ez-usb-fx3-software-development-kit
下载好之后,即可安装该软件,该软件实际是一个集成包,里面包含了开发EZ-USBFX3的软硬件所需的全部内容,包括开发软件、DEMO、文档等。安装过程也非常简单,以下对其中需要注意的地方进行简单说明。
1、 双击FX3_SDK_Windows_v1.3.3.exe以开设运行软件
2、 安装路径选择,建议选择默认,这可以帮我们在开发初期避免路径不通带来的差异,可以省不少事。点击Next。
3、 下一个界面要求选择安装的模式,典型的,还是用户自定义安装,第一次接触,建议按照典型方式安装。
4、 接下来,就是各种接受协议,各种下一步。接受了所有的协议后,点击next就可以开始正式安装,以下为安装过程
安装最后的一个界面是反馈信息,默认finish是灰色的无法选中,我们选择Continue Without Contact Information即可,然后点击Finish。
至此,EZ-USBFX3开发套件就安装完成了
安装完成后,在系统的开始菜单下,会出现一个叫做Cypress的文件夹,里面包含以下内容:
Cypress Update Manager:Cypress的更新管理器,如果开发套件有更新版本,使用该管理器可以检查并更新到最新版本。
EZ-USB FX3 SDK:EZ-USB的开发套件相关组件。
连接USB3.0到PC
以上,我们完成了EZ-USB FX3的开发套件的安装,只有安装了该套件,才能在后续将AC6102的USB3.0接口连接到PC机时,成功的安装驱动。
1、 使用配套的5V电源给开发板供电,打开电源开关,插上USB Blaster下载器。
2、 使用配套的USB3.0数据线连接PC和AC6102的USB3.0接口。如下图所示:
插上USB线并打开开发板电源以后,PC会自动识别到设备,设备名称为“WestBridge”,如下图所示,由于此时设备没有安装驱动,因此还是带黄色“!”,表明设备不可用。
安装EZ-USB芯片驱动
当开发板和PC机连接完成后,我们就可以为设备安装驱动了。选中设备,单击鼠标右键,选中更新驱动程序,选则浏览计算机以查找驱动程序软件。
定位驱动路径到以下文件夹(以实际的 SDK 安装路径为准)。C:\Program Files (x86)\Cypress\EZ-USB FX3 SDK\1.3\driver,并勾选上“包括子文件夹”选项。然后点击下一步。
如果弹出以下界面则表明驱动安装成功。
此时,回到设备管理器中,可以发现如下设备:
到此我们就完成了所有软硬件的连接,接下来,就可以对设备进行测试了。
关于EZ-USB的启动方式
在进行测试之前,需要补充介绍下EZ-USBFX3的启动方式,EZ-USBFX3芯片总共支持7种引导方式,所谓引导,就是EZ-USBFX3芯片上电以后,片上的ARM9处理器从何处开始读取程序并运行。其支持的7种启动方式如下所示:
² 从 USB 引导
² 从 I2C 引导
² 从 SPI (支持的 SPI 器件为 M25P16 (16 Mbit)、M25P80(8 Mbit) 和 M25P40 (4 Mbit))或同类器件引导
² 从 GPIF II 异步 ADMUX 模式引导
² 从 GPIF II 同步 ADMUX 模式引导
² 从 GPIF II 异步 SRAM 模式引导
那么究竟EZ-USBFX3芯片上电后从哪里开始启动呢?芯片提供了3个启动配置引脚,通过设置启动引脚不同的值,来选择不同的启动方式。这三个引脚名叫PMODE脚。
这三个配置引脚,每个引脚都有三种状态,1(接高电平)、0(接低电平)、F(浮空,既不接高电平,也不接低电平),三个配置引脚的不同状态与对应的启动方式如下表所示:
其中,对于FPGA和USB3.0组成的系统,我们很少用到第1、2、4种启动方式。第7种启动方式,即使用SPI引导,主要用在EZ-USBFX3作为整个系统的主机层,片上的处理器需要运行复杂的程序的情况下,使用片外的大容量SPI FLASH存储器启动。FPGA + EZ-USBFX3,使用最多的是SlaveFifo接口,因此,可以选择EEPROM存储器,即I2C方式启动。同时,为了保证系统在IIC接口的EEPROM存储器失效的情况下,能够有其他方式可以恢复,所以,AC6102上的启动方式设置为了方式5,即默认从I2C引导,如果从I2C引导失败,则启用从USB引导。对应的PMODE[2:0]的配置为F1F,在原理图上,即电阻R51使用0R电阻,其他电阻全部不焊接即可。
EZ-USB测试方案分析
由于AC6102上的USB3.0电路更像是一个桥,一端,使用USB总线连接到PC机的USB端口上,另一端,使用GPIFII连接到FPGA芯片上。所以,为了测试整个链路是否通畅,可以分成两步测试,第一步,测试EZ-USBFX3和PC间的USB3.0总线是否稳定,第二步,再测试FPGA通过EZ-USBFX3到PC的链路是否稳定。
为了测试EZ-USBFX3和PC间的USB总线是否可靠,可以采用内部回环传输的方式进行测试,所谓内部回环传输,就是PC发数据给EZ-USBFX3,EZ-USBFX3将接收到的数据再发回给PC,以实现通信USB总线的测试。
为了使EZ-USB能够工作在回环模式,需要有相应的固件支持。对于EZ-USBFX3,由于我们将其引导方式设置为I2C -> USB,即默认会从EEPROM上启动。但是我们的EEPROM中目前没有烧写任何固件,因此一定会引导失败,引导失败后,则会选择从USB引导。所以,我们可以在系统上电后,通过PC直接将固件下载到EZ-USB的RAM中并运行。
块传输模式测试
下载EZ-USB固件
在开始菜单中找到Control Center,如下图X1所示,打开后软件会自动扫描到我们的USB设备,如下图X2所示。
这里,我们选中设备(Cypress FX3 USB BootLoader Device),然后点击菜单栏中的Program,依次选择FX3 -> RAM。
在打开的文件选择窗口中,我们定位到我们提供的DEMO目录下的..\AC6102\demo_release\ez_usb\01_USBBulkLoopAutoEnum文件夹,选择USBBulkLoopAutoEnum.img文件,点击打开,如下图X1所示,则软件会自动读取该文件并通过USB总线下载到EZ-USBFX3芯片的RAM中,此时,我们再看USB Control Center,发现此时的设备名称已变成了Cpress USB BulkloopExample,左下角显示Programming Succeeded。如下图X2所示。(关于USBBulkLoopAutoEnum.img文件的生成,将在第二期资料中提供详细的开发教程)。
图X1
图X2
基本回环测试
USB Control Center软件提供了一个基本的回环测试功能,这里,我们依次点开Cpress USB BulkloopExample前面的+号,找到Bulk outendpoint (0x01),选中该项,在右侧 “Data Transfers” 的“Data to send (Hex)”中输入需要从 PC 发送到 FX3 的数据。然后点击 Transfer Data-OUT 即可实现数据发送。如下图X所示。
发送完成后,在下方信息窗口,可以看到提示信息,表明发送已经完成。
那么此时,这些发送出去的数据在哪里呢?本例烧写的固件是基于内部DMA的回环测试,所谓内部DMA回环,就是EZ-USBFX3会自动将out端点发送的数据搬运到in端点,所以,我们刚刚发出去的这13个数据,已经被EZ-USBFX3芯片搬运到了in端点了。这样,当电脑读取in端点,就能读取到刚刚发出去的这13个数据。
在左侧选中Bulk in endpoint(0x81)端点,然后右侧窗口中,点击Transfer Data-IN按钮,即可将0x81端点中的数据读出来,如下图所示。
可以看到,读取回来的数据与我们发出去的数据完全一致。因此可知USB总线能够正常的收发数据。
使用Bulk Loop工具测试
上述测试需要我们手工输入待测试数据并手动点击发送和读取按钮,因此效率十分低下,无法测试USB3.0在搞强度传输时候的稳定性。接下来,我们就使用EZ-USBFX3的开发套件中提供的一个专用的回环测试软件来进行测试。
在开始菜单中找到Bulk Loop软件,如图X1所示,点击打开,打开后界面如图X2所示:
打开之后,直接默认设置即可,点击Start即可开始测试。发送和接受数据统计窗口会显示实时发送和接收的数据总数,通过比对发送和接收的数据是否一致,即可了解EZ-USBFX3和PC间的USB总线性能是否可靠。
至此,我们就完成了USB总线可靠性的测试。之所以要进行此测试,是因为USB3.0串行总线数据线的传输速度高达Gbps,AC6102这几根串行数据线在布线时需要完成阻抗匹配和差分布线,只有阻抗匹配和差分布线都满足USB3.0协议的要求,才能够稳定长期的传输数据不出错。
小梅哥
2016年12月8日于成都市电子科技大学
流模式数据吞吐量测试
上一节,我们介绍了使用EZ-USBFX3的片上回环方式测试USB总线的可靠性。该种方式虽然能够测的USB总线的传输是否可靠,但是却无法体现USB3.0的高传输速率。本节,我们将通过另一种方式——流传输方式,来测试我们的USB3.0总线的传输速率。
下载EZ-USB固件
在开始菜单中找到Control Center,如下图X1所示,打开后软件会自动扫描到我们的USB设备,如下图X2所示。
这里,我们选中设备(Cypress FX3 USB BootLoader Device),然后点击菜单栏中的Program,依次选择FX3 -> RAM。
在打开的文件选择窗口中,我们定位到我们提供的DEMO目录下的AC6102\demo_release\ez_usb\ 02_USBBulkSourceSink,选择USBBulkSourceSink.img文件,点击打开,如下图X1所示,则软件会自动读取该文件并通过USB总线下载到EZ-USBFX3芯片的RAM中,此时,我们再看USB Control Center,发现此时的设备名称已变成了Cypress USB StreamerExample,左下角显示Programming Succeeded。如下图X2所示。(关于USBBulkSourceSink.img文件的生成,将在第二期资料中提供详细的开发教程)。
图X1
图X2
基本Streamer测试
接下来,我们就使用EZ-USBFX3的开发套件中提供的一个专用的steamer测试软件来进行测试。
在开始菜单中找到Bulk Loop软件,如图X1所示,点击打开,打开后界面如图X2所示:
选择Endpoint为0x01,Packets per Xfer为8、Xfers to Queue为64,然后点击Start开始测试,界面上的能量条会实时显示当前传输速度,也会同时显示成功(Successes)和失败(Failures)的数据包个数。可以看到,传输速度为395800KB/S左右,即386MB/S。速度可谓相当的高。
点击stop停止传输,切换Packets per Xfer为256、Xfers to Queue为64,然后再次点击Start,测试速度如下所示。可以看到,传输速度稳定在389000KB/S左右,也就是380MB/S,这个速度已经相当的高了。
SlaveFifo模式测试
EZ-USBFX3的套件提供了对GPIFII配置的一个快捷工具,叫做GPIF II Designer,使用该工具,可以快速创建GPIF II的配置信息,然后提交给Eclipse编译以得到对应的固件。