本篇文章主要介绍使用FPGA+CYSUB3014架构实现USB3.0的功能,具体内容包括:
- CYUSB3014简单介绍
- CYUSB3014内部逻辑框图
- CYUSB3014硬件配置
- FPGA+CYUSB3014硬件设计
1.CYUSB3014芯片介绍
CYUSB3014是赛普拉斯在近几年推出的新一代USB3.0的外设控制器,可以解决USB2.0带宽限制,或者单独开发USB协议和驱动的难题。赛普拉斯将CYUSB3014简称为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位ARM926EJ-S 微处理器,具有强大的数据处理能力,并可用于构建定制应用。本产品采用了一种巧妙的架构,使从 GPIF II 到USB 接口的数据传输速度可达 320 MBps[1]。通过集成的 USB 2.0 OTG 控制器,可以实现需要双角色使用场合的应用。例如EZ-USB FX3 可以作为 MSC 和 HID 级设备的 OTG主机使用。
2. CYUSB3014内部逻辑框图
FX3内部的逻辑框图如下所示:
从逻辑框图可以看出,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使用。常见的应用场景如下所示。
3.CYUSB3014硬件配置
3.1电源
FX3电源有3个部分:内核电源;数字I/O口电源;I/0模拟电源
内核电源
VDD :逻辑内核的供电电压。额定供电电压为 1.2 V。该电域为内核逻辑电路供电。下列也必须使用同样的供电:
AVDD :用于 PLL、晶体振荡器和其他内核模拟电路的 1.2 V供电。
U3TXVDDQ/U3RXVDDQ :用于 USB 3.0 接口的 1.2 V 供电电压。
数字I/O口电源
IO_VDDQ:指用于数字 I/O 的一组独立供电。供电电压为 1.8V 至 3.3V。EZ-USB FX3 为数字I/O 提供下列六个独立供电
VIO2 - IO2 供电
VIO3 - IO3 供电
VIO4 -UART/SPI/I2S 供电
VIO5 - I2C 和 JTAG 供电(支持 1.2V 至3.3V)
CVDDQ - 时钟供电电域
I/O模拟电源
VBATT/VBUS :用于 USB I/O 和模拟电路的 3.2V 至 6V 电池供电。通过 EZ-USB FX3 的内部电压调节器向 USB 收发器供电。VBATT 将内部调节为 3.3V。
3.2启动配置
CYUSB3014的启动配置,主要是通过PMODE三个管脚实现的,将PMODE管脚上拉,悬空,接地就可以实现不同的启动配置。具体方法见下表。
3.3时钟配置
FX3支持两种时钟配置,一种是使用无源的外部晶振,另外一种是在CLKIN专用时钟引进上连接外部的时钟。
常见的使用方式是配置为000,使用一颗19.2MHz的晶振就可以。
3.4GPIFII接口
GPIFII接口手册中描述如下:
EZ-USB FX3 具有高性能通用可编程接口 GPIF II。此接口能实现类似于 FX2LP 的 GPIF 和从器件 FIFO 接口的功能,但更为高级。
GPIF II 是一种可编程状态机,其所启用的灵活接口可用作工业标准或专用接口中的主控或从器件。并行和串行接口均可通过GPIF II 实现。
GPIF II 的特性总结如下:
- 可用作主控或从器件
- 提供 256 种固件可编程状态
- 支持 8 位、16 位和 32 位并行数据总线
- 接口频率可高达 100 MHz。
- 使用 32 位数据总线时支持 14 根可配置控制引脚。所有控制引脚可作为输入/ 输出或双向引脚。
- 使用 16/8 位数据总线时支持 16 根可配置控制引脚。所有控制引脚可作为输入/ 输出或双向引脚。
使用方式如下:
上面这幅框图的意思是,GPIF II口用作32位并行数据总线,其中A[1:0]的功能是指内部在使用4个缓冲器区的哪一个。FLAG信号是FX3内部SLAVE FIFO状态的标志信息。其他几根信号属于控制信号。
4.FPGA+CYUSB3014硬件设计
4.1时钟配置
从原理图可以看出,demo板预留了两种时钟接入方式,一种是晶振,一种是外部的时钟输入接到CLKIN32管脚上。在原理图中FSLC管脚预留了上拉和下拉电阻可以比较方便的改变配置方式。
4.2电源设计
FX3的电源和FPGA的bank电源设计有些类似,管脚电平由VIO域的电源电压决定。FX3的VIO口支持1.8V和3.3V,用户可以根据使用场景进行配置。
4.3对外接口
在设计FX3的对外接口时需要注意,如果使用的是USB3.0的Type-B接口,可以将FX3的管脚直接和接口相连即可。如果使用的Type-c接口,需要在FX3和Type-c接口之间加入SWITCH芯片。
SWITCH芯片可以保证Type-c接口在正插或者反插的时候,3.0差分信号对的信号完整性。由于2.0信号的速率较低,可以不使用SWITCH芯片。
4.4启动方式
Demo板上的启动配置使用4PIN的按键就能轻易的实现多种方式的配置。如果使用的是IIC启动,需要注意VIO5电压域的电压,IIC接口的电平由VIO5电压域控制。如果使用SPI启动,需要注意SPI接口和UART接口是复用的。
4.5 GPIF II管脚
demo板上把GPIIF管脚全部使用排针引出,方便不同类型的MCU和FX3相接。连接的时候主要是把DQ脚和CTL管脚和FPGA连接就行。
文章中主要参考的资料来源于赛普拉斯官方文档和demo板原理图。
获取资料和demo板原理图方式如下:
关注公众号:大话硬件
后台回复:USB,即可免费获取完整版的PDF。