傻瓜式教程--基于FPGA的CYUSB3014双向通信

一、概述
是赛普拉斯在近几年推出的新一代USB3.0的外设控制器,可以解决USB2.0带宽限制,或者单独开发USB协议和驱动的难题 。赛普拉斯将简称为EZ-USB FX3,具有高度的灵活特性,开发人员只需要下载FX3的固件库,就能使用USB3.0的功能 。
目前在一些电子产品中,使用主控器加PHY芯片最流行的方式是用FPGA+FX3这种搭配来实现USB3.0接口的 。
赛普拉斯官方数据手册中对FX3的描述如下:EZ-USB FX3 具有一个可进行完全配置的并行通用可编程接口GPIF II,它可与任何处理器、ASIC 或 FPGA 连接 。这个通用可编程接口 GPIF II 是赛普拉斯旗舰 USB 2.0 产品 FX2LP 中的GPIF的增强版本 。它可轻松无缝地连接至多种常用接口,比如异步 SRAM、异步和同步地址数据复用式接口、并行 ATA 等等 。
EZ-USB FX3 集成了 USB 3.0 和 USB 2.0 物理层 (PHY) 以及 32位-S 微处理器,具有强大的数据处理能力,并可用于构建定制应用 。采用了一种巧妙的架构,使从 GPIF II 到USB 接口的数据传输速度可达 320 MBps[1] 。通过集成的 USB 2.0 OTG 控制器,可以实现需要双角色使用场合的应用 。例如EZ-USB FX3 可以作为 MSC 和 HID 级设备的 OTG主机使用 。
二、内部逻辑框图
FX3的功能是在FPGA/MCU/CPU这些控制器和USB接口之间作为一个桥梁 。CPU将需要发送的并行数据,通过GPIF II接口传给FX3,FX3内部将数据打包成带有USB3.0协议的数据包,通过USB标准接口对外传输 。这样开发人员即不用掌握USB3.0协议的底层架构,还能使用UVC的协议将数据传输到带有USB3.0接口的主机(电脑)上 。
在FX3的内部,具有一个ARM9的核,内部集成了存储代码和数据的512KB片上SRAM,通过JTAG口烧写程序,FX3就能作为ARM使用 。常见的应用场景如下所示.
三、硬件配置 电源
FX3电源有3个部分:内核电源;数字I/O口电源;I/0模拟电源
内核电源数字I/O口电源I/0模拟电源
VBATT/VBUS :用于 USB I/O 和模拟电路的 3.2V 至 6V 电池供电 。通过 EZ-USB FX3 的内部电压调节器向 USB 收发器供电 。VBATT 将内部调节为 3.3V 。
3.2启动配置
的启动配置,主要是通过PMODE三个管脚实现的,将PMODE管脚上拉,悬空,接地就可以实现不同的启动配置 。具体方法见下表 。
时钟配置
FX3支持两种时钟配置,一种是使用无源的外部晶振,另外一种是在CLKIN专用时钟引进上连接外部的时钟 。
常见的使用方式是配置为000,使用一颗19.2MHz的晶振就可以 。

傻瓜式教程--基于FPGA的CYUSB3014双向通信

文章插图
四、接口
接口手册中描述如下:
EZ-USB FX3 具有高性能通用可编程接口 GPIF II 。此接口能实现类似于 FX2LP 的 GPIF 和从器件 FIFO 接口的功能,但更为高级 。
GPIF II 是一种可编程状态机,其所启用的灵活接口可用作工业标准或专用接口中的主控或从器件 。并行和串行接口均可通过GPIF II 实现 。
GPIF II 的特性总结如下:
使用方式如下:
上面这幅框图的意思是,GPIF II口用作32位并行数据总线,其中A[1:0]的功能是指内部在使用4个缓冲器区的哪一个 。FLAG信号是FX3内部SLAVE FIFO状态的标志信息 。其他几根信号属于控制信号 。
五、开发环境六、准备工作
缓冲区可以通过固件来配置,上图是2缓存,每个缓冲区是1kB,为了提高性能,我在固件中设置的是4缓存,每个缓冲区16KB.数据总线32位宽,时钟,实测上下行通信都能达到338MB/s 。
打开GPIF II软件
2. 点击红色圈的地方
3. 想要编辑更多的信息,点击 File->Saveas …
4. 编辑区按上图设置,右边的框图主要是设置标志信号FLAGA/FLAGB/FLAGC/FLAGD.双击右边的标志,各标志设置如下所示: