您的位置 首页 被动

使用FPGA完成外设通讯接口之:使用FPGA完成USB 2.0通讯接口

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

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所示。

同步SlaveFIFO读的规范时序如下。

·IDLE:当读事情产生时,进状况1。

·状况1:使FIFOADR[1:0]指向OUTFIFO,进状况2。

·状况2:使SLOE有用,如FIFO空,在当时状况等候,不然进状况3,

·状况3:从数据线上读数,使SLRD有用,继续一个IFCLK周期,以递加FIFO读指针,进状况4。

·状况4:如需传输更多的数,进状况2,不然进状况IDLE。

状况跳转示意图如图10.10所示。

3.异步SlaveFIFO写操作

异步SlaveFIFO写的规范衔接图如图10.11所示。

图10.10同步SlaveFIFO读状况跳转示意图 图10.11异步SlaveFIFO写的规范衔接图

异步SlaveFIFO写的规范时序如下。

·IDLE:当写事情产生时,进状况1。

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

·状况2:如FIFO满,在当时状况等候,不然进状况3。

·状况3:驱动数据到数据线上,使SLWR有用,再无效,以使FIFO写指针递加,进状况4。

·状况4:如需传输更多的数,进状况2,不然进状况IDLE。

状况跳转示意图如图10.12所示。

4.异步SlaveFIFO读操作

异步SlaveFIFO读的规范衔接如图10.13所示。

图10.12异步SlaveFIFO写状况跳转示意图图10.13异步SlaveFIFO读的规范衔接图

异步SlaveFIFO读的规范时序如下。

·IDLE:当读事情产生时,进状况1。

·状况1:使FIFOADR[1:0]指向OUTFIFO,进状况2。

·状况2:如FIFO空,在当时状况等候,不然进状况3。

·状况3:使SLOE有用,使SLRD有用,从数据线上读数,再使SLRD无效,以递加FIFO读指针,再使SLOE无效,进状况4。

·状况4:如需传输更多的数,进状况2,不然进状况IDLE。

状况跳转示意图如图10.14所示。

10.3.4FX2的固件程序设计

在FX2芯片的固件程序设计中,最要害的便是体系初始化函数TD_Init(void),下面解说这个函数的部分代码。

//时钟设置

CPUCS=0x12;//48MHzCLKOUT输出使能

IFCONFIG=0x43;//运用外部时钟,IFCLK输入不反向

SYNCDELAY;//同步推迟

EP2CFG=0xA0;//需求设定为4缓冲,每个缓冲区巨细为512字节

SYNCDELAY;

EP4CFG=0x00;

SYNCDELAY;

EP6CFG=0xE0;

SYNCDELAY;

EP8CFG=0x00;

SYNCDELAY;

FIFORESET=0x80;//激活NAK-ALL防止竞赛

SYNCDELAY;

FIFORESET=0x02;//复位FIFO2

SYNCDELAY;

FIFORESET=0x06;//复位FIFO6

SYNCDELAY;

FIFORESET=0x00;//撤销激活NAK-ALL

SYNCDELAY;

PINFLAGSAB=0xE6;//FLAGA设定为EP6PF,FLAGB设定为EP6FF

SYNCDELAY;

PINFLAGSCD=0xf8;//FLAGC设定为EP2EF,FLAGD保存

SYNCDELAY;

PORTACFG|=0x00;//SLCS有用

SYNCDELAY;

FIFOPINPOLAR=0x00;//一切信号低电平有用

SYNCDELAY;

10.3.5USB2.0接口的典型使用

因为USB2.0接口的数据传输速度快,并且运用方便,因而被广泛使用于各种便携设备中。例如,根据USB2.0接口的数据收集终端,能够将各种类型的数据收集到电脑主机中进行处理和成果显现,其典型的结构如图10.15所示。

图10.15根据USB2.0接口的数据收集终端结构框图

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/beidong/194184.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部