听力课堂在...,sloe


fpga如何实现USB2.0协议?

听力课堂在...,sloe

文章插图
利用FPGA来实现USB 2.0接口的方式一般有两种:借助外围的USB接口芯片 。FPGA不需要实现USB通信协议,开发的风险小,而且性能稳定,因此被大部分设计者所采用 。FPGA内部实现USB协议控制器,外部通过USB的PHY芯片来实现接口 。需要购买USB的IP核,门槛较高 。如果自己开发基于FPGA的USB协议栈,风险高,而且兼容性和稳定性很难保证 。
目前市场上的USB 2.0接口芯片厂家和型号比较多,其中Cypress Semiconductor公司的EZ-USB FX2(CY7C68013)是世界上第一款集成USB 2.0的微处理器,它集成了USB 2.0收发器、SIE(串行接口引擎)、增强的8051微控制器和可编程的外围接口 。FX2这种独创性结构可使数据传输率达到56MByte/s,即USB 2.0允许的最大带宽 。
在FX2中,智能SIE可以硬件处理许多USB 1.1和USB 2.0协议,从而减少了开发时间、确保了USB的兼容性 。GPIF(General Programmable Interface)和主/从端点FIFO(8位或16位数据总线)为ATA、UTOPIA、EPP、PCMCIA和DSP等提供了简单和无缝连接接口 。
CY7C68013结构图如下:FX2接口芯片的Slave FIFO传输模式当FPGA与FX2芯片相连时,只需要利用FX2作为一个USB 2.0数据通道来实现与主机的高速通信 。FPGA能够提供满足Slave FIFO要求的传输时序,可以作为Slave FIFO主控制器 。Slave FIFO传输的示意图如图所示 。
在这种方式下,FX2内嵌的8051固件的功能只是配置Slave FIFO相关的寄存器以及控制FX2何时工作在Slave FIFO模式下 。一旦8051固件将相关的寄存器配置完毕,且使自身工作在Slave FIFO模式下后,FPGA就可按照Slave FIFO的传输时序,高速与主机进行通信,而在通信过程中不需要8051固件的参与 。
在Slave FIFO方式下,FPGA与FX2的连接信号图如图所示 。下面是信号线的说明 。IFCLK:FX2输出的时钟,可作为通信的同步时钟 。FLAGA、FLAGB、FLAGC、FLAGD:FX2输出的FIFO状态信息,如满、空等 。SLCS:FIFO的片选信号,外部逻辑控制,当SLCS输出高时,不可进行数据传输 。
SLOE:FIFO输出使能,外部逻辑控制,当SLOE无效时,数据线不输出有效数据 。SLRD:FIFO读信号,外部逻辑控制,同步读时,FIFO指针在SLRD有效时的每个IFCLK的上升沿递增,异步读时,FIFO读指针在SLRD的每个有效至无效的跳变沿时递增 。SLWR:FIFO写信号,外部逻辑控制,同步写时,在SLWR有效时的每个IFCLK的上升沿时数据被写入,FIFO指针递增,异步写时,在SLWR的每个有效至无效的跳变沿时数据被写入,FIFO写指针递增 。
【听力课堂在...,sloe】PKTEND:包结束信号,外部逻辑控制,在正常情况下,外部逻辑向FX2的FIFO中写数,当写入FIFO端点的字节数等于FX2固件设定的包大小时,数据将自动被打成一包进行传输,但有时外部逻辑可能需要传输一个字节数小于FX2固件设定的包大小的包,这时,它只需在写入一定数目的字节后,声明此信号,此时FX2硬件不管外部逻辑写入了多少字节,都自动将之打成一包进行传输 。

    推荐阅读