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开发套件官方资料下载地址:
下载好之后,即可安装该软件,该软件实际是一个集成包,里面包含了开发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 UpdateManager: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-USBFX3 SDK\1.3\driver,并勾选上“包括子文件夹”选项。然后点击下一步。
如果弹出以下界面则表明驱动安装成功。
此时,回到设备管理器中,可以发现如下设备:
到此我们就完成了所有软硬件的连接,接下来,就可以对设备进行测试了。
关于EZ-USB的启动方式在进行测试之前,需要补充介绍下EZ-USBFX3的启动方式,EZ-USBFX3芯片总共支持7种引导方式,所谓引导,就是EZ-USBFX3芯片上电以后,片上的ARM9处理器从何处开始读取程序并运行。其支持的7种启动方式如下所示:
2 从 USB 引导
2 从 I2C 引导
2 从 SPI (支持的 SPI 器件为 M25P16 (16 Mbit)、M25P80(8 Mbit) 和 M25P40 (4 Mbit))或同类器件引导
2 从 GPIF II 异步ADMUX 模式引导
2 从 GPIF II 同步ADMUX 模式引导
2 从 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 USBBulkloopExample,左下角显示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 inendpoint(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 USBStreamerExample,左下角显示Programming Succeeded。如下图X2所示。(关于USBBulkSourceSink.img文件的生成,将在第二期资料中提供详细的开发教程)。
图X1
图X2
基本Streamer测试接下来,我们就使用EZ-USBFX3的开发套件中提供的一个专用的steamer测试软件来进行测试。
在开始菜单中找到Bulk Loop软件,如图X1所示,点击打开,打开后界面如图X2所示:
选择Endpoint为0x01,Packets per Xfer为8、Xfersto Queue为64,然后点击Start开始测试,界面上的能量条会实时显示当前传输速度,也会同时显示成功(Successes)和失败(Failures)的数据包个数。可以看到,传输速度为395800KB/S左右,即386MB/S。速度可谓相当的高。
点击stop停止传输,切换Packets per Xfer为256、Xfers toQueue为64,然后再次点击Start,测试速度如下所示。可以看到,传输速度稳定在389000KB/S左右,也就是380MB/S,这个速度已经相当的高了。
SlaveFifo模式测试EZ-USBFX3的套件提供了对GPIFII配置的一个快捷工具,叫做GPIFII Designer,使用该工具,可以快速创建GPIF II的配置信息,然后提交给Eclipse编译以得到对应的固件。
本帖最后由 芯航线跑堂 于 2016-12-15 14:17 编辑