利用EZ-USBFX3从器件FIFO接口设计
介绍
塞普拉斯公司的EZ-USB FX3是下一代USB3.0外围控制器,允许开发者添加USB3.0的功能到任何系统中。该控制器可以很好的处理图像和视频设备,打印机以及扫描仪等应用。
EZ-USB FX3拥有一个被称作GPIF II的全配置,并行可编程接口,它可以连接至外围处理器、ASIC或FPGA。GPIF II是塞朴拉斯公司旗舰USB2.0产品FX2LP的加强版本。GPIF II利用同步地址数据复用接口可以轻松的连接到FPGA,图像传感器和处理器等通用设备。
GPIF II的一个普遍应用是同步从器件FIFO接口。从器件FIFO连接到EZ-USB FX3的外部设备访问FX3 FIFO的应用的接口,利用该接口实现外围设备与FX3 FIFO间的数据读写。
该应用笔记从对GPIF II的简要介绍开始,然后描述同步从器件FIFO接口的详细信息,随后举例说明。该实例展示了一个兼容同步从器件FIFO的主接口在FPGA上是如何实现的。同时提供了针对赛灵思Spartan6系列的Verilog文档。相应的同步从器件FIFO 的FX3固件工程也作为实例的一部分。利用赛灵思的SP601评估套件测试该实例已经很成熟。
图1展示了使用同步从器件FIFO接口的事例应用程序图。
图1 事例应用程序图
GPIF II
GPIF II是一个可编程状态机,它使用灵活的工业应用接口标准和专用接口。GPIF II具有主控或从机功能。
GPIF II 有以下特点: 1. 可以用作主控或从器件 2. 提供256种固件可编程状态
3. 支持8位,16位,32位并行数据总线 4. 接口频率高达100 MHz
5. 使用32为数据总线时支持14根可配置控制引脚;所有的控制引脚可作为输入、输出或双向引脚。
6. 使用16、8位数据总线时支持16根可配置控制引脚;所有的控制引脚可作为输入、输出或双向引脚。
GPIF II根据输入控制信号进行状态转换,控制输出信号是由GPIF II状态装换决定的。状态机的行为由描述符决定,描述符的设计应该满足接口规范的需要。GPIF II描述符本质上是可编程寄存器配置的集合。在EZ-USB FX3寄存器空间中有8KB的空间专门用作GPIF II波形存储器,该存储器储存描述符。
GPIF II的一个通用应用是同步从器件FIFO接口,下面的章节将给出详细描述。
同步从器件FIFO接口
该章节根据引脚映射信号,展示了同步从器件FIFO接口的内部连接图。同步从器件FIFO接口适用于外部处理器或设备需要执行从EZ-USB FX3的内部FIFO缓冲器中进行数据读写操作的应用。不能在从器件FIFO接口中完成寄存器访问。同步从器件FIFO接口是USB应用程序通常选择的接口,目的在于支持高吞吐量的设备。
图2展示了同步从器件FIFO的接口图。表1中描述了图2中展示的信号。
图2 同步从器件FIFO接口图
信号描述需要执行任何访问操作的Slave FIFO接口的片选信号Slave FIFO接口写选通信号,执行向Slave FIFO的写操作Slave FIFO接口读选通信号,执行来自Slave FIFO的读操作输出使能信号,FX3驱动Slave FIFO接口的数据总线,执行读SLOE#操作时必须被使能。FLAGA/FLAGBFX3标志输出,这些标志表明FX3 socket有效性Slave FIFO接口的两位地址总线,D[15:0]/D[31:0]:这是A[1:0]Slave FIFO的16位或32位数据总线写一个短包或零长度的包到Slave FIFOPKTEND#Slave FIFO接口时钟PCLK信号SLCS#SLWR#SLRD#表1 同步Slave FIFO接口信号
两位地址线和五位地址线的Slave FIFO的不同
两位地址线的同步Slave FIFO接口支持4个sockets访问。如果需要多于4个sockets的访问,则使用五位地址线的同步Slave FIFO接口。除了新增的地址线,该接口还有一个称作EPSWITCH#的信号。由于增加了引脚,使用更少的引脚做标志,迫使FLAG被配置成当前进程FLAG。
当使用五位地址线的同步Slave FIFO接口时,发生额外的延时: 1.每次转换的开始,从地址到FLAG有效需要两个周期延时。
2.无论何时一个socket地址发生转换,为了完成socket转换,需要多个周期的延迟。
由于需要增加延时和需要额外的接口协议,当需要超过四个GPIF II sockets时,建议使用五位地址线的同步Slave FIFO接口。关于该接口的详细信息,请参考“AN68829-Slave FIFO Interface EZ-USB FX3:5-Bit Address Mode”。
下面的部分描述两位地址线的同步Slave FIFO接口。下面章节描述Slave FIFO接口表中的映射信号引脚。 Slave FIFO接口引脚映射
表2展示了缺省的Slave FIFO接口引脚映射。当GPIF II被配置成Slave FIFO接口时,该表也展示了通用I/O引脚和其他有效的串行接口(UART/SPI/I2S)。注意,如果需要并且标志被添加或者利用GPIF II设计工具重新配置时引脚映射可能改变。标志配置部分提供了更加详细的介绍。
GPIO[19]GPIO[20]GPIO[21]GPIO[22]GPIO[24]GPIO[28]GPIO[29]GPIO[0:15]GPIO[16]GPIO[33:44]GPIO[45]GPIO[46]GPIO[47]GPIO[48]GPIO[49]GPIO[50]GPIO[51]GPIO[52]GPIO[53]GPIO[54]GPIO[55]GPIO[56]GPIO[57]SLOE#SLRD#FLAGAFLAGBPKTEND#A1A0DQ[0:15]PCLKAvailable as GPIOsGPIOGPIO/UART_RTSGPIO/UART_CTSGPIO/UART_TXGPIO/UART_RXGPIO/I2S_CLKGPIO/I2S_SDGPIO/I2S_WSGPIO/SPI_SCK/UART_RTSGPIO/SPI_SCK/UART_CTSGPIO/SPI_MISO/UART_TXGPIO/SPI_MOSI/UART_RXGPIO/I2S_MCLKSLOE#SLRD#FLAGAFLAGBPKTEND#A1A0DQ[0:15]PCLKDQ[16:27]GPIODQ28DQ29DQ30DQ31GPIO/I2S_CLKGPIO/I2S_SDGPIO/I2S_WSGPIO/SPI_SCK/UART_RTSGPIO/SPI_SCK/UART_CTSGPIO/SPI_MISO/UART_TXGPIO/SPI_MOSI/UART_RXGPIO/I2S_MCLK
表2 从器件FIFO接口引脚映射
注:EZ-USB FX3的完整引脚映射,请参考引脚图“EZ-USB FX3 SuperSpeed USB Controller。”
该部分描述了同步Slave FIFO接口的内部连接和引脚映射关系。下面的部分描述了接口访问序列和同步Slave FIFO接口的时序参数。 同步Slave FIFO访问序列和接口时序
该部分描述了同步Slave FIFO接口的访问序列和时序关系。
一个外部处理器或设备(作为主控接口功能)可能对EZ-USBFX3的内部FIFO缓存执行单周期或突发数据访问。外部主控驱动ADDR地址线上的两位地址并且读/写选通。EZ-USB FX3宣布FLAG信号来表明缓存的空/满条件.
同步Slave FIFO接口时序
图3 同步Slave FIFO读序列
同步Slave FIFO读序列描述
执行来自同步Slave FIFO接口的读序列如下: 1. FIFO地址稳定且SLCS#信号有效。
2. SLOE#有效。当SLOE#的唯一功能是驱动数据总线时,SLOE#输出使能。 3. SLRD#有效。
当SLRD#有效时,FIFO指针在PCLK的上升沿更新。该动作从新FIFO地址到数据总线开始增长数据。在tCO(PCLK的上升沿测得的)增长延时后,新的数据值出现了。N是读自FIFO的第一个数据值。为了驱动数据总线,SLOE#也必须有效。
同理,对于突发模式的读也是如此。
注:对于突发模式,在整个读期间,SLRD#和SLOE#保持有效。当SLOE#有效,数据总线被驱动。(数据来自先前编址的FIFO)。对于每个PCLK的上升沿序列,当SLRD#有效时,FIFO指针增加下一个数据值被放置到数据总线上。
标志使用:对于流控制,标志信号被外部处理器监控。标志信号是来自EZ-USB FX3的输出,对于一个专门线程或正在被寻址的当前线程,EZ-USB FX3可以被配置成空/满/局部状态。