微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 利用FPGA实现外设通信接口之:利用FPGA实现USB 2.0通信接口

利用FPGA实现外设通信接口之:利用FPGA实现USB 2.0通信接口

时间:06-05 来源:互联网 点击:

10.3利用FPGA实现USB2.0通信接口

10.3.1USB2.0接口的实现方式

利用FPGA来实现USB2.0接口的方式一般有两种,一是借助外围的USB接口芯片,二是FPGA内部实现USB协议控制器,外部通过USB的PHY芯片来实现接口。

对于第一种方式,FPGA不需要实现USB通信协议,开发的风险小,而且性能稳定,因此被大部分设计者所采用。而第二种方式需要购买USB的IP核,门槛较高。如果自己开发基于FPGA的USB协议栈,风险高,而且兼容性和稳定性很难保证。

目前市场上的USB2.0接口芯片厂家和型号比较多,其中CypressSemiconductor公司的EZ-USBFX2(CY7C68013)是世界上第一款集成USB2.0的微处理器,它集成了USB2.0收发器、SIE(串行接口引擎)、增强的8051微控制器和可编程的外围接口。

FX2这种独创性结构可使数据传输率达到56MByte/s,即USB2.0允许的最大带宽。在FX2中,智能SIE可以硬件处理许多USB1.1和USB2.0协议,从而减少了开发时间、确保了USB的兼容性。

GPIF(GeneralProgrammableInterface)和主/从端点FIFO(8位或16位数据总线)为ATA、UTOPIA、EPP、PCMCIA和DSP等提供了简单和无缝连接接口。

CY7C68013结构图如图10.4所示。FPGA与CY7C68013的电路连接关系可以参考本书2.2.11小节的内容。

图10.4CY7C68013FX2结构示意图

10.3.2FX2接口芯片的SlaveFIFO传输模式

当FPGA与FX2芯片相连时,只需要利用FX2作为一个USB2.0数据通道来实现与主机的高速通信。FPGA能够提供满足SlaveFIFO要求的传输时序,可以作为SlaveFIFO主控制器。`

SlaveFIFO传输的示意图如图10.5所示。

图10.5SlaveFIFO传输的示意图

在这种方式下,FX2内嵌的8051固件的功能只是配置SlaveFIFO相关的寄存器以及控制FX2何时工作在SlaveFIFO模式下。一旦8051固件将相关的寄存器配置完毕,且使自身工作在SlaveFIFO模式下后,FPGA就可按照SlaveFIFO的传输时序,高速与主机进行通信,而在通信过程中不需要8051固件的参与。

在SlaveFIFO方式下,FPGA与FX2的连接信号图如图10.6所示。

下面是信号线的说明。

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写指针递增。

PKTEND:包结束信号,外部逻辑控制,在正常情况下,外部逻辑向FX2的FIFO中写数,当写入FIFO端点的字节数等于FX2固件设定的包大小时,数据将自动被打成一包进行传输,但有时外部逻辑可能需要传输一个字节数小于FX2固件设定的包大小的包,这时,它只需在写入一定数目的字节后,声明此信号,此时FX2硬件不管外部逻辑写入了多少字节,都自动将之打成一包进行传输。

FD[15:0]:数据线。

FIFOADR[1:0]:选择4个FIFO端点的地址线,外部逻辑控制。

10.3.3SlaveFIFO模式的典型操作时序

1.同步SlaveFIFO写操作

同步SlaveFIFO写的标准连接图如图10.7所示。

同步SlaveFIFO写的标准时序如下。

·IDLE:当写事件发生时,进状态1。

·状态1:使FIFOADR[1:0]指向INFIFO,进状态2。

·状态2:如FIFO满,在当前状态等待,否则进状态3。

·状态3:驱动数据到数据线上,使SLWR有效,持续一个IFCLK周期,进状态4。

·状态4:如需传输更多的数,进状态2,否则进状态IDLE。

状态跳转示意图如图10.8所示。

图10.7同步SlaveFIFO写的标准连接图 图10.8同步SlaveFIFO写的标准时序

假定FX2设定包大小为512字节,当FPGA向FIFO端点中写入的数据达512字节时,FX2硬件自动将已写入的512字节打成一包准备进行传输。这个动作就和在普通传输中,FX2固件向FIFO端点中写入512字节后,把512这个数写入EPxBC中一样,只不过这个过程是由硬件自动完成的。在这里可以看出“FX2固件不参与数据传输过程”的含义了。外部逻辑只需按上面的时序图所示的时序向FIFO端点中一个一个字节(或字)地写数,写到一定数量,FX2硬件自动将数据打包传输,这一切均不需固件的参与,由此实现高速数据传输。

2.同步SlaveFIFO读操作

同步SlaveFIFO读的标准连接图如图10.9所

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top