小梅哥
2016年12月29日星期四
芯航线AC6102开发板上,使用了一片Cypress的USB3.0全协议芯片CYUSB3014作为FPGA与PC机的高速通信桥梁。关于CYUSB3014的各项性能和参数介绍,请参考AC6102 USB3.0开发教程中相关介绍。本节主要介绍AC6102开发板上USB3.0电路的设计细节,方便大家在使用的时候快速核对理解。 以下为AC6102开发板上的USB3.0电路整体框图说明
为了充分发挥USB3.0芯片的特性,特将CYUSB3014芯片的所有数字IO与FPGA连接,包括32根数据线,13根控制线、4根I2S信号线以及UART线等。
复位CYUSB3014有一个复位输入接口,当复位输入为低电平时,芯片处于复位状态。只有当该引脚为高电平时,芯片才能正常工作,AC6102开发板在设计时,充分考虑了实际应用和系统调试时的情况,给CYUSB3014设计了两种复位方式,分别为FPGA控制复位和上电自动复位。默认使用上电自动复位方式,该方式非常适合我们调试系统原型时使用,这样不必担心因为重新下载FPGA 的sof固件而导致USB芯片复位,影响USB3.0芯片的正常运行。增加调试时候的工作量。(如果使用fpga控制复位,那么每次下载完fpga的sof后,都会对USB芯片执行一次复位操作,从而使芯片内烧写的固件丢失,那么用户只能再烧写一次u***芯片固件,从而增加了调试时候的工作量)。如下图,R64默认没有焊接,即断开了CYUSB芯片与FPGA芯片的连接,从而避免受到FPGA固件的影响,如果产品最终定型需要测试使用FPGA直接控制USB芯片复位,给R64安装100R左右的电阻即可。
时钟晶振CYUSB3014支持外部晶振提供时钟信号,支持19.2、26、38.4和52MHz的时钟频率,AC6102开发板上使用19.2MHz的晶振为CYUSB3014提供时钟源。另外,CYUSB3014内部有一个看门狗定时器,用来在需要的时候对全局系统服务,看门狗定时器使用外部32.768KHz时钟输入,所以AC6102上也设计了一个32.768KHz的晶振。当然,在大多数系统中,该部分可以不考虑。
时钟源配置 CYUSB3014芯片的时钟源是可配置的,EZ-USBFX3允许在XTALIN和XTALOUT引脚之间连接晶振,也允许在CLKIN引脚上连接外部时钟。支持的晶振频率为19.2MHz,支持的外部时钟频率为19.2、26、38.4和52MHz。EZ-USBFX3有一个片上振荡器电路,使用外部19.2MHz(±100ppm)晶振(使用晶振选项时)。FSLC[2:0]引脚必须进行适当配置,以选择晶振选项/时钟频率选项。配置选项请参见下表。
晶振 / 时钟频率选择
AC6102开发板在设计时,将FSLC配置脚使用电阻跳线的方式引出,如下图,每个FSLC引脚都有两个电阻接到VCC和GND,通过选择焊接或者留空对应电阻,能够设置CYUSB3014芯片的外部时钟源频率。AC6102上焊接的是19.2MHz的晶振,根据上表得之,FSCL三个脚都应该为0,即接地。所以连接到GND的R56、R59、R63均焊接了10K的电阻,而连接到VCC的R55、R58、R61则留空不焊接。
引导方式配置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电阻,其他电阻全部不焊接即可。
IIC存储器CYUSB3014支持从IIC存储器引导程序,AC6102开发板上,为CYUSB3014芯片提供了一颗256Kb的IIC接口的EEPROM存储器24LC256,方便用户存储CYUSB3014的固件或者
SPI FLASH 存储器CYUSB3014芯片支持从SPIFLASH存储器引导程序,AC6102开发板上,为CYUSB3014芯片提供了一颗64Mb的SPI接口的FLASH存储器M25P64,由于CYUSB3014的SPI接口和UART接口引脚是复用的,一个时刻内只能工作在一种模式,在FPGA和CYUSB3014的典型应用系统中,我们通常使用Slave Fifo模式,不需要CYUSB3014运行复杂的应用程序,但是由于Slave Fifo接口虽然适合传输大量的数据,却不适合传输控制信号,我们可以考虑使用UART在两者之间传递控制信号,因此AC6102上默认将CYUSB的SPI/UART复用引脚通过排阻跳线设置为了UART模式。如下图,RN5和RN6为两个排阻,M25P64为SPI FLASH存储器,当焊接RN6,悬空RN5时,SPI FLASH是被硬件旁路掉的,并没有连接到CYUSB3014芯片上,AC6102上默认就是此种配置方式。(针对有特殊需求的用户,如果希望使用M25P64,请将RN6断开,RN5使用33R~100R的排阻,或者联系我们以获得协助),
以上为AC6102开发板USB3.0电路的详细介绍,下表为CYUSB3014各个信号与FPGA之间的链接关系,注意,USB30_CTL0~USB30_CTL12信号在不同的配置中有不通功能,在我们提供的例程中,针对Slave Fifo模式,USB30_CTLx的实际功能也在表中列出,见 “Slave Fifo功能”一栏。
通过本节介绍,我们了解了基于FPGA和CYUSB3014组成USB3.0采集传输系统的一般电路原理,大家可以根据自己的需求,结合我们提供的原理图,设计自己的软硬件系统。如有特殊需求,可联系我们以获取帮助。