CYUSB3014延续了CY7C68013A最吸引人的地方,那就是实现高速数据传输的Slave FIFO接口,应用这种模式,据说数据传输率可以达到320MB/s.
同USB2.0的芯片CY7C68013集成了一个通用可编程接口GPIF一样,USB3.0的芯片CYUSB3014也含有通用可编程接口GPIF,并且升级到GPIF II。通用可编程接口GPIF就是一个可编程的状态机,可以与外部的Processor, ASIC, 或者FPGA无胶粘逻辑相连,实现高速数据传输。CYUSB3014的通用可编程接口GPIF II 特点如下:
1、芯片CYUSB3014本身既可做主机,也可做从机;
2、最多提供256个可编程的状态(State);
3、支持8位、16位、32位的数据总线宽度;
4、最高工作频率可以至100MHHz;
5、最多提供16个输入输出的状态引脚,用来实现握手信号。
通用可编程接口GPIF II可以实现同步(synchronous)和异步(asynchronous)Slave FIFO接口,从编程的角度来说,是用描述符来实现的。安装完SDK后,可以打开相应的关于描述符的文件看一下,具体的目录如下:C:\Program Files\Cypress\FX3 SDK\firmware\slavefifo\slfifoasync\cyfxslfifogpifdscr.c;另一个目录是C:\Program Files\Cypress\FX3 SDK\firmware\slavefifo\slfifosync\ cyfxslfifogpifdscr.c。用记事本打开后,可以发现主要是定义了一个数组,const uint32_t CyFxSlFifoAsyncGpifConfData[][2] ={...},不像CY7C68013A是用分散的寄存器来定义的(原理上都一样,都是寄存器)。
要实现FIFO接口,硬件上要用到的引脚较多,可以自己查阅Datasheet,这里主要对异步传输,用一个引脚连接图和时序图来说明数据是怎样实现高速传输的。
下图是一个说明异步传输的引脚连接图,
从引脚连接上,可以说FX3与FX2并没有什么区别,用的还是那些引脚,名字也完全一样。外部的处理器充当主机,控制FX3进行数据传输。下图是一个异步传输的读时序,
下面对时序图进行一下分析:
1、外部主机发出片选信号,选中FX3芯片(上图中最上面的SLCS信号出高变低,低电平有效)。
2、外部主机发出FIFO ADDR选择信号,此信号与FX2中的FIFO ADDR信号相同,但概念上略有区别,以后会有说明(上图中上面的第二个信号FIFO ADDR)。
3、外部主机发出读SLRD信号,低电平有效(上图中的上面第三个信号SLRD,低电平有效)。
4、同时,外部主机发出SLOE信号,允许FX3将数据送到数据总线上;在读过程中,此信号可以一直保持为有效,低电平有效,或者些信号可以与SLRD连接在一起(上图中上面数第四个信号,低电平有效)。
5、外部主机发出SLRD信号后,FX3开始准备数据,之后将数据放在数据总线上(延迟时间为图中的tRDO)。第一个数据读取完后,FX3内部的数据指针自加1或减1,将第二个数据放在总线上(SLRD信号有效后),直到标志位FLAGA或FLAGB有效后(没有数据可读),结束此读的过程。